@elastic/isomer-sdk 0.0.0 → 0.2.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 (492) hide show
  1. package/LICENSE.txt +93 -0
  2. package/NOTICE.txt +1861 -0
  3. package/README.md +69 -0
  4. package/THIRD_PARTY_LICENSES.md +957 -0
  5. package/dist/author/authored_fields.d.ts +153 -0
  6. package/dist/author/authored_fields.d.ts.map +1 -0
  7. package/dist/author/authored_fields.js +227 -0
  8. package/dist/author/authored_fields.js.map +1 -0
  9. package/dist/author/authoring_input.d.ts +7 -0
  10. package/dist/author/authoring_input.d.ts.map +1 -0
  11. package/dist/author/authoring_input.js +60 -0
  12. package/dist/author/authoring_input.js.map +1 -0
  13. package/dist/author/authoring_model.d.ts +27 -0
  14. package/dist/author/authoring_model.d.ts.map +1 -0
  15. package/dist/author/authoring_model.js +98 -0
  16. package/dist/author/authoring_model.js.map +1 -0
  17. package/dist/author/declarations.d.ts +13 -0
  18. package/dist/author/declarations.d.ts.map +1 -0
  19. package/dist/author/declarations.js +277 -0
  20. package/dist/author/declarations.js.map +1 -0
  21. package/dist/author/index.d.ts +7 -0
  22. package/dist/author/index.d.ts.map +1 -0
  23. package/dist/author/index.js +12 -0
  24. package/dist/author/index.js.map +1 -0
  25. package/dist/author/jsx.d.ts +21 -0
  26. package/dist/author/jsx.d.ts.map +1 -0
  27. package/dist/author/jsx.js +20 -0
  28. package/dist/author/jsx.js.map +1 -0
  29. package/dist/author/jsx_shim.d.ts +117 -0
  30. package/dist/author/jsx_shim.d.ts.map +1 -0
  31. package/dist/author/jsx_shim.js +270 -0
  32. package/dist/author/jsx_shim.js.map +1 -0
  33. package/dist/author/prompt.d.ts +58 -0
  34. package/dist/author/prompt.d.ts.map +1 -0
  35. package/dist/author/prompt.js +148 -0
  36. package/dist/author/prompt.js.map +1 -0
  37. package/dist/author/schema_to_typescript.d.ts +37 -0
  38. package/dist/author/schema_to_typescript.d.ts.map +1 -0
  39. package/dist/author/schema_to_typescript.js +286 -0
  40. package/dist/author/schema_to_typescript.js.map +1 -0
  41. package/dist/cjs/author/authored_fields.js +233 -0
  42. package/dist/cjs/author/authored_fields.js.map +1 -0
  43. package/dist/cjs/author/authoring_input.js +64 -0
  44. package/dist/cjs/author/authoring_input.js.map +1 -0
  45. package/dist/cjs/author/authoring_model.js +104 -0
  46. package/dist/cjs/author/authoring_model.js.map +1 -0
  47. package/dist/cjs/author/declarations.js +281 -0
  48. package/dist/cjs/author/declarations.js.map +1 -0
  49. package/dist/cjs/author/index.js +25 -0
  50. package/dist/cjs/author/index.js.map +1 -0
  51. package/dist/cjs/author/jsx.js +24 -0
  52. package/dist/cjs/author/jsx.js.map +1 -0
  53. package/dist/cjs/author/jsx_shim.js +276 -0
  54. package/dist/cjs/author/jsx_shim.js.map +1 -0
  55. package/dist/cjs/author/prompt.js +153 -0
  56. package/dist/cjs/author/prompt.js.map +1 -0
  57. package/dist/cjs/author/schema_to_typescript.js +295 -0
  58. package/dist/cjs/author/schema_to_typescript.js.map +1 -0
  59. package/dist/cjs/composition/action_event.js +9 -0
  60. package/dist/cjs/composition/action_event.js.map +1 -0
  61. package/dist/cjs/composition/body_node_base.js +112 -0
  62. package/dist/cjs/composition/body_node_base.js.map +1 -0
  63. package/dist/cjs/composition/composition.js +9 -0
  64. package/dist/cjs/composition/composition.js.map +1 -0
  65. package/dist/cjs/composition/error.js +73 -0
  66. package/dist/cjs/composition/error.js.map +1 -0
  67. package/dist/cjs/composition/index.js +32 -0
  68. package/dist/cjs/composition/index.js.map +1 -0
  69. package/dist/cjs/composition/map_nodes.js +85 -0
  70. package/dist/cjs/composition/map_nodes.js.map +1 -0
  71. package/dist/cjs/composition/named_color.js +20 -0
  72. package/dist/cjs/composition/named_color.js.map +1 -0
  73. package/dist/cjs/composition/node.js +9 -0
  74. package/dist/cjs/composition/node.js.map +1 -0
  75. package/dist/cjs/composition/one_line.js +23 -0
  76. package/dist/cjs/composition/one_line.js.map +1 -0
  77. package/dist/cjs/composition/structured_value.js +21 -0
  78. package/dist/cjs/composition/structured_value.js.map +1 -0
  79. package/dist/cjs/composition/validation_error.js +40 -0
  80. package/dist/cjs/composition/validation_error.js.map +1 -0
  81. package/dist/cjs/define/frame.js +31 -0
  82. package/dist/cjs/define/frame.js.map +1 -0
  83. package/dist/cjs/define/index.js +31 -0
  84. package/dist/cjs/define/index.js.map +1 -0
  85. package/dist/cjs/define/markdown_content.js +12 -0
  86. package/dist/cjs/define/markdown_content.js.map +1 -0
  87. package/dist/cjs/define/primitive_example.js +26 -0
  88. package/dist/cjs/define/primitive_example.js.map +1 -0
  89. package/dist/cjs/define/primitive_icon.js +17 -0
  90. package/dist/cjs/define/primitive_icon.js.map +1 -0
  91. package/dist/cjs/define/primitive_module.js +118 -0
  92. package/dist/cjs/define/primitive_module.js.map +1 -0
  93. package/dist/cjs/define/slack_assets.js +9 -0
  94. package/dist/cjs/define/slack_assets.js.map +1 -0
  95. package/dist/cjs/define/slack_blocks.js +9 -0
  96. package/dist/cjs/define/slack_blocks.js.map +1 -0
  97. package/dist/cjs/define/zod_format.js +122 -0
  98. package/dist/cjs/define/zod_format.js.map +1 -0
  99. package/dist/cjs/define/zod_helpers.js +26 -0
  100. package/dist/cjs/define/zod_helpers.js.map +1 -0
  101. package/dist/cjs/entries/html.js +12 -0
  102. package/dist/cjs/entries/html.js.map +1 -0
  103. package/dist/cjs/entries/index.js +80 -0
  104. package/dist/cjs/entries/index.js.map +1 -0
  105. package/dist/cjs/entries/markdown.js +14 -0
  106. package/dist/cjs/entries/markdown.js.map +1 -0
  107. package/dist/cjs/entries/react.js +20 -0
  108. package/dist/cjs/entries/react.js.map +1 -0
  109. package/dist/cjs/entries/slack.js +25 -0
  110. package/dist/cjs/entries/slack.js.map +1 -0
  111. package/dist/cjs/entries/text.js +12 -0
  112. package/dist/cjs/entries/text.js.map +1 -0
  113. package/dist/cjs/pack/capabilities.js +40 -0
  114. package/dist/cjs/pack/capabilities.js.map +1 -0
  115. package/dist/cjs/pack/compose.js +59 -0
  116. package/dist/cjs/pack/compose.js.map +1 -0
  117. package/dist/cjs/pack/enhancements.js +65 -0
  118. package/dist/cjs/pack/enhancements.js.map +1 -0
  119. package/dist/cjs/pack/index.js +18 -0
  120. package/dist/cjs/pack/index.js.map +1 -0
  121. package/dist/cjs/pack/primitive_pack.js +97 -0
  122. package/dist/cjs/pack/primitive_pack.js.map +1 -0
  123. package/dist/cjs/package.json +3 -0
  124. package/dist/cjs/render/anchors.js +167 -0
  125. package/dist/cjs/render/anchors.js.map +1 -0
  126. package/dist/cjs/render/context_view.js +54 -0
  127. package/dist/cjs/render/context_view.js.map +1 -0
  128. package/dist/cjs/render/format_display_value.js +143 -0
  129. package/dist/cjs/render/format_display_value.js.map +1 -0
  130. package/dist/cjs/render/format_number.js +46 -0
  131. package/dist/cjs/render/format_number.js.map +1 -0
  132. package/dist/cjs/render/html/enhancements.js +30 -0
  133. package/dist/cjs/render/html/enhancements.js.map +1 -0
  134. package/dist/cjs/render/html/envelope.js +218 -0
  135. package/dist/cjs/render/html/envelope.js.map +1 -0
  136. package/dist/cjs/render/html/index.js +12 -0
  137. package/dist/cjs/render/html/index.js.map +1 -0
  138. package/dist/cjs/render/index.js +25 -0
  139. package/dist/cjs/render/index.js.map +1 -0
  140. package/dist/cjs/render/layout_check.js +133 -0
  141. package/dist/cjs/render/layout_check.js.map +1 -0
  142. package/dist/cjs/render/markdown/builder.js +195 -0
  143. package/dist/cjs/render/markdown/builder.js.map +1 -0
  144. package/dist/cjs/render/markdown/envelope.js +33 -0
  145. package/dist/cjs/render/markdown/envelope.js.map +1 -0
  146. package/dist/cjs/render/markdown/format.js +208 -0
  147. package/dist/cjs/render/markdown/format.js.map +1 -0
  148. package/dist/cjs/render/markdown/index.js +15 -0
  149. package/dist/cjs/render/markdown/index.js.map +1 -0
  150. package/dist/cjs/render/measure_dom.js +61 -0
  151. package/dist/cjs/render/measure_dom.js.map +1 -0
  152. package/dist/cjs/render/payload.js +13 -0
  153. package/dist/cjs/render/payload.js.map +1 -0
  154. package/dist/cjs/render/primitive_dispatch.js +173 -0
  155. package/dist/cjs/render/primitive_dispatch.js.map +1 -0
  156. package/dist/cjs/render/react/content.js +44 -0
  157. package/dist/cjs/render/react/content.js.map +1 -0
  158. package/dist/cjs/render/react/enhancements.js +32 -0
  159. package/dist/cjs/render/react/enhancements.js.map +1 -0
  160. package/dist/cjs/render/react/index.js +15 -0
  161. package/dist/cjs/render/react/index.js.map +1 -0
  162. package/dist/cjs/render/slack/assets.js +45 -0
  163. package/dist/cjs/render/slack/assets.js.map +1 -0
  164. package/dist/cjs/render/slack/blocks.js +80 -0
  165. package/dist/cjs/render/slack/blocks.js.map +1 -0
  166. package/dist/cjs/render/slack/envelope.js +551 -0
  167. package/dist/cjs/render/slack/envelope.js.map +1 -0
  168. package/dist/cjs/render/slack/format.js +225 -0
  169. package/dist/cjs/render/slack/format.js.map +1 -0
  170. package/dist/cjs/render/slack/index.js +30 -0
  171. package/dist/cjs/render/slack/index.js.map +1 -0
  172. package/dist/cjs/render/slack/markdown_content.js +409 -0
  173. package/dist/cjs/render/slack/markdown_content.js.map +1 -0
  174. package/dist/cjs/render/text/envelope.js +21 -0
  175. package/dist/cjs/render/text/envelope.js.map +1 -0
  176. package/dist/cjs/render/text/index.js +12 -0
  177. package/dist/cjs/render/text/index.js.map +1 -0
  178. package/dist/cjs/testing/conformance.js +312 -0
  179. package/dist/cjs/testing/conformance.js.map +1 -0
  180. package/dist/cjs/testing/icon.js +248 -0
  181. package/dist/cjs/testing/icon.js.map +1 -0
  182. package/dist/cjs/testing/index.js +18 -0
  183. package/dist/cjs/testing/index.js.map +1 -0
  184. package/dist/cjs/testing/registration.js +142 -0
  185. package/dist/cjs/testing/registration.js.map +1 -0
  186. package/dist/cjs/validate/authoring_schema.js +312 -0
  187. package/dist/cjs/validate/authoring_schema.js.map +1 -0
  188. package/dist/cjs/validate/composition_schema.js +135 -0
  189. package/dist/cjs/validate/composition_schema.js.map +1 -0
  190. package/dist/cjs/validate/index.js +53 -0
  191. package/dist/cjs/validate/index.js.map +1 -0
  192. package/dist/cjs/validate/input_budget.js +156 -0
  193. package/dist/cjs/validate/input_budget.js.map +1 -0
  194. package/dist/cjs/validate/json_schema.js +72 -0
  195. package/dist/cjs/validate/json_schema.js.map +1 -0
  196. package/dist/cjs/validate/node_issues.js +65 -0
  197. package/dist/cjs/validate/node_issues.js.map +1 -0
  198. package/dist/cjs/validate/url.js +116 -0
  199. package/dist/cjs/validate/url.js.map +1 -0
  200. package/dist/cjs/validate/validation.js +165 -0
  201. package/dist/cjs/validate/validation.js.map +1 -0
  202. package/dist/cjs/validate/value_schemas.js +53 -0
  203. package/dist/cjs/validate/value_schemas.js.map +1 -0
  204. package/dist/composition/action_event.d.ts +13 -0
  205. package/dist/composition/action_event.d.ts.map +1 -0
  206. package/dist/composition/action_event.js +8 -0
  207. package/dist/composition/action_event.js.map +1 -0
  208. package/dist/composition/body_node_base.d.ts +72 -0
  209. package/dist/composition/body_node_base.d.ts.map +1 -0
  210. package/dist/composition/body_node_base.js +104 -0
  211. package/dist/composition/body_node_base.js.map +1 -0
  212. package/dist/composition/composition.d.ts +71 -0
  213. package/dist/composition/composition.d.ts.map +1 -0
  214. package/dist/composition/composition.js +8 -0
  215. package/dist/composition/composition.js.map +1 -0
  216. package/dist/composition/error.d.ts +61 -0
  217. package/dist/composition/error.d.ts.map +1 -0
  218. package/dist/composition/error.js +69 -0
  219. package/dist/composition/error.js.map +1 -0
  220. package/dist/composition/index.d.ts +11 -0
  221. package/dist/composition/index.d.ts.map +1 -0
  222. package/dist/composition/index.js +14 -0
  223. package/dist/composition/index.js.map +1 -0
  224. package/dist/composition/map_nodes.d.ts +16 -0
  225. package/dist/composition/map_nodes.d.ts.map +1 -0
  226. package/dist/composition/map_nodes.js +81 -0
  227. package/dist/composition/map_nodes.js.map +1 -0
  228. package/dist/composition/named_color.d.ts +9 -0
  229. package/dist/composition/named_color.d.ts.map +1 -0
  230. package/dist/composition/named_color.js +17 -0
  231. package/dist/composition/named_color.js.map +1 -0
  232. package/dist/composition/node.d.ts +11 -0
  233. package/dist/composition/node.d.ts.map +1 -0
  234. package/dist/composition/node.js +8 -0
  235. package/dist/composition/node.js.map +1 -0
  236. package/dist/composition/one_line.d.ts +7 -0
  237. package/dist/composition/one_line.d.ts.map +1 -0
  238. package/dist/composition/one_line.js +17 -0
  239. package/dist/composition/one_line.js.map +1 -0
  240. package/dist/composition/structured_value.d.ts +27 -0
  241. package/dist/composition/structured_value.d.ts.map +1 -0
  242. package/dist/composition/structured_value.js +18 -0
  243. package/dist/composition/structured_value.js.map +1 -0
  244. package/dist/composition/validation_error.d.ts +33 -0
  245. package/dist/composition/validation_error.d.ts.map +1 -0
  246. package/dist/composition/validation_error.js +35 -0
  247. package/dist/composition/validation_error.js.map +1 -0
  248. package/dist/define/frame.d.ts +155 -0
  249. package/dist/define/frame.d.ts.map +1 -0
  250. package/dist/define/frame.js +27 -0
  251. package/dist/define/frame.js.map +1 -0
  252. package/dist/define/index.d.ts +10 -0
  253. package/dist/define/index.d.ts.map +1 -0
  254. package/dist/define/index.js +13 -0
  255. package/dist/define/index.js.map +1 -0
  256. package/dist/define/markdown_content.d.ts +15 -0
  257. package/dist/define/markdown_content.d.ts.map +1 -0
  258. package/dist/define/markdown_content.js +9 -0
  259. package/dist/define/markdown_content.js.map +1 -0
  260. package/dist/define/primitive_example.d.ts +30 -0
  261. package/dist/define/primitive_example.d.ts.map +1 -0
  262. package/dist/define/primitive_example.js +21 -0
  263. package/dist/define/primitive_example.js.map +1 -0
  264. package/dist/define/primitive_icon.d.ts +11 -0
  265. package/dist/define/primitive_icon.d.ts.map +1 -0
  266. package/dist/define/primitive_icon.js +14 -0
  267. package/dist/define/primitive_icon.js.map +1 -0
  268. package/dist/define/primitive_module.d.ts +435 -0
  269. package/dist/define/primitive_module.d.ts.map +1 -0
  270. package/dist/define/primitive_module.js +112 -0
  271. package/dist/define/primitive_module.js.map +1 -0
  272. package/dist/define/slack_assets.d.ts +28 -0
  273. package/dist/define/slack_assets.d.ts.map +1 -0
  274. package/dist/define/slack_assets.js +8 -0
  275. package/dist/define/slack_assets.js.map +1 -0
  276. package/dist/define/slack_blocks.d.ts +234 -0
  277. package/dist/define/slack_blocks.d.ts.map +1 -0
  278. package/dist/define/slack_blocks.js +8 -0
  279. package/dist/define/slack_blocks.js.map +1 -0
  280. package/dist/define/zod_format.d.ts +33 -0
  281. package/dist/define/zod_format.d.ts.map +1 -0
  282. package/dist/define/zod_format.js +114 -0
  283. package/dist/define/zod_format.js.map +1 -0
  284. package/dist/define/zod_helpers.d.ts +10 -0
  285. package/dist/define/zod_helpers.d.ts.map +1 -0
  286. package/dist/define/zod_helpers.js +22 -0
  287. package/dist/define/zod_helpers.js.map +1 -0
  288. package/dist/entries/html.d.ts +3 -0
  289. package/dist/entries/html.d.ts.map +1 -0
  290. package/dist/entries/html.js +8 -0
  291. package/dist/entries/html.js.map +1 -0
  292. package/dist/entries/index.d.ts +6 -0
  293. package/dist/entries/index.d.ts.map +1 -0
  294. package/dist/entries/index.js +12 -0
  295. package/dist/entries/index.js.map +1 -0
  296. package/dist/entries/markdown.d.ts +3 -0
  297. package/dist/entries/markdown.d.ts.map +1 -0
  298. package/dist/entries/markdown.js +8 -0
  299. package/dist/entries/markdown.js.map +1 -0
  300. package/dist/entries/react.d.ts +5 -0
  301. package/dist/entries/react.d.ts.map +1 -0
  302. package/dist/entries/react.js +11 -0
  303. package/dist/entries/react.js.map +1 -0
  304. package/dist/entries/slack.d.ts +2 -0
  305. package/dist/entries/slack.d.ts.map +1 -0
  306. package/dist/entries/slack.js +8 -0
  307. package/dist/entries/slack.js.map +1 -0
  308. package/dist/entries/text.d.ts +2 -0
  309. package/dist/entries/text.d.ts.map +1 -0
  310. package/dist/entries/text.js +8 -0
  311. package/dist/entries/text.js.map +1 -0
  312. package/dist/pack/capabilities.d.ts +41 -0
  313. package/dist/pack/capabilities.d.ts.map +1 -0
  314. package/dist/pack/capabilities.js +36 -0
  315. package/dist/pack/capabilities.js.map +1 -0
  316. package/dist/pack/compose.d.ts +24 -0
  317. package/dist/pack/compose.d.ts.map +1 -0
  318. package/dist/pack/compose.js +55 -0
  319. package/dist/pack/compose.js.map +1 -0
  320. package/dist/pack/enhancements.d.ts +65 -0
  321. package/dist/pack/enhancements.d.ts.map +1 -0
  322. package/dist/pack/enhancements.js +59 -0
  323. package/dist/pack/enhancements.js.map +1 -0
  324. package/dist/pack/index.d.ts +5 -0
  325. package/dist/pack/index.d.ts.map +1 -0
  326. package/dist/pack/index.js +11 -0
  327. package/dist/pack/index.js.map +1 -0
  328. package/dist/pack/primitive_pack.d.ts +164 -0
  329. package/dist/pack/primitive_pack.d.ts.map +1 -0
  330. package/dist/pack/primitive_pack.js +92 -0
  331. package/dist/pack/primitive_pack.js.map +1 -0
  332. package/dist/render/anchors.d.ts +82 -0
  333. package/dist/render/anchors.d.ts.map +1 -0
  334. package/dist/render/anchors.js +153 -0
  335. package/dist/render/anchors.js.map +1 -0
  336. package/dist/render/context_view.d.ts +10 -0
  337. package/dist/render/context_view.d.ts.map +1 -0
  338. package/dist/render/context_view.js +49 -0
  339. package/dist/render/context_view.js.map +1 -0
  340. package/dist/render/format_display_value.d.ts +20 -0
  341. package/dist/render/format_display_value.d.ts.map +1 -0
  342. package/dist/render/format_display_value.js +137 -0
  343. package/dist/render/format_display_value.js.map +1 -0
  344. package/dist/render/format_number.d.ts +9 -0
  345. package/dist/render/format_number.d.ts.map +1 -0
  346. package/dist/render/format_number.js +42 -0
  347. package/dist/render/format_number.js.map +1 -0
  348. package/dist/render/html/enhancements.d.ts +10 -0
  349. package/dist/render/html/enhancements.d.ts.map +1 -0
  350. package/dist/render/html/enhancements.js +25 -0
  351. package/dist/render/html/enhancements.js.map +1 -0
  352. package/dist/render/html/envelope.d.ts +182 -0
  353. package/dist/render/html/envelope.d.ts.map +1 -0
  354. package/dist/render/html/envelope.js +214 -0
  355. package/dist/render/html/envelope.js.map +1 -0
  356. package/dist/render/html/index.d.ts +3 -0
  357. package/dist/render/html/index.d.ts.map +1 -0
  358. package/dist/render/html/index.js +8 -0
  359. package/dist/render/html/index.js.map +1 -0
  360. package/dist/render/index.d.ts +6 -0
  361. package/dist/render/index.d.ts.map +1 -0
  362. package/dist/render/index.js +11 -0
  363. package/dist/render/index.js.map +1 -0
  364. package/dist/render/layout_check.d.ts +43 -0
  365. package/dist/render/layout_check.d.ts.map +1 -0
  366. package/dist/render/layout_check.js +129 -0
  367. package/dist/render/layout_check.js.map +1 -0
  368. package/dist/render/markdown/builder.d.ts +46 -0
  369. package/dist/render/markdown/builder.d.ts.map +1 -0
  370. package/dist/render/markdown/builder.js +190 -0
  371. package/dist/render/markdown/builder.js.map +1 -0
  372. package/dist/render/markdown/envelope.d.ts +20 -0
  373. package/dist/render/markdown/envelope.d.ts.map +1 -0
  374. package/dist/render/markdown/envelope.js +29 -0
  375. package/dist/render/markdown/envelope.js.map +1 -0
  376. package/dist/render/markdown/format.d.ts +10 -0
  377. package/dist/render/markdown/format.d.ts.map +1 -0
  378. package/dist/render/markdown/format.js +202 -0
  379. package/dist/render/markdown/format.js.map +1 -0
  380. package/dist/render/markdown/index.d.ts +3 -0
  381. package/dist/render/markdown/index.d.ts.map +1 -0
  382. package/dist/render/markdown/index.js +9 -0
  383. package/dist/render/markdown/index.js.map +1 -0
  384. package/dist/render/measure_dom.d.ts +10 -0
  385. package/dist/render/measure_dom.d.ts.map +1 -0
  386. package/dist/render/measure_dom.js +57 -0
  387. package/dist/render/measure_dom.js.map +1 -0
  388. package/dist/render/payload.d.ts +16 -0
  389. package/dist/render/payload.d.ts.map +1 -0
  390. package/dist/render/payload.js +9 -0
  391. package/dist/render/payload.js.map +1 -0
  392. package/dist/render/primitive_dispatch.d.ts +72 -0
  393. package/dist/render/primitive_dispatch.d.ts.map +1 -0
  394. package/dist/render/primitive_dispatch.js +169 -0
  395. package/dist/render/primitive_dispatch.js.map +1 -0
  396. package/dist/render/react/content.d.ts +40 -0
  397. package/dist/render/react/content.d.ts.map +1 -0
  398. package/dist/render/react/content.js +39 -0
  399. package/dist/render/react/content.js.map +1 -0
  400. package/dist/render/react/enhancements.d.ts +15 -0
  401. package/dist/render/react/enhancements.d.ts.map +1 -0
  402. package/dist/render/react/enhancements.js +28 -0
  403. package/dist/render/react/enhancements.js.map +1 -0
  404. package/dist/render/react/index.d.ts +3 -0
  405. package/dist/render/react/index.d.ts.map +1 -0
  406. package/dist/render/react/index.js +9 -0
  407. package/dist/render/react/index.js.map +1 -0
  408. package/dist/render/slack/assets.d.ts +16 -0
  409. package/dist/render/slack/assets.d.ts.map +1 -0
  410. package/dist/render/slack/assets.js +40 -0
  411. package/dist/render/slack/assets.js.map +1 -0
  412. package/dist/render/slack/blocks.d.ts +72 -0
  413. package/dist/render/slack/blocks.d.ts.map +1 -0
  414. package/dist/render/slack/blocks.js +77 -0
  415. package/dist/render/slack/blocks.js.map +1 -0
  416. package/dist/render/slack/envelope.d.ts +52 -0
  417. package/dist/render/slack/envelope.d.ts.map +1 -0
  418. package/dist/render/slack/envelope.js +547 -0
  419. package/dist/render/slack/envelope.js.map +1 -0
  420. package/dist/render/slack/format.d.ts +70 -0
  421. package/dist/render/slack/format.d.ts.map +1 -0
  422. package/dist/render/slack/format.js +209 -0
  423. package/dist/render/slack/format.js.map +1 -0
  424. package/dist/render/slack/index.d.ts +6 -0
  425. package/dist/render/slack/index.d.ts.map +1 -0
  426. package/dist/render/slack/index.js +12 -0
  427. package/dist/render/slack/index.js.map +1 -0
  428. package/dist/render/slack/markdown_content.d.ts +17 -0
  429. package/dist/render/slack/markdown_content.d.ts.map +1 -0
  430. package/dist/render/slack/markdown_content.js +404 -0
  431. package/dist/render/slack/markdown_content.js.map +1 -0
  432. package/dist/render/text/envelope.d.ts +15 -0
  433. package/dist/render/text/envelope.d.ts.map +1 -0
  434. package/dist/render/text/envelope.js +17 -0
  435. package/dist/render/text/envelope.js.map +1 -0
  436. package/dist/render/text/index.d.ts +2 -0
  437. package/dist/render/text/index.d.ts.map +1 -0
  438. package/dist/render/text/index.js +8 -0
  439. package/dist/render/text/index.js.map +1 -0
  440. package/dist/testing/conformance.d.ts +145 -0
  441. package/dist/testing/conformance.d.ts.map +1 -0
  442. package/dist/testing/conformance.js +303 -0
  443. package/dist/testing/conformance.js.map +1 -0
  444. package/dist/testing/icon.d.ts +11 -0
  445. package/dist/testing/icon.d.ts.map +1 -0
  446. package/dist/testing/icon.js +244 -0
  447. package/dist/testing/icon.js.map +1 -0
  448. package/dist/testing/index.d.ts +4 -0
  449. package/dist/testing/index.d.ts.map +1 -0
  450. package/dist/testing/index.js +10 -0
  451. package/dist/testing/index.js.map +1 -0
  452. package/dist/testing/registration.d.ts +32 -0
  453. package/dist/testing/registration.d.ts.map +1 -0
  454. package/dist/testing/registration.js +105 -0
  455. package/dist/testing/registration.js.map +1 -0
  456. package/dist/validate/authoring_schema.d.ts +33 -0
  457. package/dist/validate/authoring_schema.d.ts.map +1 -0
  458. package/dist/validate/authoring_schema.js +306 -0
  459. package/dist/validate/authoring_schema.js.map +1 -0
  460. package/dist/validate/composition_schema.d.ts +80 -0
  461. package/dist/validate/composition_schema.d.ts.map +1 -0
  462. package/dist/validate/composition_schema.js +127 -0
  463. package/dist/validate/composition_schema.js.map +1 -0
  464. package/dist/validate/index.d.ts +9 -0
  465. package/dist/validate/index.d.ts.map +1 -0
  466. package/dist/validate/index.js +15 -0
  467. package/dist/validate/index.js.map +1 -0
  468. package/dist/validate/input_budget.d.ts +35 -0
  469. package/dist/validate/input_budget.d.ts.map +1 -0
  470. package/dist/validate/input_budget.js +151 -0
  471. package/dist/validate/input_budget.js.map +1 -0
  472. package/dist/validate/json_schema.d.ts +32 -0
  473. package/dist/validate/json_schema.d.ts.map +1 -0
  474. package/dist/validate/json_schema.js +68 -0
  475. package/dist/validate/json_schema.js.map +1 -0
  476. package/dist/validate/node_issues.d.ts +12 -0
  477. package/dist/validate/node_issues.d.ts.map +1 -0
  478. package/dist/validate/node_issues.js +61 -0
  479. package/dist/validate/node_issues.js.map +1 -0
  480. package/dist/validate/url.d.ts +50 -0
  481. package/dist/validate/url.d.ts.map +1 -0
  482. package/dist/validate/url.js +107 -0
  483. package/dist/validate/url.js.map +1 -0
  484. package/dist/validate/validation.d.ts +95 -0
  485. package/dist/validate/validation.d.ts.map +1 -0
  486. package/dist/validate/validation.js +157 -0
  487. package/dist/validate/validation.js.map +1 -0
  488. package/dist/validate/value_schemas.d.ts +53 -0
  489. package/dist/validate/value_schemas.d.ts.map +1 -0
  490. package/dist/validate/value_schemas.js +50 -0
  491. package/dist/validate/value_schemas.js.map +1 -0
  492. package/package.json +119 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../src/render/slack/envelope.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport type { Composition } from '../../composition/composition';\nimport type { PrimitiveNode } from '../../define/primitive_module';\nimport type { MarkdownEnvelopeDispatcher } from '../markdown/envelope';\nimport { renderTextEnvelope } from '../text/envelope';\n\nimport {\n createSlackAssetCollector,\n type SlackAssetCollector,\n type SlackAssetRequest,\n} from './assets';\nimport {\n SLACK_LIMITS,\n type SlackActionElement,\n type SlackBlock,\n type SlackContextBlock,\n type SlackHeaderBlock,\n type SlackMrkdwnTextObject,\n type SlackOptionObject,\n type SlackRichTextBlockElement,\n type SlackRichTextInline,\n type SlackRichTextSection,\n type SlackRichTextText,\n type SlackSectionBlock,\n type SlackTableBlock,\n type SlackTableCell,\n type SlackTextObject,\n} from './blocks';\nimport {\n clampMrkdwn,\n clampSlackText,\n cutSlackValue,\n escapeMrkdwn,\n formatHeaderText,\n italic,\n} from './format';\n\n/**\n * Adds Block Kit to {@link MarkdownEnvelopeDispatcher}.\n *\n * `renderSlack` may return no blocks, in which case the node contributes\n * nothing — the envelope spreads what it is given and does not degrade. That is\n * the dispatcher's job: it renders the node's markdown instead. The markdown\n * renderer is what that fallback reads, so it stays required even for a pack\n * with full Slack coverage.\n */\nexport interface SlackEnvelopeDispatcher<\n TNode extends PrimitiveNode,\n> extends MarkdownEnvelopeDispatcher<TNode> {\n /** `collector` is absent unless the caller opted into asset collection, so a renderer must still degrade an image it cannot upload. */\n renderSlack(\n node: TNode,\n collector?: SlackAssetCollector\n ): readonly SlackBlock[];\n}\n\n/** Options for {@link renderSlackEnvelope}. */\nexport interface SlackEnvelopeOptions {\n /** Renders the composition's title and subtitle, in the blocks and the fallback `text`. Defaults to `true`. Pass `false` when the host already shows the title, or the body opens with its own. */\n heading?: boolean;\n /** Fallback `text` summary shown in notifications and previews, as `mrkdwn`; defaults to the text render, escaped. */\n text?: string;\n /** Whether to collect image upload requests alongside the blocks. */\n collectAssets?: boolean;\n /** Prefix for allocated asset refs; defaults to `asset`. Distinct prefixes keep merged inventories unique. */\n assetPrefix?: string;\n}\n\n/** What {@link renderSlackEnvelope} returns: one `chat.postMessage` payload. */\nexport interface SlackEnvelopeResult {\n /** Fallback text for the message. */\n text: string;\n /** Block Kit blocks, fitted to Slack's limits. */\n blocks: SlackBlock[];\n /** Images referenced by `blocks` that the host must upload first. */\n assets: SlackAssetRequest[];\n}\n\n/**\n * The composition as a `chat.postMessage` payload: notification `text`, blocks,\n * and the images the host must upload first.\n *\n * Degradation for a node with no `slack` renderer is the dispatcher's, which\n * has to own it to reach a child nested inside a container. The result is\n * fitted to Slack's limits — text is clamped, blocks past a count limit and\n * `rich_text` elements past a section's limit split, tables past a table limit\n * or the message's cell budget become rich text, spacers and then whole blocks\n * are dropped — so the output is always postable. `assets` stays empty\n * unless `collectAssets` is set.\n */\nexport const renderSlackEnvelope = <TNode extends PrimitiveNode>(\n composition: Composition<TNode>,\n dispatcher: SlackEnvelopeDispatcher<TNode>,\n options: SlackEnvelopeOptions = {}\n): SlackEnvelopeResult => {\n const blocks: SlackBlock[] = [];\n // The collector is opt-in: without it, charts keep their markdown/text\n // degradation and non-reachable images degrade to a link/text section, so\n // default output is safe for callers that cannot upload files.\n const collector = options.collectAssets\n ? createSlackAssetCollector(\n options.assetPrefix === undefined ? {} : { prefix: options.assetPrefix }\n )\n : undefined;\n\n const { heading = true } = options;\n if (heading && composition.title) {\n blocks.push(headerBlock(composition.title, 1));\n }\n if (heading && composition.subtitle) {\n blocks.push(contextBlock([escapeMrkdwn(composition.subtitle)]));\n }\n for (const node of composition.body) {\n blocks.push(...dispatcher.renderSlack(node, collector).flatMap(fitBlock));\n }\n\n // Split after the rhythm, so the fragments of one block read as one.\n const rhythm = applySectionRhythm(\n coalesceFieldSections(enforceTableLimits(blocks))\n ).flatMap(splitBlockCounts);\n const budgeted = enforceBlockBudget(rhythm);\n // Only ask the host to upload assets whose placeholder block survived the\n // budget; blocks elided by `enforceBlockBudget` are never posted, so\n // uploading their files would be wasted (and orphaned) work.\n const keptRefs = collectSlackFileRefs(budgeted);\n\n return {\n text: clampMrkdwn(\n options.text ??\n escapeMrkdwn(renderTextEnvelope(composition, dispatcher, { heading })),\n SLACK_LIMITS.fallbackTextChars\n ),\n blocks: budgeted,\n assets: collector\n ? collector.requests.filter((request) => keptRefs.has(request.ref))\n : [],\n };\n};\n\nconst clampText = <TText extends SlackTextObject>(\n text: TText,\n max: number\n): TText =>\n text.text.length <= max\n ? text\n : {\n ...text,\n text: (text.type === 'mrkdwn' ? clampMrkdwn : clampSlackText)(\n text.text,\n max\n ),\n };\n\nconst fitsImageUrl = ({ image_url }: { image_url?: string }): boolean =>\n image_url === undefined || image_url.length <= SLACK_LIMITS.imageUrlChars;\n\nconst clampAlt = <TImage extends { alt_text: string }>(\n image: TImage\n): TImage =>\n image.alt_text.length <= SLACK_LIMITS.imageAltTextChars\n ? image\n : {\n ...image,\n alt_text: clampSlackText(\n image.alt_text,\n SLACK_LIMITS.imageAltTextChars\n ),\n };\n\n// A cut URL would point somewhere else, so one past the limit is dropped.\nconst withoutLongUrl = <T extends { url?: string }>(element: T): T => {\n if (\n element.url === undefined ||\n element.url.length <= SLACK_LIMITS.urlChars\n ) {\n return element;\n }\n const { url: _dropped, ...rest } = element;\n return rest as T;\n};\n\nconst optionValue = (value: string): string =>\n cutSlackValue(value, SLACK_LIMITS.optionValueChars);\n\nconst clampOption = (option: SlackOptionObject): SlackOptionObject =>\n withoutLongUrl({\n ...option,\n text: clampText(option.text, SLACK_LIMITS.optionTextChars),\n value: optionValue(option.value),\n ...(option.description && {\n description: clampText(option.description, SLACK_LIMITS.optionTextChars),\n }),\n });\n\nconst clampControl = (element: SlackActionElement): SlackActionElement => {\n const actionId =\n element.action_id === undefined\n ? {}\n : {\n action_id: cutSlackValue(\n element.action_id,\n SLACK_LIMITS.actionIdChars\n ),\n };\n if (element.type === 'button') {\n return withoutLongUrl({\n ...element,\n ...actionId,\n text: clampText(element.text, SLACK_LIMITS.buttonTextChars),\n ...(element.value !== undefined && {\n value: cutSlackValue(element.value, SLACK_LIMITS.buttonValueChars),\n }),\n });\n }\n const menu = { ...element, ...actionId };\n const maxOptions =\n menu.type === 'overflow'\n ? SLACK_LIMITS.optionsPerOverflow\n : menu.type === 'radio_buttons' || menu.type === 'checkboxes'\n ? SLACK_LIMITS.optionsPerChoice\n : SLACK_LIMITS.optionsPerSelect;\n if (menu.options) {\n menu.options = menu.options.slice(0, maxOptions).map(clampOption);\n }\n if ('placeholder' in menu && menu.placeholder) {\n menu.placeholder = clampText(\n menu.placeholder,\n SLACK_LIMITS.placeholderChars\n );\n }\n if ('option_groups' in menu && menu.option_groups) {\n menu.option_groups = menu.option_groups\n .slice(0, SLACK_LIMITS.optionGroupsPerSelect)\n .map((group) => ({\n ...group,\n label: clampText(group.label, SLACK_LIMITS.optionGroupLabelChars),\n options: group.options.slice(0, maxOptions).map(clampOption),\n }));\n }\n // Slack requires an initial option to equal one it emits, so each is\n // replaced by the emitted option of the same value, or dropped.\n const emitted = new Map(\n [\n ...(menu.options ?? []),\n ...(('option_groups' in menu && menu.option_groups) || []).flatMap(\n ({ options }) => options\n ),\n ].map((option) => [option.value, option])\n );\n if ('initial_option' in menu && menu.initial_option) {\n const match = emitted.get(optionValue(menu.initial_option.value));\n if (match) {\n menu.initial_option = match;\n } else {\n delete menu.initial_option;\n }\n }\n if ('initial_options' in menu && menu.initial_options) {\n const matches = menu.initial_options.flatMap(({ value }) => {\n const match = emitted.get(optionValue(value));\n return match ? [match] : [];\n });\n if (matches.length > 0) {\n menu.initial_options = matches;\n } else {\n delete menu.initial_options;\n }\n }\n return menu;\n};\n\nconst chunks = <T>(items: readonly T[], size: number): T[][] =>\n Array.from({ length: Math.ceil(items.length / size) }, (_, index) =>\n items.slice(index * size, (index + 1) * size)\n );\n\n// Splits a block past a count limit into blocks of its type. Only the first\n// keeps a `block_id`, which Slack requires to be unique.\nconst splitBlockCounts = (block: SlackBlock): SlackBlock[] => {\n switch (block.type) {\n case 'context':\n return chunks(block.elements, SLACK_LIMITS.contextElements).map(\n (elements, index) =>\n index === 0 ? { ...block, elements } : { type: 'context', elements }\n );\n case 'actions':\n return chunks(block.elements, SLACK_LIMITS.buttonsPerActions).map(\n (elements, index) =>\n index === 0 ? { ...block, elements } : { type: 'actions', elements }\n );\n case 'section': {\n if (\n !block.fields ||\n block.fields.length <= SLACK_LIMITS.fieldsPerSection\n ) {\n return [block];\n }\n return chunks(block.fields, SLACK_LIMITS.fieldsPerSection).map(\n (fields, index) =>\n index === 0 ? { ...block, fields } : { type: 'section', fields }\n );\n }\n default:\n return [block];\n }\n};\n\n// An image whose URL Slack would reject leaves its alt text.\nconst fitImageUrls = (block: SlackBlock): SlackBlock[] => {\n switch (block.type) {\n case 'image':\n return fitsImageUrl(block)\n ? [block]\n : block.alt_text\n ? [contextBlock([escapeMrkdwn(block.alt_text)])]\n : [];\n case 'context':\n return [\n {\n ...block,\n elements: block.elements.flatMap((element) =>\n element.type !== 'image' || fitsImageUrl(element)\n ? [element]\n : element.alt_text\n ? [{ type: 'mrkdwn', text: escapeMrkdwn(element.alt_text) }]\n : []\n ),\n },\n ];\n case 'section': {\n if (block.accessory?.type !== 'image' || fitsImageUrl(block.accessory)) {\n return [block];\n }\n const { accessory, ...rest } = block;\n return accessory.alt_text\n ? [rest, contextBlock([escapeMrkdwn(accessory.alt_text)])]\n : [rest];\n }\n default:\n return [block];\n }\n};\n\nconst fitBlock = (block: SlackBlock): SlackBlock[] =>\n fitImageUrls(block).map(clampBlockText);\n\n// Pack renderers build their own blocks, and one overlong text makes Slack\n// reject the whole message.\nconst clampBlockText = (block: SlackBlock): SlackBlock => {\n switch (block.type) {\n case 'header':\n return {\n ...block,\n text: clampText(block.text, SLACK_LIMITS.headerTextChars),\n };\n case 'section':\n return {\n ...block,\n ...(block.text && {\n text: clampText(block.text, SLACK_LIMITS.sectionTextChars),\n }),\n ...(block.fields && {\n fields: block.fields.map((field) =>\n clampText(field, SLACK_LIMITS.sectionFieldChars)\n ),\n }),\n ...(block.accessory && {\n accessory:\n block.accessory.type === 'image'\n ? clampAlt(block.accessory)\n : clampControl(block.accessory),\n }),\n };\n case 'rich_text':\n return {\n ...block,\n elements: block.elements.flatMap(splitRichTextElement),\n };\n case 'context':\n return {\n ...block,\n elements: block.elements.map((element) =>\n element.type === 'image'\n ? clampAlt(element)\n : clampText(element, SLACK_LIMITS.contextElementChars)\n ),\n };\n case 'image':\n return {\n ...clampAlt(block),\n ...(block.title && {\n title: clampText(block.title, SLACK_LIMITS.imageTitleChars),\n }),\n };\n case 'video':\n return {\n ...block,\n title: clampText(block.title, SLACK_LIMITS.videoTitleChars),\n ...(block.description && {\n description: clampText(\n block.description,\n SLACK_LIMITS.videoDescriptionChars\n ),\n }),\n ...(block.author_name !== undefined && {\n author_name: clampSlackText(\n block.author_name,\n SLACK_LIMITS.videoAuthorNameChars\n ),\n }),\n };\n case 'actions':\n return { ...block, elements: block.elements.map(clampControl) };\n default:\n return block;\n }\n};\n\nconst collectSlackFileRefs = (\n blocks: readonly SlackBlock[]\n): ReadonlySet<string> => {\n const refs = new Set<string>();\n for (const block of blocks) {\n if (block.type === 'image' && block.slack_file?.ref !== undefined) {\n refs.add(block.slack_file.ref);\n }\n }\n return refs;\n};\n\nconst headerBlock = (\n title: string,\n level?: SlackHeaderBlock['level']\n): SlackHeaderBlock => ({\n type: 'header',\n text: { type: 'plain_text', text: formatHeaderText(title), emoji: true },\n ...(level !== undefined ? { level } : {}),\n});\n\nconst contextBlock = (lines: ReadonlyArray<string>): SlackContextBlock => ({\n type: 'context',\n elements: lines\n .filter((line): line is string => line !== undefined && line.length > 0)\n .map((text) => ({\n type: 'mrkdwn',\n text: clampMrkdwn(text, SLACK_LIMITS.contextElementChars),\n })),\n});\n\nconst SLACK_SPACER_TEXT = ' ';\n\nconst slackSpacerBlock = (): SlackSectionBlock => ({\n type: 'section',\n text: { type: 'mrkdwn', text: SLACK_SPACER_TEXT },\n});\n\nconst isSpacer = (block: SlackBlock): boolean =>\n block.type === 'section' &&\n block.text?.type === 'mrkdwn' &&\n block.text.text === SLACK_SPACER_TEXT &&\n block.fields === undefined &&\n block.accessory === undefined;\n\nconst isFieldsOnly = (\n block: SlackBlock\n): block is SlackSectionBlock & { fields: SlackMrkdwnTextObject[] } =>\n block.type === 'section' &&\n (block.fields?.length ?? 0) > 0 &&\n block.text === undefined &&\n block.accessory === undefined;\n\nconst isContent = (block: SlackBlock): boolean =>\n block.type !== 'header' &&\n block.type !== 'divider' &&\n block.type !== 'actions' &&\n block.type !== 'context' &&\n !isSpacer(block);\n\n// Consecutive 1-field sections pack into Slack's two-column `fields` grid.\n// A section that already has 2+ fields is a finished batch (e.g. a\n// description list) and is left alone.\nconst coalesceFieldSections = (blocks: readonly SlackBlock[]): SlackBlock[] => {\n const out: SlackBlock[] = [];\n let index = 0;\n while (index < blocks.length) {\n const block = blocks[index]!;\n if (isFieldsOnly(block) && block.fields?.length === 1) {\n const fields = [...block.fields];\n index += 1;\n while (index < blocks.length) {\n const next = blocks[index]!;\n if (\n !isFieldsOnly(next) ||\n next.fields.length !== 1 ||\n fields.length >= SLACK_LIMITS.fieldsPerSection\n ) {\n break;\n }\n fields.push(...next.fields);\n index += 1;\n }\n out.push({ type: 'section', fields });\n continue;\n }\n out.push(block);\n index += 1;\n }\n return out;\n};\n\n// Divider before every section heading (and trailing actions) after the\n// composition title; spacer after each content run except a table already\n// about to be followed by a divider. Consecutive field-only sections are\n// not spaced — they read as one grid.\nconst applySectionRhythm = (blocks: readonly SlackBlock[]): SlackBlock[] => {\n if (blocks.length === 0) {\n return [];\n }\n const out: SlackBlock[] = [];\n for (let index = 0; index < blocks.length; index += 1) {\n const block = blocks[index]!;\n const prev = out[out.length - 1];\n const needsDividerBefore =\n (block.type === 'header' && out.length > 0) || block.type === 'actions';\n if (needsDividerBefore && prev && prev.type !== 'divider') {\n if (isContent(prev) && prev.type !== 'table') {\n out.push(slackSpacerBlock());\n }\n out.push({ type: 'divider' });\n }\n out.push(block);\n if (isContent(block) && index + 1 < blocks.length) {\n const next = blocks[index + 1]!;\n if (isContent(next) && !(isFieldsOnly(block) && isFieldsOnly(next))) {\n out.push(slackSpacerBlock());\n }\n }\n }\n return out;\n};\n\nconst truncateWithNotice = (blocks: SlackBlock[]): SlackBlock[] => {\n const kept = blocks.slice(0, SLACK_LIMITS.blocksPerMessage - 1);\n const dropped = blocks.length - kept.length;\n kept.push(\n contextBlock([\n italic(`+${dropped} more blocks elided to fit Slack's limit.`),\n ])\n );\n return kept;\n};\n\nconst richTextInlineText = (inline: SlackRichTextInline): string =>\n inline.type === 'link' ? (inline.text ?? inline.url) : inline.text;\n\nconst richTextElementText = (element: SlackRichTextBlockElement): string =>\n element.type === 'rich_text_list'\n ? element.elements.map(richTextElementText).join('')\n : element.elements.map(richTextInlineText).join('');\n\nconst tableCellText = (cell: SlackTableCell): string =>\n cell.type === 'raw_text'\n ? cell.text\n : cell.elements.map(richTextElementText).join('');\n\nconst tableCharCount = (block: SlackTableBlock): number =>\n block.rows.reduce(\n (total, row) =>\n total + row.reduce((sum, cell) => sum + tableCellText(cell).length, 0),\n 0\n );\n\nconst textRun = (text: string): SlackRichTextText => ({ type: 'text', text });\n\nconst richSection = (\n elements: SlackRichTextInline[]\n): SlackRichTextSection => ({ type: 'rich_text_section', elements });\n\nconst rowBreak = (): SlackRichTextSection => richSection([textRun('\\n')]);\n\nconst cellElements = (\n cell: SlackTableCell | undefined\n): SlackRichTextBlockElement[] => {\n if (cell?.type === 'rich_text') {\n return cell.elements.filter(({ elements }) => elements.length > 0);\n }\n return cell?.text ? [richSection([textRun(cell.text)])] : [];\n};\n\nconst boldInline = (inline: SlackRichTextInline): SlackRichTextInline => ({\n ...inline,\n style: { ...inline.style, bold: true },\n});\n\nconst boldElement = (\n element: SlackRichTextBlockElement\n): SlackRichTextBlockElement =>\n element.type === 'rich_text_list'\n ? {\n ...element,\n elements: element.elements.map((item) => ({\n ...item,\n elements: item.elements.map(boldInline),\n })),\n }\n : { ...element, elements: element.elements.map(boldInline) };\n\nconst isBlank = (cell: SlackTableCell | undefined): boolean =>\n cell === undefined || tableCellText(cell).trim() === '';\n\n// A one-section heading leads its cell as `heading: `; any other heading keeps\n// its blocks, bold, above the cell. A blank heading leaves the cell alone.\nconst columnElements = (\n heading: SlackTableCell | undefined,\n cell: SlackTableCell | undefined\n): SlackRichTextBlockElement[] => {\n const body = cellElements(cell);\n if (isBlank(heading)) {\n return body;\n }\n const head = cellElements(heading);\n const [only] = head;\n if (head.length !== 1 || only?.type !== 'rich_text_section') {\n return [...head.map(boldElement), ...body];\n }\n const lead = [...only.elements.map(boldInline), textRun(': ')];\n const [first, ...rest] = body;\n return first?.type === 'rich_text_section'\n ? [richSection([...lead, ...first.elements]), ...rest]\n : [richSection(lead), ...body];\n};\n\nconst endsLine = (element: SlackRichTextBlockElement): boolean =>\n /[\\n\\r\\u2028\\u2029]$/u.test(richTextElementText(element));\n\n// Slack runs adjacent sections together, so a section followed by another ends\n// its line unless its rendered text already does.\nconst breakSections = (\n elements: readonly SlackRichTextBlockElement[]\n): SlackRichTextBlockElement[] =>\n elements.map((element, index) =>\n element.type === 'rich_text_section' &&\n elements[index + 1]?.type === 'rich_text_section' &&\n !endsLine(element)\n ? richSection([...element.elements, textRun('\\n')])\n : element\n );\n\n// Graphemes, and the code points of any grapheme past `max`.\nconst textUnits = (text: string, max: number): string[] =>\n Array.from(\n new Intl.Segmenter(undefined, { granularity: 'grapheme' }).segment(text),\n ({ segment }) => (segment.length > max ? Array.from(segment) : [segment])\n ).flat();\n\n/**\n * A section, quote, or preformatted element past `sectionTextChars` as adjacent ones of its type, with nothing added between them; a list comes back as is.\n * A link or tag no longer than that stays whole; anything longer splits at grapheme boundaries into inlines of its own type, a link's label (or URL) across links to the same URL.\n */\nconst splitRichTextElement = (\n element: SlackRichTextBlockElement\n): SlackRichTextBlockElement[] => {\n const max = SLACK_LIMITS.sectionTextChars;\n if (\n element.type === 'rich_text_list' ||\n richTextElementText(element).length <= max\n ) {\n return [element];\n }\n const chunks: SlackRichTextInline[][] = [];\n let chunk: SlackRichTextInline[] = [];\n let room: number = max;\n const flush = (): void => {\n if (chunk.length > 0) {\n chunks.push(chunk);\n }\n chunk = [];\n room = max;\n };\n for (const inline of element.elements) {\n const whole = richTextInlineText(inline);\n if (inline.type !== 'text' && whole.length <= max) {\n if (whole.length > room) {\n flush();\n }\n chunk.push(inline);\n room -= whole.length;\n continue;\n }\n let text = '';\n for (const unit of textUnits(whole, max)) {\n if (text.length + unit.length > room) {\n if (text) {\n chunk.push({ ...inline, text });\n }\n flush();\n text = '';\n }\n text += unit;\n }\n if (text) {\n chunk.push({ ...inline, text });\n room -= text.length;\n }\n }\n flush();\n return chunks.map((elements) => ({ ...element, elements }));\n};\n\n// A table Slack would reject is replaced by one `rich_text` block. Each row's\n// columns run `heading: cell` to the wider of the header and the row, and a\n// blank section parts the rows. A cell keeps its inlines, styles, and blocks; a\n// table whose rows past the header have no cells prints its headings, and one\n// with nothing to print is dropped.\nconst degradeTable = ({\n rows: [header = [], ...body],\n}: SlackTableBlock): SlackBlock[] => {\n const rows = body.filter((row) => row.length > 0);\n const pieces =\n rows.length === 0\n ? [\n header\n .filter((heading) => !isBlank(heading))\n .flatMap((heading) => cellElements(heading).map(boldElement)),\n ]\n : rows.map((row) =>\n Array.from(\n { length: Math.max(header.length, row.length) },\n (_, column) => columnElements(header[column], row[column])\n ).flat()\n );\n const elements = pieces\n .filter((piece) => piece.length > 0)\n .flatMap((piece, index) => (index > 0 ? [rowBreak(), ...piece] : piece));\n return elements.length === 0\n ? []\n : [\n {\n type: 'rich_text',\n elements: breakSections(elements).flatMap(splitRichTextElement),\n },\n ];\n};\n\nconst fitsTableShape = ({ rows }: SlackTableBlock): boolean =>\n rows.length > 0 &&\n rows.length <= SLACK_LIMITS.tableRows &&\n rows.every(\n (row) => row.length > 0 && row.length <= SLACK_LIMITS.tableColumns\n );\n\n// Slack counts table cell characters across the whole message, not per block,\n// so a composition whose tables individually fit can still be rejected. In\n// document order, a table is kept if its shape fits and its cells fit what the\n// kept ones left.\nconst enforceTableLimits = (blocks: readonly SlackBlock[]): SlackBlock[] => {\n let spent = 0;\n return blocks.flatMap((block) => {\n if (block.type !== 'table') {\n return [block];\n }\n const cost = tableCharCount(block);\n if (\n fitsTableShape(block) &&\n spent + cost <= SLACK_LIMITS.tableCellCharsPerMessage\n ) {\n spent += cost;\n return [block];\n }\n return degradeTable(block);\n });\n};\n\nconst enforceBlockBudget = (blocks: SlackBlock[]): SlackBlock[] => {\n if (blocks.length <= SLACK_LIMITS.blocksPerMessage) {\n return blocks;\n }\n const trimmed = [...blocks];\n for (\n let index = trimmed.length - 1;\n index >= 0 && trimmed.length > SLACK_LIMITS.blocksPerMessage;\n index -= 1\n ) {\n if (isSpacer(trimmed[index]!)) {\n trimmed.splice(index, 1);\n }\n }\n if (trimmed.length <= SLACK_LIMITS.blocksPerMessage) {\n return trimmed;\n }\n return truncateWithNotice(trimmed);\n};\n"]}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0; you may not use this file except in compliance with the Elastic License
6
+ * 2.0.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.formatHeaderText = exports.cutSlackValue = exports.clampMrkdwn = exports.clampSlackText = exports.link = exports.slackLinkUrl = exports.isAbsoluteHttpUrl = exports.codeBlock = exports.code = exports.strike = exports.italic = exports.bold = exports.escapeMrkdwn = void 0;
10
+ // Slack mrkdwn helpers.
11
+ //
12
+ // Slack uses a flavour of Markdown called "mrkdwn" that differs from CommonMark
13
+ // in subtle ways: links are `<url|label>`, code uses single backticks (or
14
+ // fenced ```` ``` ```` blocks), and `&`, `<`, `>` must be HTML-escaped inside
15
+ // any text element. These helpers centralize the escaping so primitive
16
+ // renderers cannot accidentally emit a literal `<https://...>` that Slack
17
+ // would parse as auto-link with no label.
18
+ //
19
+ // See https://api.slack.com/reference/surfaces/formatting
20
+ const url_1 = require("../../validate/url");
21
+ const blocks_1 = require("./blocks");
22
+ const MRKDWN_ESCAPES = {
23
+ '&': '&amp;',
24
+ '<': '&lt;',
25
+ '>': '&gt;',
26
+ };
27
+ /**
28
+ * Escapes the three characters Slack treats as HTML in `mrkdwn` text.
29
+ *
30
+ * The formatting markers (`*`, `_`, `~`, `` ` ``) are left intact so callers
31
+ * can compose markdown with them. Wrap text in {@link code} when literal
32
+ * asterisks are needed.
33
+ */
34
+ const escapeMrkdwn = (value) => value.replace(/[&<>]/g, (match) => MRKDWN_ESCAPES[match] ?? match);
35
+ exports.escapeMrkdwn = escapeMrkdwn;
36
+ /** `text` escaped and wrapped in mrkdwn bold markers. */
37
+ const bold = (text) => `*${(0, exports.escapeMrkdwn)(text)}*`;
38
+ exports.bold = bold;
39
+ /** `text` escaped and wrapped in mrkdwn italic markers. */
40
+ const italic = (text) => `_${(0, exports.escapeMrkdwn)(text)}_`;
41
+ exports.italic = italic;
42
+ /** `text` escaped and wrapped in mrkdwn strikethrough markers. */
43
+ const strike = (text) => `~${(0, exports.escapeMrkdwn)(text)}~`;
44
+ exports.strike = strike;
45
+ /**
46
+ * Inline code span. Contents are not mrkdwn-escaped, since `<` and friends are
47
+ * literal inside a code span; only embedded backticks are demoted, to a
48
+ * modifier letter that cannot close the span.
49
+ */
50
+ const code = (text) => `\`${text.replace(/`/g, '\u02CB')}\``;
51
+ exports.code = code;
52
+ /**
53
+ * Fenced code block. Slack honours the triple-backtick fence but not a language
54
+ * hint. Embedded triple-backticks are demoted with a zero-width joiner so they
55
+ * cannot terminate the block early.
56
+ */
57
+ const codeBlock = (text) => `\`\`\`\n${text.replace(/```/g, '``\u200d`')}\n\`\`\``;
58
+ exports.codeBlock = codeBlock;
59
+ const URL_PARTS_RE = /^([a-z][a-z0-9+.-]*:(?:\/\/[^/?#]*)?)(.*)$/is;
60
+ // Letter, digit, and hyphen labels, with an optional DNS root dot.
61
+ const DNS_NAME_RE = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.?$/i;
62
+ const IPV6_HOST_RE = /^\[[0-9a-f:.]+\]$/i;
63
+ const MALFORMED_ESCAPE_RE = /%(?![0-9a-f]{2})/i;
64
+ // `url` parsed, when its escapes are well formed and `URL` prints it as
65
+ // written up to the case of its scheme and authority and a `/` for an empty
66
+ // path.
67
+ const parsedAsWritten = (url) => {
68
+ if (MALFORMED_ESCAPE_RE.test(url)) {
69
+ return null;
70
+ }
71
+ let parsed;
72
+ try {
73
+ parsed = new URL(url);
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ const [, prefix, rest] = URL_PARTS_RE.exec(url) ?? [];
79
+ const [, printedPrefix, printedRest] = URL_PARTS_RE.exec(parsed.href) ?? [];
80
+ return prefix !== undefined &&
81
+ prefix.toLowerCase() === printedPrefix?.toLowerCase() &&
82
+ (printedRest === rest || printedRest === `/${rest}`)
83
+ ? parsed
84
+ : null;
85
+ };
86
+ /**
87
+ * Whether `url` is an `http:` or `https:` URL with a DNS or IPv6 host that
88
+ * `URL` prints as written, so nothing it repairs or encodes, such as a
89
+ * backslash, whitespace, or non-ASCII, passes.
90
+ */
91
+ const isAbsoluteHttpUrl = (url) => {
92
+ const parsed = parsedAsWritten(url);
93
+ return ((parsed?.protocol === 'http:' || parsed?.protocol === 'https:') &&
94
+ (DNS_NAME_RE.test(parsed.hostname) || IPV6_HOST_RE.test(parsed.hostname)));
95
+ };
96
+ exports.isAbsoluteHttpUrl = isAbsoluteHttpUrl;
97
+ // RFC 5322 dot-atom text, less `/`, `?`, `#`, and `%`.
98
+ const LOCAL_PART_RE = /^[a-z0-9!$&'*+=^_`{|}~-]+(?:\.[a-z0-9!$&'*+=^_`{|}~-]+)*$/i;
99
+ const isMailbox = (recipient) => {
100
+ const at = recipient.lastIndexOf('@');
101
+ return (at > 0 &&
102
+ LOCAL_PART_RE.test(recipient.slice(0, at)) &&
103
+ DNS_NAME_RE.test(recipient.slice(at + 1)));
104
+ };
105
+ const decoded = (value) => {
106
+ try {
107
+ return decodeURIComponent(value);
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ };
113
+ // Every comma-separated recipient before the query or fragment is a mailbox.
114
+ const isMailtoUrl = (url) => {
115
+ const [, recipients] = /^mailto:([^?#]*)/i.exec(url) ?? [];
116
+ return (recipients !== undefined &&
117
+ parsedAsWritten(url) !== null &&
118
+ recipients
119
+ .split(',')
120
+ .every((recipient) => isMailbox(decoded(recipient) ?? '')));
121
+ };
122
+ /**
123
+ * `href` when {@link sanitizeNavigationHref} passes it and it is an `http:` or
124
+ * `https:` URL with a host, or a `mailto:` of well-formed mailboxes; `null`
125
+ * otherwise. Slack has no page to resolve a relative URL against.
126
+ */
127
+ const slackLinkUrl = (href) => {
128
+ const url = (0, url_1.sanitizeNavigationHref)(href);
129
+ if (url === null) {
130
+ return null;
131
+ }
132
+ return (0, exports.isAbsoluteHttpUrl)(url) || isMailtoUrl(url) ? url : null;
133
+ };
134
+ exports.slackLinkUrl = slackLinkUrl;
135
+ /**
136
+ * Slack mrkdwn link, `<url|label>`, or a bare `<url>` when `label` is omitted.
137
+ *
138
+ * URL and label are both escaped so `&` and `>` cannot break Slack's link
139
+ * parser, and a `|` in the URL is percent-encoded so it cannot end the URL
140
+ * early. A URL {@link slackLinkUrl} rejects degrades to plain escaped text
141
+ * with no link.
142
+ */
143
+ const link = (url, label) => {
144
+ const sanitized = (0, exports.slackLinkUrl)(url);
145
+ if (!sanitized) {
146
+ return (0, exports.escapeMrkdwn)(label ?? url);
147
+ }
148
+ const safeUrl = (0, exports.escapeMrkdwn)(sanitized).replaceAll('|', '%7C');
149
+ if (!label) {
150
+ return `<${safeUrl}>`;
151
+ }
152
+ return `<${safeUrl}|${(0, exports.escapeMrkdwn)(label)}>`;
153
+ };
154
+ exports.link = link;
155
+ /**
156
+ * Truncates `value` to `max` UTF-16 code units at a grapheme boundary,
157
+ * appending an ellipsis when it had to cut. Pass a `SLACK_LIMITS` constant as
158
+ * the budget.
159
+ */
160
+ const clampSlackText = (value, max) => {
161
+ if (value.length <= max) {
162
+ return value;
163
+ }
164
+ const budget = max <= 1 ? max : max - 1;
165
+ let end = 0;
166
+ for (const { index, segment } of new Intl.Segmenter(undefined, {
167
+ granularity: 'grapheme',
168
+ }).segment(value)) {
169
+ if (index + segment.length > budget) {
170
+ break;
171
+ }
172
+ end = index + segment.length;
173
+ }
174
+ const head = value.slice(0, end);
175
+ return max <= 1 ? head : `${head.trimEnd()}…`;
176
+ };
177
+ exports.clampSlackText = clampSlackText;
178
+ // A `<…>` link or mention and an entity, each matched where it starts.
179
+ const LINK_TOKEN_RE = /<[^<>\n]*>/y;
180
+ const ENTITY_TOKEN_RE = /&(?:amp|lt|gt);/y;
181
+ // The end of the token `re` matches at `index`, or `undefined`.
182
+ const tokenEnd = (value, re, index) => {
183
+ re.lastIndex = index;
184
+ return re.test(value) ? re.lastIndex : undefined;
185
+ };
186
+ /**
187
+ * {@link clampSlackText} for `mrkdwn`: never cuts inside a `<…>` link or
188
+ * mention or an entity. Formatting marks are left as they fall; Slack prints an
189
+ * unclosed one as written.
190
+ */
191
+ const clampMrkdwn = (value, max) => {
192
+ const clamped = (0, exports.clampSlackText)(value, max);
193
+ if (clamped === value || max <= 1) {
194
+ return clamped;
195
+ }
196
+ // Entity first: a link holds no `<` of its own, so stepping back to its
197
+ // start cannot land inside an entity, while the reverse could.
198
+ let cut = clamped.length - 1;
199
+ const entity = value.lastIndexOf('&', cut - 1);
200
+ if (entity !== -1 && (tokenEnd(value, ENTITY_TOKEN_RE, entity) ?? 0) > cut) {
201
+ cut = entity;
202
+ }
203
+ const link = value.lastIndexOf('<', cut - 1);
204
+ if (link !== -1 && (tokenEnd(value, LINK_TOKEN_RE, link) ?? 0) > cut) {
205
+ cut = link;
206
+ }
207
+ return `${value.slice(0, cut).trimEnd()}…`;
208
+ };
209
+ exports.clampMrkdwn = clampMrkdwn;
210
+ /**
211
+ * `value` cut to `max` UTF-16 code units, never through a surrogate pair. For
212
+ * opaque values a host reads back, which an ellipsis would change.
213
+ */
214
+ const cutSlackValue = (value, max) => {
215
+ const cut = value.slice(0, max);
216
+ return /[\ud800-\udbff]$/.test(cut) ? cut.slice(0, -1) : cut;
217
+ };
218
+ exports.cutSlackValue = cutSlackValue;
219
+ /**
220
+ * Collapses whitespace and clamps to `SLACK_LIMITS.headerTextChars`. Header
221
+ * text is `plain_text`, so no markdown survives — do not pre-format it.
222
+ */
223
+ const formatHeaderText = (value) => (0, exports.clampSlackText)(value.replace(/\s+/g, ' ').trim(), blocks_1.SLACK_LIMITS.headerTextChars);
224
+ exports.formatHeaderText = formatHeaderText;
225
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/render/slack/format.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\n// Slack mrkdwn helpers.\n//\n// Slack uses a flavour of Markdown called \"mrkdwn\" that differs from CommonMark\n// in subtle ways: links are `<url|label>`, code uses single backticks (or\n// fenced ```` ``` ```` blocks), and `&`, `<`, `>` must be HTML-escaped inside\n// any text element. These helpers centralize the escaping so primitive\n// renderers cannot accidentally emit a literal `<https://...>` that Slack\n// would parse as auto-link with no label.\n//\n// See https://api.slack.com/reference/surfaces/formatting\n\nimport { sanitizeNavigationHref } from '../../validate/url';\n\nimport { SLACK_LIMITS } from './blocks';\n\nconst MRKDWN_ESCAPES: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n};\n\n/**\n * Escapes the three characters Slack treats as HTML in `mrkdwn` text.\n *\n * The formatting markers (`*`, `_`, `~`, `` ` ``) are left intact so callers\n * can compose markdown with them. Wrap text in {@link code} when literal\n * asterisks are needed.\n */\nexport const escapeMrkdwn = (value: string): string =>\n value.replace(/[&<>]/g, (match) => MRKDWN_ESCAPES[match] ?? match);\n\n/** `text` escaped and wrapped in mrkdwn bold markers. */\nexport const bold = (text: string): string => `*${escapeMrkdwn(text)}*`;\n/** `text` escaped and wrapped in mrkdwn italic markers. */\nexport const italic = (text: string): string => `_${escapeMrkdwn(text)}_`;\n/** `text` escaped and wrapped in mrkdwn strikethrough markers. */\nexport const strike = (text: string): string => `~${escapeMrkdwn(text)}~`;\n\n/**\n * Inline code span. Contents are not mrkdwn-escaped, since `<` and friends are\n * literal inside a code span; only embedded backticks are demoted, to a\n * modifier letter that cannot close the span.\n */\nexport const code = (text: string): string =>\n `\\`${text.replace(/`/g, '\\u02CB')}\\``;\n\n/**\n * Fenced code block. Slack honours the triple-backtick fence but not a language\n * hint. Embedded triple-backticks are demoted with a zero-width joiner so they\n * cannot terminate the block early.\n */\nexport const codeBlock = (text: string): string =>\n `\\`\\`\\`\\n${text.replace(/```/g, '``\\u200d`')}\\n\\`\\`\\``;\n\nconst URL_PARTS_RE = /^([a-z][a-z0-9+.-]*:(?:\\/\\/[^/?#]*)?)(.*)$/is;\n// Letter, digit, and hyphen labels, with an optional DNS root dot.\nconst DNS_NAME_RE =\n /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\\.?$/i;\nconst IPV6_HOST_RE = /^\\[[0-9a-f:.]+\\]$/i;\n\nconst MALFORMED_ESCAPE_RE = /%(?![0-9a-f]{2})/i;\n\n// `url` parsed, when its escapes are well formed and `URL` prints it as\n// written up to the case of its scheme and authority and a `/` for an empty\n// path.\nconst parsedAsWritten = (url: string): URL | null => {\n if (MALFORMED_ESCAPE_RE.test(url)) {\n return null;\n }\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return null;\n }\n const [, prefix, rest] = URL_PARTS_RE.exec(url) ?? [];\n const [, printedPrefix, printedRest] = URL_PARTS_RE.exec(parsed.href) ?? [];\n return prefix !== undefined &&\n prefix.toLowerCase() === printedPrefix?.toLowerCase() &&\n (printedRest === rest || printedRest === `/${rest}`)\n ? parsed\n : null;\n};\n\n/**\n * Whether `url` is an `http:` or `https:` URL with a DNS or IPv6 host that\n * `URL` prints as written, so nothing it repairs or encodes, such as a\n * backslash, whitespace, or non-ASCII, passes.\n */\nexport const isAbsoluteHttpUrl = (url: string): boolean => {\n const parsed = parsedAsWritten(url);\n return (\n (parsed?.protocol === 'http:' || parsed?.protocol === 'https:') &&\n (DNS_NAME_RE.test(parsed.hostname) || IPV6_HOST_RE.test(parsed.hostname))\n );\n};\n\n// RFC 5322 dot-atom text, less `/`, `?`, `#`, and `%`.\nconst LOCAL_PART_RE =\n /^[a-z0-9!$&'*+=^_`{|}~-]+(?:\\.[a-z0-9!$&'*+=^_`{|}~-]+)*$/i;\n\nconst isMailbox = (recipient: string): boolean => {\n const at = recipient.lastIndexOf('@');\n return (\n at > 0 &&\n LOCAL_PART_RE.test(recipient.slice(0, at)) &&\n DNS_NAME_RE.test(recipient.slice(at + 1))\n );\n};\n\nconst decoded = (value: string): string | null => {\n try {\n return decodeURIComponent(value);\n } catch {\n return null;\n }\n};\n\n// Every comma-separated recipient before the query or fragment is a mailbox.\nconst isMailtoUrl = (url: string): boolean => {\n const [, recipients] = /^mailto:([^?#]*)/i.exec(url) ?? [];\n return (\n recipients !== undefined &&\n parsedAsWritten(url) !== null &&\n recipients\n .split(',')\n .every((recipient) => isMailbox(decoded(recipient) ?? ''))\n );\n};\n\n/**\n * `href` when {@link sanitizeNavigationHref} passes it and it is an `http:` or\n * `https:` URL with a host, or a `mailto:` of well-formed mailboxes; `null`\n * otherwise. Slack has no page to resolve a relative URL against.\n */\nexport const slackLinkUrl = (href: string): string | null => {\n const url = sanitizeNavigationHref(href);\n if (url === null) {\n return null;\n }\n return isAbsoluteHttpUrl(url) || isMailtoUrl(url) ? url : null;\n};\n\n/**\n * Slack mrkdwn link, `<url|label>`, or a bare `<url>` when `label` is omitted.\n *\n * URL and label are both escaped so `&` and `>` cannot break Slack's link\n * parser, and a `|` in the URL is percent-encoded so it cannot end the URL\n * early. A URL {@link slackLinkUrl} rejects degrades to plain escaped text\n * with no link.\n */\nexport const link = (url: string, label?: string): string => {\n const sanitized = slackLinkUrl(url);\n if (!sanitized) {\n return escapeMrkdwn(label ?? url);\n }\n const safeUrl = escapeMrkdwn(sanitized).replaceAll('|', '%7C');\n if (!label) {\n return `<${safeUrl}>`;\n }\n return `<${safeUrl}|${escapeMrkdwn(label)}>`;\n};\n\n/**\n * Truncates `value` to `max` UTF-16 code units at a grapheme boundary,\n * appending an ellipsis when it had to cut. Pass a `SLACK_LIMITS` constant as\n * the budget.\n */\nexport const clampSlackText = (value: string, max: number): string => {\n if (value.length <= max) {\n return value;\n }\n const budget = max <= 1 ? max : max - 1;\n let end = 0;\n for (const { index, segment } of new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n }).segment(value)) {\n if (index + segment.length > budget) {\n break;\n }\n end = index + segment.length;\n }\n const head = value.slice(0, end);\n return max <= 1 ? head : `${head.trimEnd()}…`;\n};\n\n// A `<…>` link or mention and an entity, each matched where it starts.\nconst LINK_TOKEN_RE = /<[^<>\\n]*>/y;\nconst ENTITY_TOKEN_RE = /&(?:amp|lt|gt);/y;\n\n// The end of the token `re` matches at `index`, or `undefined`.\nconst tokenEnd = (\n value: string,\n re: RegExp,\n index: number\n): number | undefined => {\n re.lastIndex = index;\n return re.test(value) ? re.lastIndex : undefined;\n};\n\n/**\n * {@link clampSlackText} for `mrkdwn`: never cuts inside a `<…>` link or\n * mention or an entity. Formatting marks are left as they fall; Slack prints an\n * unclosed one as written.\n */\nexport const clampMrkdwn = (value: string, max: number): string => {\n const clamped = clampSlackText(value, max);\n if (clamped === value || max <= 1) {\n return clamped;\n }\n // Entity first: a link holds no `<` of its own, so stepping back to its\n // start cannot land inside an entity, while the reverse could.\n let cut = clamped.length - 1;\n const entity = value.lastIndexOf('&', cut - 1);\n if (entity !== -1 && (tokenEnd(value, ENTITY_TOKEN_RE, entity) ?? 0) > cut) {\n cut = entity;\n }\n const link = value.lastIndexOf('<', cut - 1);\n if (link !== -1 && (tokenEnd(value, LINK_TOKEN_RE, link) ?? 0) > cut) {\n cut = link;\n }\n return `${value.slice(0, cut).trimEnd()}…`;\n};\n\n/**\n * `value` cut to `max` UTF-16 code units, never through a surrogate pair. For\n * opaque values a host reads back, which an ellipsis would change.\n */\nexport const cutSlackValue = (value: string, max: number): string => {\n const cut = value.slice(0, max);\n return /[\\ud800-\\udbff]$/.test(cut) ? cut.slice(0, -1) : cut;\n};\n\n/**\n * Collapses whitespace and clamps to `SLACK_LIMITS.headerTextChars`. Header\n * text is `plain_text`, so no markdown survives — do not pre-format it.\n */\nexport const formatHeaderText = (value: string): string =>\n clampSlackText(\n value.replace(/\\s+/g, ' ').trim(),\n SLACK_LIMITS.headerTextChars\n );\n"]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0; you may not use this file except in compliance with the Elastic License
6
+ * 2.0.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.markdownContentToSlackBlocks = exports.strike = exports.slackLinkUrl = exports.link = exports.italic = exports.isAbsoluteHttpUrl = exports.escapeMrkdwn = exports.codeBlock = exports.code = exports.clampSlackText = exports.bold = exports.renderSlackEnvelope = exports.SLACK_LIMITS = exports.isSlackReachableImageUrl = exports.createSlackAssetCollector = void 0;
10
+ var assets_1 = require("./assets");
11
+ Object.defineProperty(exports, "createSlackAssetCollector", { enumerable: true, get: function () { return assets_1.createSlackAssetCollector; } });
12
+ Object.defineProperty(exports, "isSlackReachableImageUrl", { enumerable: true, get: function () { return assets_1.isSlackReachableImageUrl; } });
13
+ var blocks_1 = require("./blocks");
14
+ Object.defineProperty(exports, "SLACK_LIMITS", { enumerable: true, get: function () { return blocks_1.SLACK_LIMITS; } });
15
+ var envelope_1 = require("./envelope");
16
+ Object.defineProperty(exports, "renderSlackEnvelope", { enumerable: true, get: function () { return envelope_1.renderSlackEnvelope; } });
17
+ var format_1 = require("./format");
18
+ Object.defineProperty(exports, "bold", { enumerable: true, get: function () { return format_1.bold; } });
19
+ Object.defineProperty(exports, "clampSlackText", { enumerable: true, get: function () { return format_1.clampSlackText; } });
20
+ Object.defineProperty(exports, "code", { enumerable: true, get: function () { return format_1.code; } });
21
+ Object.defineProperty(exports, "codeBlock", { enumerable: true, get: function () { return format_1.codeBlock; } });
22
+ Object.defineProperty(exports, "escapeMrkdwn", { enumerable: true, get: function () { return format_1.escapeMrkdwn; } });
23
+ Object.defineProperty(exports, "isAbsoluteHttpUrl", { enumerable: true, get: function () { return format_1.isAbsoluteHttpUrl; } });
24
+ Object.defineProperty(exports, "italic", { enumerable: true, get: function () { return format_1.italic; } });
25
+ Object.defineProperty(exports, "link", { enumerable: true, get: function () { return format_1.link; } });
26
+ Object.defineProperty(exports, "slackLinkUrl", { enumerable: true, get: function () { return format_1.slackLinkUrl; } });
27
+ Object.defineProperty(exports, "strike", { enumerable: true, get: function () { return format_1.strike; } });
28
+ var markdown_content_1 = require("./markdown_content");
29
+ Object.defineProperty(exports, "markdownContentToSlackBlocks", { enumerable: true, get: function () { return markdown_content_1.markdownContentToSlackBlocks; } });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/render/slack/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mCAKkB;AAFhB,mHAAA,yBAAyB,OAAA;AACzB,kHAAA,wBAAwB,OAAA;AAE1B,mCA0CkB;AADhB,sGAAA,YAAY,OAAA;AAEd,uCAKoB;AADlB,+GAAA,mBAAmB,OAAA;AAGrB,mCAWkB;AAVhB,8FAAA,IAAI,OAAA;AACJ,wGAAA,cAAc,OAAA;AACd,8FAAA,IAAI,OAAA;AACJ,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AACjB,gGAAA,MAAM,OAAA;AACN,8FAAA,IAAI,OAAA;AACJ,sGAAA,YAAY,OAAA;AACZ,gGAAA,MAAM,OAAA;AAGR,uDAAkE;AAAzD,gIAAA,4BAA4B,OAAA","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nexport {\n type SlackAssetCollector,\n type SlackAssetRequest,\n createSlackAssetCollector,\n isSlackReachableImageUrl,\n} from './assets';\nexport {\n type SlackActionElement,\n type SlackActionsBlock,\n type SlackBlock,\n type SlackButtonElement,\n type SlackCheckboxesElement,\n type SlackContextBlock,\n type SlackDividerBlock,\n type SlackFileReference,\n type SlackHeaderBlock,\n type SlackHeaderLevel,\n type SlackImageBlock,\n type SlackImageElement,\n type SlackMrkdwnTextObject,\n type SlackMultiStaticSelectElement,\n type SlackOptionGroup,\n type SlackOptionObject,\n type SlackOverflowElement,\n type SlackPlainTextObject,\n type SlackRadioButtonsElement,\n type SlackRawTextElement,\n type SlackRichTextBlock,\n type SlackRichTextBlockElement,\n type SlackRichTextInline,\n type SlackRichTextLink,\n type SlackRichTextList,\n type SlackRichTextPreformatted,\n type SlackRichTextQuote,\n type SlackRichTextSection,\n type SlackRichTextStyle,\n type SlackRichTextTag,\n type SlackRichTextText,\n type SlackSectionAccessory,\n type SlackSectionBlock,\n type SlackStaticSelectElement,\n type SlackTableBlock,\n type SlackTableCell,\n type SlackTableColumnSetting,\n type SlackTagColor,\n type SlackTextObject,\n type SlackVideoBlock,\n SLACK_LIMITS,\n} from './blocks';\nexport {\n type SlackEnvelopeDispatcher,\n type SlackEnvelopeOptions,\n type SlackEnvelopeResult,\n renderSlackEnvelope,\n} from './envelope';\n\nexport {\n bold,\n clampSlackText,\n code,\n codeBlock,\n escapeMrkdwn,\n isAbsoluteHttpUrl,\n italic,\n link,\n slackLinkUrl,\n strike,\n} from './format';\n\nexport { markdownContentToSlackBlocks } from './markdown_content';\n"]}