@m0saic/templates 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 (889) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +7 -0
  3. package/dist/freeze.d.ts +406 -0
  4. package/dist/freeze.js +855 -0
  5. package/dist/gen-geometry-matrix.d.ts +1 -0
  6. package/dist/gen-geometry-matrix.js +177 -0
  7. package/dist/gen-geometry-proof.d.ts +1 -0
  8. package/dist/gen-geometry-proof.js +259 -0
  9. package/dist/gen-layout-envelope.d.ts +1 -0
  10. package/dist/gen-layout-envelope.js +120 -0
  11. package/dist/gen-precision-sweep.d.ts +1 -0
  12. package/dist/gen-precision-sweep.js +219 -0
  13. package/dist/gen-props-shape.d.ts +1 -0
  14. package/dist/gen-props-shape.js +269 -0
  15. package/dist/gen-template-audit.d.ts +1 -0
  16. package/dist/gen-template-audit.js +379 -0
  17. package/dist/gen-template-manifest.d.ts +1 -0
  18. package/dist/gen-template-manifest.js +162 -0
  19. package/dist/gen-web-template-ids.d.ts +1 -0
  20. package/dist/gen-web-template-ids.js +65 -0
  21. package/dist/geometry-audit.d.ts +149 -0
  22. package/dist/geometry-audit.js +368 -0
  23. package/dist/index.d.ts +5 -0
  24. package/dist/index.js +29 -0
  25. package/dist/m0saic/_shared/onboarding-cover.d.ts +95 -0
  26. package/dist/m0saic/_shared/onboarding-cover.js +247 -0
  27. package/dist/m0saic/_shared/raster.d.ts +28 -0
  28. package/dist/m0saic/_shared/raster.js +146 -0
  29. package/dist/m0saic/_shared/svgRaster.d.ts +40 -0
  30. package/dist/m0saic/_shared/svgRaster.js +142 -0
  31. package/dist/m0saic/agents/commit-feed/index.d.ts +1 -0
  32. package/dist/m0saic/agents/commit-feed/index.js +17 -0
  33. package/dist/m0saic/agents/commit-feed/v1/commit-feed.d.ts +68 -0
  34. package/dist/m0saic/agents/commit-feed/v1/commit-feed.js +293 -0
  35. package/dist/m0saic/agents/commit-feed/v1/index.d.ts +2 -0
  36. package/dist/m0saic/agents/commit-feed/v1/index.js +11 -0
  37. package/dist/m0saic/agents/index.d.ts +7 -0
  38. package/dist/m0saic/agents/index.js +25 -0
  39. package/dist/m0saic/agents/trace-timeline/index.d.ts +1 -0
  40. package/dist/m0saic/agents/trace-timeline/index.js +17 -0
  41. package/dist/m0saic/agents/trace-timeline/v1/index.d.ts +2 -0
  42. package/dist/m0saic/agents/trace-timeline/v1/index.js +15 -0
  43. package/dist/m0saic/agents/trace-timeline/v1/trace-timeline.d.ts +73 -0
  44. package/dist/m0saic/agents/trace-timeline/v1/trace-timeline.js +356 -0
  45. package/dist/m0saic/alpine/_shared/alpine-anim.d.ts +65 -0
  46. package/dist/m0saic/alpine/_shared/alpine-anim.js +142 -0
  47. package/dist/m0saic/alpine/_shared/alpine-card.d.ts +114 -0
  48. package/dist/m0saic/alpine/_shared/alpine-card.js +193 -0
  49. package/dist/m0saic/alpine/_shared/alpine-glyphs.d.ts +23 -0
  50. package/dist/m0saic/alpine/_shared/alpine-glyphs.js +46 -0
  51. package/dist/m0saic/alpine/_shared/alpine-theme.d.ts +84 -0
  52. package/dist/m0saic/alpine/_shared/alpine-theme.js +155 -0
  53. package/dist/m0saic/alpine/bar-graph/v1/bar-graph.d.ts +85 -0
  54. package/dist/m0saic/alpine/bar-graph/v1/bar-graph.js +558 -0
  55. package/dist/m0saic/alpine/bar-graph/v1/index.d.ts +5 -0
  56. package/dist/m0saic/alpine/bar-graph/v1/index.js +9 -0
  57. package/dist/m0saic/alpine/commit-feed/v1/commit-feed.d.ts +64 -0
  58. package/dist/m0saic/alpine/commit-feed/v1/commit-feed.js +261 -0
  59. package/dist/m0saic/alpine/commit-feed/v1/index.d.ts +1 -0
  60. package/dist/m0saic/alpine/commit-feed/v1/index.js +5 -0
  61. package/dist/m0saic/alpine/commit-feed/v2/commit-feed.d.ts +78 -0
  62. package/dist/m0saic/alpine/commit-feed/v2/commit-feed.js +509 -0
  63. package/dist/m0saic/alpine/commit-feed/v2/index.d.ts +1 -0
  64. package/dist/m0saic/alpine/commit-feed/v2/index.js +5 -0
  65. package/dist/m0saic/alpine/contributor-table/v1/assets/README.md +13 -0
  66. package/dist/m0saic/alpine/contributor-table/v1/assets/layout-lite.m0 +9 -0
  67. package/dist/m0saic/alpine/contributor-table/v1/assets/layout-standard.m0 +9 -0
  68. package/dist/m0saic/alpine/contributor-table/v1/contributor-table.d.ts +76 -0
  69. package/dist/m0saic/alpine/contributor-table/v1/contributor-table.js +651 -0
  70. package/dist/m0saic/alpine/contributor-table/v1/index.d.ts +1 -0
  71. package/dist/m0saic/alpine/contributor-table/v1/index.js +5 -0
  72. package/dist/m0saic/alpine/donut/v1/donut.d.ts +55 -0
  73. package/dist/m0saic/alpine/donut/v1/donut.js +322 -0
  74. package/dist/m0saic/alpine/donut/v1/index.d.ts +5 -0
  75. package/dist/m0saic/alpine/donut/v1/index.js +9 -0
  76. package/dist/m0saic/alpine/donut/v2/donut.d.ts +58 -0
  77. package/dist/m0saic/alpine/donut/v2/donut.js +268 -0
  78. package/dist/m0saic/alpine/donut/v2/index.d.ts +1 -0
  79. package/dist/m0saic/alpine/donut/v2/index.js +5 -0
  80. package/dist/m0saic/alpine/donut/v3/donut.d.ts +65 -0
  81. package/dist/m0saic/alpine/donut/v3/donut.js +428 -0
  82. package/dist/m0saic/alpine/donut/v3/index.d.ts +1 -0
  83. package/dist/m0saic/alpine/donut/v3/index.js +5 -0
  84. package/dist/m0saic/alpine/heatmap/v1/heatmap.d.ts +68 -0
  85. package/dist/m0saic/alpine/heatmap/v1/heatmap.js +370 -0
  86. package/dist/m0saic/alpine/heatmap/v1/index.d.ts +1 -0
  87. package/dist/m0saic/alpine/heatmap/v1/index.js +5 -0
  88. package/dist/m0saic/alpine/heatmap/v2/heatmap.d.ts +73 -0
  89. package/dist/m0saic/alpine/heatmap/v2/heatmap.js +582 -0
  90. package/dist/m0saic/alpine/heatmap/v2/index.d.ts +1 -0
  91. package/dist/m0saic/alpine/heatmap/v2/index.js +5 -0
  92. package/dist/m0saic/alpine/index.d.ts +20 -0
  93. package/dist/m0saic/alpine/index.js +37 -0
  94. package/dist/m0saic/alpine/kpi-card/v1/index.d.ts +1 -0
  95. package/dist/m0saic/alpine/kpi-card/v1/index.js +5 -0
  96. package/dist/m0saic/alpine/kpi-card/v1/kpi-card.d.ts +54 -0
  97. package/dist/m0saic/alpine/kpi-card/v1/kpi-card.js +311 -0
  98. package/dist/m0saic/alpine/kpi-card/v2/index.d.ts +1 -0
  99. package/dist/m0saic/alpine/kpi-card/v2/index.js +5 -0
  100. package/dist/m0saic/alpine/kpi-card/v2/kpi-card.d.ts +60 -0
  101. package/dist/m0saic/alpine/kpi-card/v2/kpi-card.js +362 -0
  102. package/dist/m0saic/alpine/leaderboard/v1/index.d.ts +1 -0
  103. package/dist/m0saic/alpine/leaderboard/v1/index.js +5 -0
  104. package/dist/m0saic/alpine/leaderboard/v1/leaderboard.d.ts +58 -0
  105. package/dist/m0saic/alpine/leaderboard/v1/leaderboard.js +313 -0
  106. package/dist/m0saic/alpine/line-chart/v1/index.d.ts +1 -0
  107. package/dist/m0saic/alpine/line-chart/v1/index.js +5 -0
  108. package/dist/m0saic/alpine/line-chart/v1/line-chart.d.ts +70 -0
  109. package/dist/m0saic/alpine/line-chart/v1/line-chart.js +408 -0
  110. package/dist/m0saic/alpine/line-chart/v2/index.d.ts +1 -0
  111. package/dist/m0saic/alpine/line-chart/v2/index.js +5 -0
  112. package/dist/m0saic/alpine/line-chart/v2/line-chart.d.ts +72 -0
  113. package/dist/m0saic/alpine/line-chart/v2/line-chart.js +434 -0
  114. package/dist/m0saic/alpine/progress-card/v1/index.d.ts +1 -0
  115. package/dist/m0saic/alpine/progress-card/v1/index.js +5 -0
  116. package/dist/m0saic/alpine/progress-card/v1/progress-card.d.ts +53 -0
  117. package/dist/m0saic/alpine/progress-card/v1/progress-card.js +333 -0
  118. package/dist/m0saic/alpine/stat-card/v1/index.d.ts +1 -0
  119. package/dist/m0saic/alpine/stat-card/v1/index.js +5 -0
  120. package/dist/m0saic/alpine/stat-card/v1/stat-card.d.ts +76 -0
  121. package/dist/m0saic/alpine/stat-card/v1/stat-card.js +295 -0
  122. package/dist/m0saic/alpine/timeline/v1/index.d.ts +1 -0
  123. package/dist/m0saic/alpine/timeline/v1/index.js +5 -0
  124. package/dist/m0saic/alpine/timeline/v1/timeline.d.ts +55 -0
  125. package/dist/m0saic/alpine/timeline/v1/timeline.js +266 -0
  126. package/dist/m0saic/alpine/timeline/v2/index.d.ts +1 -0
  127. package/dist/m0saic/alpine/timeline/v2/index.js +5 -0
  128. package/dist/m0saic/alpine/timeline/v2/timeline.d.ts +61 -0
  129. package/dist/m0saic/alpine/timeline/v2/timeline.js +371 -0
  130. package/dist/m0saic/alpine/treemap/v1/index.d.ts +1 -0
  131. package/dist/m0saic/alpine/treemap/v1/index.js +5 -0
  132. package/dist/m0saic/alpine/treemap/v1/treemap.d.ts +56 -0
  133. package/dist/m0saic/alpine/treemap/v1/treemap.js +326 -0
  134. package/dist/m0saic/alpine/treemap/v2/index.d.ts +1 -0
  135. package/dist/m0saic/alpine/treemap/v2/index.js +5 -0
  136. package/dist/m0saic/alpine/treemap/v2/treemap.d.ts +59 -0
  137. package/dist/m0saic/alpine/treemap/v2/treemap.js +323 -0
  138. package/dist/m0saic/benchmark/battery/assets/media/README.md +16 -0
  139. package/dist/m0saic/benchmark/battery/assets/media/bbb-av.mp4 +0 -0
  140. package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-01.mp4 +0 -0
  141. package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-02.mp4 +0 -0
  142. package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-03.mp4 +0 -0
  143. package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-04.mp4 +0 -0
  144. package/dist/m0saic/benchmark/battery/assets/scenarios/duration-long.mosaic +80 -0
  145. package/dist/m0saic/benchmark/battery/assets/scenarios/encoders-base.mosaic +32 -0
  146. package/dist/m0saic/benchmark/battery/assets/scenarios/geometry-grid.mosaic +592 -0
  147. package/dist/m0saic/benchmark/battery/assets/scenarios/lifetime-window-fade.mosaic +28 -0
  148. package/dist/m0saic/benchmark/battery/assets/scenarios/real-bar-graph.mosaic +1980 -0
  149. package/dist/m0saic/benchmark/battery/assets/scenarios/real-donut.mosaic +797 -0
  150. package/dist/m0saic/benchmark/battery/assets/scenarios/real-screencap-grid.mosaic +4591 -0
  151. package/dist/m0saic/benchmark/battery/assets/scenarios/real-stat-card.mosaic +187 -0
  152. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-audio.mosaic +31 -0
  153. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-lavfi.mosaic +32 -0
  154. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-media.mosaic +73 -0
  155. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-nested.mosaic +48 -0
  156. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-ref.mosaic +24 -0
  157. package/dist/m0saic/benchmark/battery/assets/scenarios/sources-text.mosaic +120 -0
  158. package/dist/m0saic/benchmark/battery/manifest.d.ts +65 -0
  159. package/dist/m0saic/benchmark/battery/manifest.js +97 -0
  160. package/dist/m0saic/benchmark/index.d.ts +2 -0
  161. package/dist/m0saic/benchmark/index.js +22 -0
  162. package/dist/m0saic/benchmark/report/v1/assets/m-logo.png +0 -0
  163. package/dist/m0saic/benchmark/report/v1/assets/sample-session/benchmark.json +41 -0
  164. package/dist/m0saic/benchmark/report/v1/index.d.ts +1 -0
  165. package/dist/m0saic/benchmark/report/v1/index.js +17 -0
  166. package/dist/m0saic/benchmark/report/v1/report.d.ts +23 -0
  167. package/dist/m0saic/benchmark/report/v1/report.js +242 -0
  168. package/dist/m0saic/benchmark/run/v1/benchmarkRun.d.ts +57 -0
  169. package/dist/m0saic/benchmark/run/v1/benchmarkRun.js +151 -0
  170. package/dist/m0saic/benchmark/run/v1/confirmation.d.ts +11 -0
  171. package/dist/m0saic/benchmark/run/v1/confirmation.js +48 -0
  172. package/dist/m0saic/benchmark/run/v1/index.d.ts +1 -0
  173. package/dist/m0saic/benchmark/run/v1/index.js +17 -0
  174. package/dist/m0saic/benchmark/run/v1/renderScenario.d.ts +12 -0
  175. package/dist/m0saic/benchmark/run/v1/renderScenario.js +122 -0
  176. package/dist/m0saic/benchmark/run/v1/runner.d.ts +10 -0
  177. package/dist/m0saic/benchmark/run/v1/runner.js +208 -0
  178. package/dist/m0saic/brand/business-card/v1/back-catalog.d.ts +68 -0
  179. package/dist/m0saic/brand/business-card/v1/back-catalog.js +121 -0
  180. package/dist/m0saic/brand/business-card/v1/business-card.d.ts +82 -0
  181. package/dist/m0saic/brand/business-card/v1/business-card.js +517 -0
  182. package/dist/m0saic/brand/business-card/v1/index.d.ts +4 -0
  183. package/dist/m0saic/brand/business-card/v1/index.js +16 -0
  184. package/dist/m0saic/brand/business-card/v1/layout.d.ts +163 -0
  185. package/dist/m0saic/brand/business-card/v1/layout.js +369 -0
  186. package/dist/m0saic/brand/community-m/v1/camera.d.ts +45 -0
  187. package/dist/m0saic/brand/community-m/v1/camera.js +44 -0
  188. package/dist/m0saic/brand/community-m/v1/caption.d.ts +5 -0
  189. package/dist/m0saic/brand/community-m/v1/caption.js +18 -0
  190. package/dist/m0saic/brand/community-m/v1/community-m.d.ts +25 -0
  191. package/dist/m0saic/brand/community-m/v1/community-m.js +117 -0
  192. package/dist/m0saic/brand/community-m/v1/community-m.web.d.ts +3 -0
  193. package/dist/m0saic/brand/community-m/v1/community-m.web.js +172 -0
  194. package/dist/m0saic/brand/community-m/v1/gen-seed-piece.d.ts +1 -0
  195. package/dist/m0saic/brand/community-m/v1/gen-seed-piece.js +59 -0
  196. package/dist/m0saic/brand/community-m/v1/geometry.d.ts +44 -0
  197. package/dist/m0saic/brand/community-m/v1/geometry.js +68 -0
  198. package/dist/m0saic/brand/community-m/v1/imageSize.node.d.ts +3 -0
  199. package/dist/m0saic/brand/community-m/v1/imageSize.node.js +60 -0
  200. package/dist/m0saic/brand/community-m/v1/index.d.ts +1 -0
  201. package/dist/m0saic/brand/community-m/v1/index.js +5 -0
  202. package/dist/m0saic/brand/community-m/v1/loadPiece.node.d.ts +14 -0
  203. package/dist/m0saic/brand/community-m/v1/loadPiece.node.js +69 -0
  204. package/dist/m0saic/brand/community-m/v1/manifest.d.ts +22 -0
  205. package/dist/m0saic/brand/community-m/v1/manifest.js +81 -0
  206. package/dist/m0saic/brand/community-m/v1/mark.d.ts +76 -0
  207. package/dist/m0saic/brand/community-m/v1/mark.js +136 -0
  208. package/dist/m0saic/brand/community-m/v1/paths.d.ts +14 -0
  209. package/dist/m0saic/brand/community-m/v1/paths.js +61 -0
  210. package/dist/m0saic/brand/community-m/v1/piece.d.ts +28 -0
  211. package/dist/m0saic/brand/community-m/v1/piece.js +35 -0
  212. package/dist/m0saic/brand/community-m/v1/pipeline.d.ts +122 -0
  213. package/dist/m0saic/brand/community-m/v1/pipeline.js +461 -0
  214. package/dist/m0saic/brand/community-m/v1/preview.d.ts +75 -0
  215. package/dist/m0saic/brand/community-m/v1/preview.js +214 -0
  216. package/dist/m0saic/brand/community-m/v1/props.d.ts +101 -0
  217. package/dist/m0saic/brand/community-m/v1/props.js +178 -0
  218. package/dist/m0saic/brand/community-m/v1/reveal.d.ts +129 -0
  219. package/dist/m0saic/brand/community-m/v1/reveal.js +155 -0
  220. package/dist/m0saic/brand/community-m/v1/seedPiece.d.ts +57 -0
  221. package/dist/m0saic/brand/community-m/v1/seedPiece.js +153 -0
  222. package/dist/m0saic/brand/community-m/v1/target.d.ts +88 -0
  223. package/dist/m0saic/brand/community-m/v1/target.js +132 -0
  224. package/dist/m0saic/brand/community-m/v1/timing.d.ts +32 -0
  225. package/dist/m0saic/brand/community-m/v1/timing.js +57 -0
  226. package/dist/m0saic/brand/community-m/v1/webPiece.d.ts +23 -0
  227. package/dist/m0saic/brand/community-m/v1/webPiece.js +42 -0
  228. package/dist/m0saic/brand/community-m/v1/wordmark.d.ts +34 -0
  229. package/dist/m0saic/brand/community-m/v1/wordmark.js +62 -0
  230. package/dist/m0saic/brand/index.d.ts +7 -0
  231. package/dist/m0saic/brand/index.js +17 -0
  232. package/dist/m0saic/brand/logo/v1/index.d.ts +1 -0
  233. package/dist/m0saic/brand/logo/v1/index.js +5 -0
  234. package/dist/m0saic/brand/logo/v1/logo.d.ts +30 -0
  235. package/dist/m0saic/brand/logo/v1/logo.js +471 -0
  236. package/dist/m0saic/brand/logo/v2/index.d.ts +1 -0
  237. package/dist/m0saic/brand/logo/v2/index.js +5 -0
  238. package/dist/m0saic/brand/logo/v2/logo.d.ts +30 -0
  239. package/dist/m0saic/brand/logo/v2/logo.js +615 -0
  240. package/dist/m0saic/brand/logo/v3/index.d.ts +1 -0
  241. package/dist/m0saic/brand/logo/v3/index.js +5 -0
  242. package/dist/m0saic/brand/logo/v3/logo.d.ts +36 -0
  243. package/dist/m0saic/brand/logo/v3/logo.js +666 -0
  244. package/dist/m0saic/brand/logo/v3/logo_runner.d.ts +36 -0
  245. package/dist/m0saic/brand/logo/v3/logo_runner.js +216 -0
  246. package/dist/m0saic/brand/qr-stamp/assets/brand-qr-with-logo.svg +8 -0
  247. package/dist/m0saic/brand/qr-stamp/assets/qr-animate.dark.mp4 +0 -0
  248. package/dist/m0saic/brand/qr-stamp/assets/qr-animate.dark.static.png +0 -0
  249. package/dist/m0saic/brand/qr-stamp/assets/qr-animate.light.mp4 +0 -0
  250. package/dist/m0saic/brand/qr-stamp/assets/qr-animate.light.static.png +0 -0
  251. package/dist/m0saic/brand/qr-stamp/still/v1/index.d.ts +2 -0
  252. package/dist/m0saic/brand/qr-stamp/still/v1/index.js +10 -0
  253. package/dist/m0saic/brand/qr-stamp/still/v1/qr-stamp-still.d.ts +45 -0
  254. package/dist/m0saic/brand/qr-stamp/still/v1/qr-stamp-still.js +347 -0
  255. package/dist/m0saic/brand/qr-stamp/video/v2/index.d.ts +2 -0
  256. package/dist/m0saic/brand/qr-stamp/video/v2/index.js +9 -0
  257. package/dist/m0saic/brand/qr-stamp/video/v2/qr-stamp.d.ts +43 -0
  258. package/dist/m0saic/brand/qr-stamp/video/v2/qr-stamp.js +447 -0
  259. package/dist/m0saic/brand/qr-stamp/video/v2/windows.d.ts +19 -0
  260. package/dist/m0saic/brand/qr-stamp/video/v2/windows.js +24 -0
  261. package/dist/m0saic/charts/_shared/index.d.ts +8 -0
  262. package/dist/m0saic/charts/_shared/index.js +24 -0
  263. package/dist/m0saic/charts/_shared/line.d.ts +100 -0
  264. package/dist/m0saic/charts/_shared/line.js +134 -0
  265. package/dist/m0saic/charts/_shared/scale.d.ts +9 -0
  266. package/dist/m0saic/charts/_shared/scale.js +17 -0
  267. package/dist/m0saic/charts/bar-graph/v1/anim.d.ts +83 -0
  268. package/dist/m0saic/charts/bar-graph/v1/anim.js +104 -0
  269. package/dist/m0saic/charts/bar-graph/v1/axis.d.ts +51 -0
  270. package/dist/m0saic/charts/bar-graph/v1/axis.js +73 -0
  271. package/dist/m0saic/charts/bar-graph/v1/bar-graph.d.ts +44 -0
  272. package/dist/m0saic/charts/bar-graph/v1/bar-graph.js +316 -0
  273. package/dist/m0saic/charts/bar-graph/v1/defaults.d.ts +88 -0
  274. package/dist/m0saic/charts/bar-graph/v1/defaults.js +157 -0
  275. package/dist/m0saic/charts/bar-graph/v1/format.d.ts +46 -0
  276. package/dist/m0saic/charts/bar-graph/v1/format.js +95 -0
  277. package/dist/m0saic/charts/bar-graph/v1/index.d.ts +31 -0
  278. package/dist/m0saic/charts/bar-graph/v1/index.js +36 -0
  279. package/dist/m0saic/charts/bar-graph/v1/internal/bar-cell.d.ts +53 -0
  280. package/dist/m0saic/charts/bar-graph/v1/internal/bar-cell.js +198 -0
  281. package/dist/m0saic/charts/bar-graph/v1/internal/bar-fill.d.ts +4 -0
  282. package/dist/m0saic/charts/bar-graph/v1/internal/bar-fill.js +154 -0
  283. package/dist/m0saic/charts/bar-graph/v1/internal/bars-stack.d.ts +41 -0
  284. package/dist/m0saic/charts/bar-graph/v1/internal/bars-stack.js +208 -0
  285. package/dist/m0saic/charts/bar-graph/v1/internal/chart-frame.d.ts +32 -0
  286. package/dist/m0saic/charts/bar-graph/v1/internal/chart-frame.js +124 -0
  287. package/dist/m0saic/charts/bar-graph/v1/internal/labels.d.ts +52 -0
  288. package/dist/m0saic/charts/bar-graph/v1/internal/labels.js +504 -0
  289. package/dist/m0saic/charts/bar-graph/v1/internal/plot-area.d.ts +24 -0
  290. package/dist/m0saic/charts/bar-graph/v1/internal/plot-area.js +180 -0
  291. package/dist/m0saic/charts/bar-graph/v1/types.d.ts +326 -0
  292. package/dist/m0saic/charts/bar-graph/v1/types.js +36 -0
  293. package/dist/m0saic/charts/bar-graph/v2/bar-graph.d.ts +131 -0
  294. package/dist/m0saic/charts/bar-graph/v2/bar-graph.js +768 -0
  295. package/dist/m0saic/charts/bar-graph/v2/index.d.ts +10 -0
  296. package/dist/m0saic/charts/bar-graph/v2/index.js +14 -0
  297. package/dist/m0saic/charts/donut/v1/anim.d.ts +54 -0
  298. package/dist/m0saic/charts/donut/v1/anim.js +84 -0
  299. package/dist/m0saic/charts/donut/v1/donut.d.ts +87 -0
  300. package/dist/m0saic/charts/donut/v1/donut.js +400 -0
  301. package/dist/m0saic/charts/donut/v1/geometry.d.ts +55 -0
  302. package/dist/m0saic/charts/donut/v1/geometry.js +115 -0
  303. package/dist/m0saic/charts/donut/v1/index.d.ts +11 -0
  304. package/dist/m0saic/charts/donut/v1/index.js +17 -0
  305. package/dist/m0saic/charts/donut/v2/donut.d.ts +67 -0
  306. package/dist/m0saic/charts/donut/v2/donut.js +307 -0
  307. package/dist/m0saic/charts/donut/v2/index.d.ts +10 -0
  308. package/dist/m0saic/charts/donut/v2/index.js +14 -0
  309. package/dist/m0saic/charts/donut/v3/anim.d.ts +47 -0
  310. package/dist/m0saic/charts/donut/v3/anim.js +77 -0
  311. package/dist/m0saic/charts/donut/v3/donut.d.ts +54 -0
  312. package/dist/m0saic/charts/donut/v3/donut.js +531 -0
  313. package/dist/m0saic/charts/donut/v3/geometry.d.ts +74 -0
  314. package/dist/m0saic/charts/donut/v3/geometry.js +152 -0
  315. package/dist/m0saic/charts/donut/v3/index.d.ts +10 -0
  316. package/dist/m0saic/charts/donut/v3/index.js +14 -0
  317. package/dist/m0saic/charts/donut/v4/donut.d.ts +63 -0
  318. package/dist/m0saic/charts/donut/v4/donut.js +546 -0
  319. package/dist/m0saic/charts/donut/v4/index.d.ts +10 -0
  320. package/dist/m0saic/charts/donut/v4/index.js +14 -0
  321. package/dist/m0saic/charts/index.d.ts +8 -0
  322. package/dist/m0saic/charts/index.js +25 -0
  323. package/dist/m0saic/charts/line-chart/v1/anim.d.ts +78 -0
  324. package/dist/m0saic/charts/line-chart/v1/anim.js +119 -0
  325. package/dist/m0saic/charts/line-chart/v1/axis.d.ts +48 -0
  326. package/dist/m0saic/charts/line-chart/v1/axis.js +55 -0
  327. package/dist/m0saic/charts/line-chart/v1/card.d.ts +27 -0
  328. package/dist/m0saic/charts/line-chart/v1/card.js +44 -0
  329. package/dist/m0saic/charts/line-chart/v1/chrome-spec.d.ts +110 -0
  330. package/dist/m0saic/charts/line-chart/v1/chrome-spec.js +208 -0
  331. package/dist/m0saic/charts/line-chart/v1/chrome.d.ts +30 -0
  332. package/dist/m0saic/charts/line-chart/v1/chrome.js +335 -0
  333. package/dist/m0saic/charts/line-chart/v1/defaults.d.ts +65 -0
  334. package/dist/m0saic/charts/line-chart/v1/defaults.js +151 -0
  335. package/dist/m0saic/charts/line-chart/v1/format.d.ts +26 -0
  336. package/dist/m0saic/charts/line-chart/v1/format.js +76 -0
  337. package/dist/m0saic/charts/line-chart/v1/frame.d.ts +50 -0
  338. package/dist/m0saic/charts/line-chart/v1/frame.js +62 -0
  339. package/dist/m0saic/charts/line-chart/v1/geometry.d.ts +15 -0
  340. package/dist/m0saic/charts/line-chart/v1/geometry.js +34 -0
  341. package/dist/m0saic/charts/line-chart/v1/index.d.ts +16 -0
  342. package/dist/m0saic/charts/line-chart/v1/index.js +21 -0
  343. package/dist/m0saic/charts/line-chart/v1/line-chart.d.ts +26 -0
  344. package/dist/m0saic/charts/line-chart/v1/line-chart.js +634 -0
  345. package/dist/m0saic/charts/line-chart/v1/line-series.d.ts +69 -0
  346. package/dist/m0saic/charts/line-chart/v1/line-series.js +259 -0
  347. package/dist/m0saic/charts/line-chart/v1/types.d.ts +328 -0
  348. package/dist/m0saic/charts/line-chart/v1/types.js +24 -0
  349. package/dist/m0saic/charts/stat-card/v1/index.d.ts +10 -0
  350. package/dist/m0saic/charts/stat-card/v1/index.js +15 -0
  351. package/dist/m0saic/charts/stat-card/v1/stat-card.d.ts +78 -0
  352. package/dist/m0saic/charts/stat-card/v1/stat-card.js +475 -0
  353. package/dist/m0saic/code/_shared/code-diff.d.ts +73 -0
  354. package/dist/m0saic/code/_shared/code-diff.js +220 -0
  355. package/dist/m0saic/code/_shared/code-lexer.d.ts +28 -0
  356. package/dist/m0saic/code/_shared/code-lexer.js +226 -0
  357. package/dist/m0saic/code/_shared/code-metrics.d.ts +58 -0
  358. package/dist/m0saic/code/_shared/code-metrics.js +140 -0
  359. package/dist/m0saic/code/_shared/code-theme.d.ts +30 -0
  360. package/dist/m0saic/code/_shared/code-theme.js +141 -0
  361. package/dist/m0saic/code/index.d.ts +1 -0
  362. package/dist/m0saic/code/index.js +17 -0
  363. package/dist/m0saic/code/snippet-morph/v1/internal/chrome.d.ts +60 -0
  364. package/dist/m0saic/code/snippet-morph/v1/internal/chrome.js +252 -0
  365. package/dist/m0saic/code/snippet-morph/v1/internal/plan.d.ts +90 -0
  366. package/dist/m0saic/code/snippet-morph/v1/internal/plan.js +226 -0
  367. package/dist/m0saic/code/snippet-morph/v1/internal/steps.d.ts +103 -0
  368. package/dist/m0saic/code/snippet-morph/v1/internal/steps.js +313 -0
  369. package/dist/m0saic/code/snippet-morph/v1/snippet-morph.d.ts +61 -0
  370. package/dist/m0saic/code/snippet-morph/v1/snippet-morph.js +462 -0
  371. package/dist/m0saic/collage/image-collage/v1/demo-fixture.d.ts +18 -0
  372. package/dist/m0saic/collage/image-collage/v1/demo-fixture.js +30 -0
  373. package/dist/m0saic/collage/image-collage/v1/emit.d.ts +81 -0
  374. package/dist/m0saic/collage/image-collage/v1/emit.js +163 -0
  375. package/dist/m0saic/collage/image-collage/v1/image-collage.d.ts +63 -0
  376. package/dist/m0saic/collage/image-collage/v1/image-collage.js +386 -0
  377. package/dist/m0saic/collage/image-collage/v1/index.d.ts +2 -0
  378. package/dist/m0saic/collage/image-collage/v1/index.js +5 -0
  379. package/dist/m0saic/collage/image-collage/v1/packer/candidates.d.ts +71 -0
  380. package/dist/m0saic/collage/image-collage/v1/packer/candidates.js +211 -0
  381. package/dist/m0saic/collage/image-collage/v1/packer/classify.d.ts +26 -0
  382. package/dist/m0saic/collage/image-collage/v1/packer/classify.js +70 -0
  383. package/dist/m0saic/collage/image-collage/v1/packer/index.d.ts +7 -0
  384. package/dist/m0saic/collage/image-collage/v1/packer/index.js +23 -0
  385. package/dist/m0saic/collage/image-collage/v1/packer/paging.d.ts +39 -0
  386. package/dist/m0saic/collage/image-collage/v1/packer/paging.js +139 -0
  387. package/dist/m0saic/collage/image-collage/v1/packer/score.d.ts +25 -0
  388. package/dist/m0saic/collage/image-collage/v1/packer/score.js +69 -0
  389. package/dist/m0saic/collage/image-collage/v1/packer/solve.d.ts +27 -0
  390. package/dist/m0saic/collage/image-collage/v1/packer/solve.js +84 -0
  391. package/dist/m0saic/collage/image-collage/v1/packer/tiler.d.ts +65 -0
  392. package/dist/m0saic/collage/image-collage/v1/packer/tiler.js +607 -0
  393. package/dist/m0saic/collage/image-collage/v1/packer/types.d.ts +99 -0
  394. package/dist/m0saic/collage/image-collage/v1/packer/types.js +10 -0
  395. package/dist/m0saic/collage/image-collage/v1/tutorial.d.ts +17 -0
  396. package/dist/m0saic/collage/image-collage/v1/tutorial.js +269 -0
  397. package/dist/m0saic/collage/index.d.ts +2 -0
  398. package/dist/m0saic/collage/index.js +18 -0
  399. package/dist/m0saic/collage/spread-grid-mock/v1/grid-fixture.d.ts +7 -0
  400. package/dist/m0saic/collage/spread-grid-mock/v1/grid-fixture.js +11 -0
  401. package/dist/m0saic/collage/spread-grid-mock/v1/index.d.ts +1 -0
  402. package/dist/m0saic/collage/spread-grid-mock/v1/index.js +5 -0
  403. package/dist/m0saic/collage/spread-grid-mock/v1/spread-grid-mock.d.ts +29 -0
  404. package/dist/m0saic/collage/spread-grid-mock/v1/spread-grid-mock.js +78 -0
  405. package/dist/m0saic/dsl-tutorial/index.d.ts +1 -0
  406. package/dist/m0saic/dsl-tutorial/index.js +18 -0
  407. package/dist/m0saic/dsl-tutorial/v1/_shared/brand-glyphs.d.ts +24 -0
  408. package/dist/m0saic/dsl-tutorial/v1/_shared/brand-glyphs.js +17 -0
  409. package/dist/m0saic/dsl-tutorial/v1/_shared/m0saic-logo.d.ts +6 -0
  410. package/dist/m0saic/dsl-tutorial/v1/_shared/m0saic-logo.js +9 -0
  411. package/dist/m0saic/dsl-tutorial/v1/_shared/node-kit.d.ts +57 -0
  412. package/dist/m0saic/dsl-tutorial/v1/_shared/node-kit.js +156 -0
  413. package/dist/m0saic/dsl-tutorial/v1/_shared/text-fit.d.ts +76 -0
  414. package/dist/m0saic/dsl-tutorial/v1/_shared/text-fit.js +127 -0
  415. package/dist/m0saic/dsl-tutorial/v1/dsl-tutorial.d.ts +124 -0
  416. package/dist/m0saic/dsl-tutorial/v1/dsl-tutorial.js +675 -0
  417. package/dist/m0saic/dsl-tutorial/v1/index.d.ts +24 -0
  418. package/dist/m0saic/dsl-tutorial/v1/index.js +35 -0
  419. package/dist/m0saic/dsl-tutorial/v1/panels/canvas/v1/dsl-canvas.d.ts +113 -0
  420. package/dist/m0saic/dsl-tutorial/v1/panels/canvas/v1/dsl-canvas.js +573 -0
  421. package/dist/m0saic/dsl-tutorial/v1/panels/chrome/v1/dsl-chrome.d.ts +83 -0
  422. package/dist/m0saic/dsl-tutorial/v1/panels/chrome/v1/dsl-chrome.js +373 -0
  423. package/dist/m0saic/dsl-tutorial/v1/panels/dsl-string/v1/dsl-string.d.ts +48 -0
  424. package/dist/m0saic/dsl-tutorial/v1/panels/dsl-string/v1/dsl-string.js +366 -0
  425. package/dist/m0saic/dsl-tutorial/v1/panels/inspector/v1/dsl-inspector.d.ts +54 -0
  426. package/dist/m0saic/dsl-tutorial/v1/panels/inspector/v1/dsl-inspector.js +304 -0
  427. package/dist/m0saic/dsl-tutorial/v1/pipeline/buildSteps.d.ts +110 -0
  428. package/dist/m0saic/dsl-tutorial/v1/pipeline/buildSteps.js +443 -0
  429. package/dist/m0saic/dsl-tutorial/v1/pipeline/camera.d.ts +64 -0
  430. package/dist/m0saic/dsl-tutorial/v1/pipeline/camera.js +177 -0
  431. package/dist/m0saic/dsl-tutorial/v1/pipeline/cursor.d.ts +47 -0
  432. package/dist/m0saic/dsl-tutorial/v1/pipeline/cursor.js +64 -0
  433. package/dist/m0saic/dsl-tutorial/v1/pipeline/dslString.d.ts +61 -0
  434. package/dist/m0saic/dsl-tutorial/v1/pipeline/dslString.js +135 -0
  435. package/dist/m0saic/dsl-tutorial/v1/pipeline/inspector.d.ts +62 -0
  436. package/dist/m0saic/dsl-tutorial/v1/pipeline/inspector.js +197 -0
  437. package/dist/m0saic/dsl-tutorial/v1/pipeline/timing.d.ts +117 -0
  438. package/dist/m0saic/dsl-tutorial/v1/pipeline/timing.js +180 -0
  439. package/dist/m0saic/dsl-tutorial/v1/theme/tokens.d.ts +87 -0
  440. package/dist/m0saic/dsl-tutorial/v1/theme/tokens.js +96 -0
  441. package/dist/m0saic/forensic/index.d.ts +1 -0
  442. package/dist/m0saic/forensic/index.js +17 -0
  443. package/dist/m0saic/forensic/watermark/_shared/cellLuminance.d.ts +37 -0
  444. package/dist/m0saic/forensic/watermark/_shared/cellLuminance.js +62 -0
  445. package/dist/m0saic/forensic/watermark/index.d.ts +2 -0
  446. package/dist/m0saic/forensic/watermark/index.js +18 -0
  447. package/dist/m0saic/forensic/watermark/verify/index.d.ts +1 -0
  448. package/dist/m0saic/forensic/watermark/verify/index.js +17 -0
  449. package/dist/m0saic/forensic/watermark/verify/v1/decode.d.ts +83 -0
  450. package/dist/m0saic/forensic/watermark/verify/v1/decode.js +270 -0
  451. package/dist/m0saic/forensic/watermark/verify/v1/index.d.ts +2 -0
  452. package/dist/m0saic/forensic/watermark/verify/v1/index.js +23 -0
  453. package/dist/m0saic/forensic/watermark/verify/v1/report.d.ts +71 -0
  454. package/dist/m0saic/forensic/watermark/verify/v1/report.js +428 -0
  455. package/dist/m0saic/forensic/watermark/verify/v1/verify.d.ts +55 -0
  456. package/dist/m0saic/forensic/watermark/verify/v1/verify.js +286 -0
  457. package/dist/m0saic/forensic/watermark/video/index.d.ts +1 -0
  458. package/dist/m0saic/forensic/watermark/video/index.js +17 -0
  459. package/dist/m0saic/forensic/watermark/video/v1/forensic-watermark.d.ts +119 -0
  460. package/dist/m0saic/forensic/watermark/video/v1/forensic-watermark.js +629 -0
  461. package/dist/m0saic/forensic/watermark/video/v1/index.d.ts +2 -0
  462. package/dist/m0saic/forensic/watermark/video/v1/index.js +9 -0
  463. package/dist/m0saic/forensic/watermark/video/v1/maskAsset.d.ts +67 -0
  464. package/dist/m0saic/forensic/watermark/video/v1/maskAsset.js +125 -0
  465. package/dist/m0saic/forensic/watermark/video/v1/probeHost.d.ts +69 -0
  466. package/dist/m0saic/forensic/watermark/video/v1/probeHost.js +83 -0
  467. package/dist/m0saic/github/client.d.ts +200 -0
  468. package/dist/m0saic/github/client.js +161 -0
  469. package/dist/m0saic/github/connection.d.ts +24 -0
  470. package/dist/m0saic/github/connection.js +91 -0
  471. package/dist/m0saic/github/index.d.ts +20 -0
  472. package/dist/m0saic/github/index.js +42 -0
  473. package/dist/m0saic/github/repo-facts-fetcher/index.d.ts +4 -0
  474. package/dist/m0saic/github/repo-facts-fetcher/index.js +20 -0
  475. package/dist/m0saic/github/repo-facts-fetcher/v1/build-facts.d.ts +54 -0
  476. package/dist/m0saic/github/repo-facts-fetcher/v1/build-facts.js +238 -0
  477. package/dist/m0saic/github/repo-facts-fetcher/v1/facts.d.ts +112 -0
  478. package/dist/m0saic/github/repo-facts-fetcher/v1/facts.js +12 -0
  479. package/dist/m0saic/github/repo-facts-fetcher/v1/repo-facts-fetcher.d.ts +67 -0
  480. package/dist/m0saic/github/repo-facts-fetcher/v1/repo-facts-fetcher.js +210 -0
  481. package/dist/m0saic/github/repo-facts-fetcher/v1/sample-facts.d.ts +16 -0
  482. package/dist/m0saic/github/repo-facts-fetcher/v1/sample-facts.js +175 -0
  483. package/dist/m0saic/github/week-math.d.ts +50 -0
  484. package/dist/m0saic/github/week-math.js +96 -0
  485. package/dist/m0saic/github/weekly-pulse/index.d.ts +1 -0
  486. package/dist/m0saic/github/weekly-pulse/index.js +17 -0
  487. package/dist/m0saic/github/weekly-pulse/v1/weekly-pulse.d.ts +51 -0
  488. package/dist/m0saic/github/weekly-pulse/v1/weekly-pulse.js +153 -0
  489. package/dist/m0saic/github/weekly-pulse-adapter/index.d.ts +2 -0
  490. package/dist/m0saic/github/weekly-pulse-adapter/index.js +18 -0
  491. package/dist/m0saic/github/weekly-pulse-adapter/v1/derive-pulse.d.ts +24 -0
  492. package/dist/m0saic/github/weekly-pulse-adapter/v1/derive-pulse.js +257 -0
  493. package/dist/m0saic/github/weekly-pulse-adapter/v1/weekly-pulse-adapter.d.ts +35 -0
  494. package/dist/m0saic/github/weekly-pulse-adapter/v1/weekly-pulse-adapter.js +131 -0
  495. package/dist/m0saic/github/year-card/index.d.ts +1 -0
  496. package/dist/m0saic/github/year-card/index.js +17 -0
  497. package/dist/m0saic/github/year-card/v1/index.d.ts +2 -0
  498. package/dist/m0saic/github/year-card/v1/index.js +16 -0
  499. package/dist/m0saic/github/year-card/v1/year-card.d.ts +90 -0
  500. package/dist/m0saic/github/year-card/v1/year-card.js +476 -0
  501. package/dist/m0saic/hello-world/index.d.ts +1 -0
  502. package/dist/m0saic/hello-world/index.js +18 -0
  503. package/dist/m0saic/hello-world/v1/hello-world.d.ts +4 -0
  504. package/dist/m0saic/hello-world/v1/hello-world.js +36 -0
  505. package/dist/m0saic/hello-world/v1/index.d.ts +5 -0
  506. package/dist/m0saic/hello-world/v1/index.js +9 -0
  507. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/bake-fin-qr.sh +11 -0
  508. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/ffmpeg-logo.png +0 -0
  509. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/ffmpeg_logo_480x480.svg +1 -0
  510. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/m-hero.png +0 -0
  511. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/qr-fin.mp4 +0 -0
  512. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-desktop.mp4 +0 -0
  513. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-layout.m0p +5146 -0
  514. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-mobile.mp4 +0 -0
  515. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-square.mp4 +0 -0
  516. package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/title-layout.m0p +130 -0
  517. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-chrome.d.ts +151 -0
  518. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-chrome.js +305 -0
  519. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-data.d.ts +178 -0
  520. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-data.js +238 -0
  521. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-glyphs.d.ts +1 -0
  522. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-glyphs.js +12 -0
  523. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-theme.d.ts +67 -0
  524. package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-theme.js +59 -0
  525. package/dist/m0saic/hero/ffmpeg-pulse/_shared/scatter.d.ts +54 -0
  526. package/dist/m0saic/hero/ffmpeg-pulse/_shared/scatter.js +173 -0
  527. package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/activity-trend.d.ts +37 -0
  528. package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/activity-trend.js +178 -0
  529. package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/index.d.ts +1 -0
  530. package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/index.js +5 -0
  531. package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/changes-breakdown.d.ts +37 -0
  532. package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/changes-breakdown.js +164 -0
  533. package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/index.d.ts +1 -0
  534. package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/index.js +5 -0
  535. package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/contributions.d.ts +37 -0
  536. package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/contributions.js +159 -0
  537. package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/index.d.ts +1 -0
  538. package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/index.js +5 -0
  539. package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/fin.d.ts +31 -0
  540. package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/fin.js +154 -0
  541. package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/index.d.ts +1 -0
  542. package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/index.js +5 -0
  543. package/dist/m0saic/hero/ffmpeg-pulse/index.d.ts +10 -0
  544. package/dist/m0saic/hero/ffmpeg-pulse/index.js +24 -0
  545. package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/index.d.ts +1 -0
  546. package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/index.js +5 -0
  547. package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/kpi-overview.d.ts +38 -0
  548. package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/kpi-overview.js +161 -0
  549. package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/index.d.ts +1 -0
  550. package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/index.js +5 -0
  551. package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/notable-commits.d.ts +36 -0
  552. package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/notable-commits.js +151 -0
  553. package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/index.d.ts +1 -0
  554. package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/index.js +5 -0
  555. package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/runner.d.ts +54 -0
  556. package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/runner.js +128 -0
  557. package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/index.d.ts +1 -0
  558. package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/index.js +5 -0
  559. package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/scatter-bake.d.ts +29 -0
  560. package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/scatter-bake.js +47 -0
  561. package/dist/m0saic/hero/ffmpeg-pulse/title/v1/index.d.ts +1 -0
  562. package/dist/m0saic/hero/ffmpeg-pulse/title/v1/index.js +5 -0
  563. package/dist/m0saic/hero/ffmpeg-pulse/title/v1/title.d.ts +20 -0
  564. package/dist/m0saic/hero/ffmpeg-pulse/title/v1/title.js +365 -0
  565. package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/index.d.ts +1 -0
  566. package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/index.js +5 -0
  567. package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/top-contributors.d.ts +38 -0
  568. package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/top-contributors.js +174 -0
  569. package/dist/m0saic/hero/index.d.ts +1 -0
  570. package/dist/m0saic/hero/index.js +18 -0
  571. package/dist/m0saic/index.d.ts +20 -0
  572. package/dist/m0saic/index.js +56 -0
  573. package/dist/m0saic/media/barcode/v1/barcode.d.ts +22 -0
  574. package/dist/m0saic/media/barcode/v1/barcode.js +218 -0
  575. package/dist/m0saic/media/barcode/v1/index.d.ts +1 -0
  576. package/dist/m0saic/media/barcode/v1/index.js +9 -0
  577. package/dist/m0saic/media/blur-regions/index.d.ts +1 -0
  578. package/dist/m0saic/media/blur-regions/index.js +17 -0
  579. package/dist/m0saic/media/blur-regions/v1/blur-regions.d.ts +58 -0
  580. package/dist/m0saic/media/blur-regions/v1/blur-regions.js +303 -0
  581. package/dist/m0saic/media/blur-regions/v1/index.d.ts +2 -0
  582. package/dist/m0saic/media/blur-regions/v1/index.js +20 -0
  583. package/dist/m0saic/media/blur-regions/v1/plan.d.ts +125 -0
  584. package/dist/m0saic/media/blur-regions/v1/plan.js +204 -0
  585. package/dist/m0saic/media/blur-regions/v1/tutorial.d.ts +18 -0
  586. package/dist/m0saic/media/blur-regions/v1/tutorial.js +428 -0
  587. package/dist/m0saic/media/highlights/index.d.ts +1 -0
  588. package/dist/m0saic/media/highlights/index.js +17 -0
  589. package/dist/m0saic/media/highlights/v1/assets/cover-ranges.jpg +0 -0
  590. package/dist/m0saic/media/highlights/v1/highlights.d.ts +49 -0
  591. package/dist/m0saic/media/highlights/v1/highlights.js +222 -0
  592. package/dist/m0saic/media/highlights/v1/index.d.ts +3 -0
  593. package/dist/m0saic/media/highlights/v1/index.js +19 -0
  594. package/dist/m0saic/media/highlights/v1/pipeline.d.ts +35 -0
  595. package/dist/m0saic/media/highlights/v1/pipeline.js +91 -0
  596. package/dist/m0saic/media/highlights/v1/plan.d.ts +46 -0
  597. package/dist/m0saic/media/highlights/v1/plan.js +68 -0
  598. package/dist/m0saic/media/index.d.ts +13 -0
  599. package/dist/m0saic/media/index.js +31 -0
  600. package/dist/m0saic/media/logo-animate/index.d.ts +1 -0
  601. package/dist/m0saic/media/logo-animate/index.js +17 -0
  602. package/dist/m0saic/media/logo-animate/v1/default-logo.d.ts +12 -0
  603. package/dist/m0saic/media/logo-animate/v1/default-logo.js +49 -0
  604. package/dist/m0saic/media/logo-animate/v1/expressions.d.ts +66 -0
  605. package/dist/m0saic/media/logo-animate/v1/expressions.js +107 -0
  606. package/dist/m0saic/media/logo-animate/v1/index.d.ts +2 -0
  607. package/dist/m0saic/media/logo-animate/v1/index.js +5 -0
  608. package/dist/m0saic/media/logo-animate/v1/layout.d.ts +29 -0
  609. package/dist/m0saic/media/logo-animate/v1/layout.js +43 -0
  610. package/dist/m0saic/media/logo-animate/v1/logo-animate.d.ts +106 -0
  611. package/dist/m0saic/media/logo-animate/v1/logo-animate.js +732 -0
  612. package/dist/m0saic/media/logo-animate/v1/svg-source.d.ts +63 -0
  613. package/dist/m0saic/media/logo-animate/v1/svg-source.js +127 -0
  614. package/dist/m0saic/media/logo-animate/v1/tutorial.d.ts +16 -0
  615. package/dist/m0saic/media/logo-animate/v1/tutorial.js +378 -0
  616. package/dist/m0saic/media/metadata-stamp/index.d.ts +1 -0
  617. package/dist/m0saic/media/metadata-stamp/index.js +17 -0
  618. package/dist/m0saic/media/metadata-stamp/v1/assets/cover-frame.jpg +0 -0
  619. package/dist/m0saic/media/metadata-stamp/v1/format-date.d.ts +52 -0
  620. package/dist/m0saic/media/metadata-stamp/v1/format-date.js +128 -0
  621. package/dist/m0saic/media/metadata-stamp/v1/index.d.ts +4 -0
  622. package/dist/m0saic/media/metadata-stamp/v1/index.js +10 -0
  623. package/dist/m0saic/media/metadata-stamp/v1/metadata-stamp.d.ts +58 -0
  624. package/dist/m0saic/media/metadata-stamp/v1/metadata-stamp.js +534 -0
  625. package/dist/m0saic/media/qr/_shared/brandMCenter.d.ts +28 -0
  626. package/dist/m0saic/media/qr/_shared/brandMCenter.js +52 -0
  627. package/dist/m0saic/media/qr/animate/v1/expressions.d.ts +164 -0
  628. package/dist/m0saic/media/qr/animate/v1/expressions.js +251 -0
  629. package/dist/m0saic/media/qr/animate/v1/index.d.ts +2 -0
  630. package/dist/m0saic/media/qr/animate/v1/index.js +9 -0
  631. package/dist/m0saic/media/qr/animate/v1/qr-animate.d.ts +171 -0
  632. package/dist/m0saic/media/qr/animate/v1/qr-animate.js +775 -0
  633. package/dist/m0saic/media/qr/animate/v2/index.d.ts +2 -0
  634. package/dist/m0saic/media/qr/animate/v2/index.js +9 -0
  635. package/dist/m0saic/media/qr/animate/v2/qr-animate.d.ts +64 -0
  636. package/dist/m0saic/media/qr/animate/v2/qr-animate.js +341 -0
  637. package/dist/m0saic/media/qr/basic/v1/index.d.ts +1 -0
  638. package/dist/m0saic/media/qr/basic/v1/index.js +10 -0
  639. package/dist/m0saic/media/qr/basic/v1/qr.d.ts +24 -0
  640. package/dist/m0saic/media/qr/basic/v1/qr.js +132 -0
  641. package/dist/m0saic/media/qr/code/v1/index.d.ts +2 -0
  642. package/dist/m0saic/media/qr/code/v1/index.js +9 -0
  643. package/dist/m0saic/media/qr/code/v1/qr-code.d.ts +135 -0
  644. package/dist/m0saic/media/qr/code/v1/qr-code.js +611 -0
  645. package/dist/m0saic/media/qr/index.d.ts +7 -0
  646. package/dist/m0saic/media/qr/index.js +19 -0
  647. package/dist/m0saic/media/qr/rounded/v1/index.d.ts +1 -0
  648. package/dist/m0saic/media/qr/rounded/v1/index.js +9 -0
  649. package/dist/m0saic/media/qr/rounded/v1/qr-rounded.d.ts +68 -0
  650. package/dist/m0saic/media/qr/rounded/v1/qr-rounded.js +338 -0
  651. package/dist/m0saic/media/qr/stamp/v1/assets/cover-frame.jpg +0 -0
  652. package/dist/m0saic/media/qr/stamp/v1/qr-stamp-custom.d.ts +44 -0
  653. package/dist/m0saic/media/qr/stamp/v1/qr-stamp-custom.js +389 -0
  654. package/dist/m0saic/media/qr/stamp-video/v1/expressions.d.ts +10 -0
  655. package/dist/m0saic/media/qr/stamp-video/v1/expressions.js +18 -0
  656. package/dist/m0saic/media/qr/stamp-video/v1/gleamBand.d.ts +115 -0
  657. package/dist/m0saic/media/qr/stamp-video/v1/gleamBand.js +206 -0
  658. package/dist/m0saic/media/qr/stamp-video/v1/index.d.ts +2 -0
  659. package/dist/m0saic/media/qr/stamp-video/v1/index.js +9 -0
  660. package/dist/m0saic/media/qr/stamp-video/v1/qr-stamp.d.ts +82 -0
  661. package/dist/m0saic/media/qr/stamp-video/v1/qr-stamp.js +424 -0
  662. package/dist/m0saic/media/screencap_grid/index.d.ts +3 -0
  663. package/dist/m0saic/media/screencap_grid/index.js +9 -0
  664. package/dist/m0saic/media/screencap_grid/internal/index.d.ts +1 -0
  665. package/dist/m0saic/media/screencap_grid/internal/index.js +5 -0
  666. package/dist/m0saic/media/screencap_grid/internal/info_pane.d.ts +13 -0
  667. package/dist/m0saic/media/screencap_grid/internal/info_pane.js +130 -0
  668. package/dist/m0saic/media/screencap_grid/v1/index.d.ts +1 -0
  669. package/dist/m0saic/media/screencap_grid/v1/index.js +5 -0
  670. package/dist/m0saic/media/screencap_grid/v1/screencap-grid.d.ts +162 -0
  671. package/dist/m0saic/media/screencap_grid/v1/screencap-grid.js +690 -0
  672. package/dist/m0saic/media/screencap_grid/v2/assets/tutorial-sheet.jpg +0 -0
  673. package/dist/m0saic/media/screencap_grid/v2/index.d.ts +1 -0
  674. package/dist/m0saic/media/screencap_grid/v2/index.js +5 -0
  675. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover-assets.d.ts +9 -0
  676. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover-assets.js +12 -0
  677. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover.d.ts +97 -0
  678. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover.js +367 -0
  679. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-tutorial.d.ts +38 -0
  680. package/dist/m0saic/media/screencap_grid/v2/screencap-grid-tutorial.js +530 -0
  681. package/dist/m0saic/media/screencap_grid/v2/screencap-grid.d.ts +194 -0
  682. package/dist/m0saic/media/screencap_grid/v2/screencap-grid.js +615 -0
  683. package/dist/m0saic/media/screencap_grid_aspect_safe/index.d.ts +1 -0
  684. package/dist/m0saic/media/screencap_grid_aspect_safe/index.js +5 -0
  685. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/assets/pair-sheet.jpg +0 -0
  686. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/index.d.ts +1 -0
  687. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/index.js +5 -0
  688. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-cover.d.ts +18 -0
  689. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-cover.js +191 -0
  690. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-tutorial.d.ts +13 -0
  691. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-tutorial.js +355 -0
  692. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe.d.ts +179 -0
  693. package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe.js +544 -0
  694. package/dist/m0saic/media/scroll_wall/index.d.ts +1 -0
  695. package/dist/m0saic/media/scroll_wall/index.js +5 -0
  696. package/dist/m0saic/media/scroll_wall/v1/geometry.d.ts +131 -0
  697. package/dist/m0saic/media/scroll_wall/v1/geometry.js +172 -0
  698. package/dist/m0saic/media/scroll_wall/v1/index.d.ts +1 -0
  699. package/dist/m0saic/media/scroll_wall/v1/index.js +5 -0
  700. package/dist/m0saic/media/scroll_wall/v1/motion.d.ts +114 -0
  701. package/dist/m0saic/media/scroll_wall/v1/motion.js +141 -0
  702. package/dist/m0saic/media/scroll_wall/v1/scroll-wall.d.ts +182 -0
  703. package/dist/m0saic/media/scroll_wall/v1/scroll-wall.js +432 -0
  704. package/dist/m0saic/media/subtitle-burn/index.d.ts +1 -0
  705. package/dist/m0saic/media/subtitle-burn/index.js +17 -0
  706. package/dist/m0saic/media/subtitle-burn/v1/assets/cover-frame.jpg +0 -0
  707. package/dist/m0saic/media/subtitle-burn/v1/index.d.ts +1 -0
  708. package/dist/m0saic/media/subtitle-burn/v1/index.js +6 -0
  709. package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn-cover.d.ts +13 -0
  710. package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn-cover.js +196 -0
  711. package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn.d.ts +137 -0
  712. package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn.js +603 -0
  713. package/dist/m0saic/media/trickplay/index.d.ts +1 -0
  714. package/dist/m0saic/media/trickplay/index.js +17 -0
  715. package/dist/m0saic/media/trickplay/v1/index.d.ts +4 -0
  716. package/dist/m0saic/media/trickplay/v1/index.js +18 -0
  717. package/dist/m0saic/media/trickplay/v1/pipeline.d.ts +51 -0
  718. package/dist/m0saic/media/trickplay/v1/pipeline.js +180 -0
  719. package/dist/m0saic/media/trickplay/v1/plan.d.ts +65 -0
  720. package/dist/m0saic/media/trickplay/v1/plan.js +76 -0
  721. package/dist/m0saic/media/trickplay/v1/sidecars.d.ts +79 -0
  722. package/dist/m0saic/media/trickplay/v1/sidecars.js +89 -0
  723. package/dist/m0saic/media/trickplay/v1/trickplay.d.ts +40 -0
  724. package/dist/m0saic/media/trickplay/v1/trickplay.js +123 -0
  725. package/dist/m0saic/media/video_to_png_sequence/index.d.ts +1 -0
  726. package/dist/m0saic/media/video_to_png_sequence/index.js +5 -0
  727. package/dist/m0saic/media/video_to_png_sequence/v1/index.d.ts +1 -0
  728. package/dist/m0saic/media/video_to_png_sequence/v1/index.js +5 -0
  729. package/dist/m0saic/media/video_to_png_sequence/v1/video-to-png-sequence.d.ts +37 -0
  730. package/dist/m0saic/media/video_to_png_sequence/v1/video-to-png-sequence.js +234 -0
  731. package/dist/m0saic/media/watermark/index.d.ts +1 -0
  732. package/dist/m0saic/media/watermark/index.js +17 -0
  733. package/dist/m0saic/media/watermark/v1/adaptive.d.ts +85 -0
  734. package/dist/m0saic/media/watermark/v1/adaptive.js +162 -0
  735. package/dist/m0saic/media/watermark/v1/content.d.ts +56 -0
  736. package/dist/m0saic/media/watermark/v1/content.js +160 -0
  737. package/dist/m0saic/media/watermark/v1/geometry.d.ts +138 -0
  738. package/dist/m0saic/media/watermark/v1/geometry.js +247 -0
  739. package/dist/m0saic/media/watermark/v1/index.d.ts +3 -0
  740. package/dist/m0saic/media/watermark/v1/index.js +5 -0
  741. package/dist/m0saic/media/watermark/v1/pageGrid.d.ts +105 -0
  742. package/dist/m0saic/media/watermark/v1/pageGrid.js +203 -0
  743. package/dist/m0saic/media/watermark/v1/pipeline.d.ts +68 -0
  744. package/dist/m0saic/media/watermark/v1/pipeline.js +324 -0
  745. package/dist/m0saic/media/watermark/v1/watermark.d.ts +88 -0
  746. package/dist/m0saic/media/watermark/v1/watermark.js +452 -0
  747. package/dist/m0saic/meta/camera-debug/index.d.ts +1 -0
  748. package/dist/m0saic/meta/camera-debug/index.js +17 -0
  749. package/dist/m0saic/meta/camera-debug/v1/camera-debug.d.ts +98 -0
  750. package/dist/m0saic/meta/camera-debug/v1/camera-debug.js +490 -0
  751. package/dist/m0saic/meta/fixture-fetcher/index.d.ts +1 -0
  752. package/dist/m0saic/meta/fixture-fetcher/index.js +17 -0
  753. package/dist/m0saic/meta/fixture-fetcher/v1/fixture-fetcher.d.ts +76 -0
  754. package/dist/m0saic/meta/fixture-fetcher/v1/fixture-fetcher.js +159 -0
  755. package/dist/m0saic/meta/hot-reload-smoke/index.d.ts +1 -0
  756. package/dist/m0saic/meta/hot-reload-smoke/index.js +17 -0
  757. package/dist/m0saic/meta/hot-reload-smoke/v1/hot-reload-smoke.d.ts +50 -0
  758. package/dist/m0saic/meta/hot-reload-smoke/v1/hot-reload-smoke.js +131 -0
  759. package/dist/m0saic/meta/index.d.ts +13 -0
  760. package/dist/m0saic/meta/index.js +29 -0
  761. package/dist/m0saic/meta/post-mortem/index.d.ts +1 -0
  762. package/dist/m0saic/meta/post-mortem/index.js +17 -0
  763. package/dist/m0saic/meta/post-mortem/v1/assets/human.png +0 -0
  764. package/dist/m0saic/meta/post-mortem/v1/assets/robot.png +0 -0
  765. package/dist/m0saic/meta/post-mortem/v1/post-mortem.d.ts +47 -0
  766. package/dist/m0saic/meta/post-mortem/v1/post-mortem.js +634 -0
  767. package/dist/m0saic/meta/upstream-echo/index.d.ts +1 -0
  768. package/dist/m0saic/meta/upstream-echo/index.js +17 -0
  769. package/dist/m0saic/meta/upstream-echo/v1/upstream-echo.d.ts +52 -0
  770. package/dist/m0saic/meta/upstream-echo/v1/upstream-echo.js +138 -0
  771. package/dist/m0saic/primitives/grid/index.d.ts +2 -0
  772. package/dist/m0saic/primitives/grid/index.js +7 -0
  773. package/dist/m0saic/primitives/grid/v1/grid.d.ts +85 -0
  774. package/dist/m0saic/primitives/grid/v1/grid.js +217 -0
  775. package/dist/m0saic/primitives/grid/v2/grid.d.ts +80 -0
  776. package/dist/m0saic/primitives/grid/v2/grid.js +150 -0
  777. package/dist/m0saic/primitives/index.d.ts +1 -0
  778. package/dist/m0saic/primitives/index.js +17 -0
  779. package/dist/m0saic/social/index.d.ts +1 -0
  780. package/dist/m0saic/social/index.js +17 -0
  781. package/dist/m0saic/social/quote-card/index.d.ts +1 -0
  782. package/dist/m0saic/social/quote-card/index.js +17 -0
  783. package/dist/m0saic/social/quote-card/v1/index.d.ts +2 -0
  784. package/dist/m0saic/social/quote-card/v1/index.js +5 -0
  785. package/dist/m0saic/social/quote-card/v1/layout.d.ts +119 -0
  786. package/dist/m0saic/social/quote-card/v1/layout.js +323 -0
  787. package/dist/m0saic/social/quote-card/v1/quote-card.d.ts +51 -0
  788. package/dist/m0saic/social/quote-card/v1/quote-card.js +310 -0
  789. package/dist/m0saic/story/index.d.ts +2 -0
  790. package/dist/m0saic/story/index.js +20 -0
  791. package/dist/m0saic/story/narrated-chapters/index.d.ts +1 -0
  792. package/dist/m0saic/story/narrated-chapters/index.js +17 -0
  793. package/dist/m0saic/story/narrated-chapters/v1/captions.d.ts +42 -0
  794. package/dist/m0saic/story/narrated-chapters/v1/captions.js +200 -0
  795. package/dist/m0saic/story/narrated-chapters/v1/demo-fixture.d.ts +13 -0
  796. package/dist/m0saic/story/narrated-chapters/v1/demo-fixture.js +52 -0
  797. package/dist/m0saic/story/narrated-chapters/v1/index.d.ts +2 -0
  798. package/dist/m0saic/story/narrated-chapters/v1/index.js +5 -0
  799. package/dist/m0saic/story/narrated-chapters/v1/kenburns.d.ts +50 -0
  800. package/dist/m0saic/story/narrated-chapters/v1/kenburns.js +0 -0
  801. package/dist/m0saic/story/narrated-chapters/v1/layout.d.ts +103 -0
  802. package/dist/m0saic/story/narrated-chapters/v1/layout.js +162 -0
  803. package/dist/m0saic/story/narrated-chapters/v1/narrated-chapters.d.ts +22 -0
  804. package/dist/m0saic/story/narrated-chapters/v1/narrated-chapters.js +160 -0
  805. package/dist/m0saic/story/narrated-chapters/v1/pipeline.d.ts +43 -0
  806. package/dist/m0saic/story/narrated-chapters/v1/pipeline.js +94 -0
  807. package/dist/m0saic/story/narrated-chapters/v1/plan.d.ts +144 -0
  808. package/dist/m0saic/story/narrated-chapters/v1/plan.js +372 -0
  809. package/dist/m0saic/story/narrated-chapters/v1/props.d.ts +147 -0
  810. package/dist/m0saic/story/narrated-chapters/v1/props.js +205 -0
  811. package/dist/m0saic/story/narrated-chapters/v1/scenes/body.d.ts +64 -0
  812. package/dist/m0saic/story/narrated-chapters/v1/scenes/body.js +253 -0
  813. package/dist/m0saic/story/narrated-chapters/v1/scenes/card.d.ts +40 -0
  814. package/dist/m0saic/story/narrated-chapters/v1/scenes/card.js +201 -0
  815. package/dist/m0saic/story/narrated-chapters/v1/theme.d.ts +25 -0
  816. package/dist/m0saic/story/narrated-chapters/v1/theme.js +38 -0
  817. package/dist/m0saic/story/scrapbook/v1/document.d.ts +41 -0
  818. package/dist/m0saic/story/scrapbook/v1/document.js +124 -0
  819. package/dist/m0saic/story/scrapbook/v1/index.d.ts +1 -0
  820. package/dist/m0saic/story/scrapbook/v1/index.js +9 -0
  821. package/dist/m0saic/story/scrapbook/v1/page.d.ts +34 -0
  822. package/dist/m0saic/story/scrapbook/v1/page.js +121 -0
  823. package/dist/m0saic/story/scrapbook/v1/pages.d.ts +29 -0
  824. package/dist/m0saic/story/scrapbook/v1/pages.js +37 -0
  825. package/dist/m0saic/story/scrapbook/v1/pipeline.d.ts +44 -0
  826. package/dist/m0saic/story/scrapbook/v1/pipeline.js +130 -0
  827. package/dist/m0saic/story/scrapbook/v1/placeholder.d.ts +22 -0
  828. package/dist/m0saic/story/scrapbook/v1/placeholder.js +51 -0
  829. package/dist/m0saic/story/scrapbook/v1/props.d.ts +66 -0
  830. package/dist/m0saic/story/scrapbook/v1/props.js +80 -0
  831. package/dist/m0saic/story/scrapbook/v1/scrapbook.d.ts +23 -0
  832. package/dist/m0saic/story/scrapbook/v1/scrapbook.js +77 -0
  833. package/dist/m0saic/theming/index.d.ts +1 -0
  834. package/dist/m0saic/theming/index.js +17 -0
  835. package/dist/m0saic/theming/v1/brand-m-glyph.d.ts +14 -0
  836. package/dist/m0saic/theming/v1/brand-m-glyph.js +12 -0
  837. package/dist/m0saic/theming/v1/index.d.ts +2 -0
  838. package/dist/m0saic/theming/v1/index.js +16 -0
  839. package/dist/m0saic/theming/v1/theme-tokens.d.ts +71 -0
  840. package/dist/m0saic/theming/v1/theme-tokens.js +111 -0
  841. package/dist/m0saic/theming/v1/theming.d.ts +18 -0
  842. package/dist/m0saic/theming/v1/theming.js +94 -0
  843. package/dist/m0saic/theming/v1/token-sheet.d.ts +23 -0
  844. package/dist/m0saic/theming/v1/token-sheet.js +191 -0
  845. package/dist/m0saic/web/index.d.ts +1 -0
  846. package/dist/m0saic/web/index.js +17 -0
  847. package/dist/m0saic/web/page-skeleton/v1/capture/capture-snippet-source.d.ts +1 -0
  848. package/dist/m0saic/web/page-skeleton/v1/capture/capture-snippet-source.js +528 -0
  849. package/dist/m0saic/web/page-skeleton/v1/index.d.ts +1 -0
  850. package/dist/m0saic/web/page-skeleton/v1/index.js +5 -0
  851. package/dist/m0saic/web/page-skeleton/v1/layout.d.ts +107 -0
  852. package/dist/m0saic/web/page-skeleton/v1/layout.js +246 -0
  853. package/dist/m0saic/web/page-skeleton/v1/page-skeleton.d.ts +148 -0
  854. package/dist/m0saic/web/page-skeleton/v1/page-skeleton.js +787 -0
  855. package/dist/m0saic/web/page-skeleton/v1/sample-capture.d.ts +7 -0
  856. package/dist/m0saic/web/page-skeleton/v1/sample-capture.js +50 -0
  857. package/dist/m0saic/web/page-skeleton/v1/schema.d.ts +35 -0
  858. package/dist/m0saic/web/page-skeleton/v1/schema.js +132 -0
  859. package/dist/m0saic/wireframe/animated/v1/animated-wireframe.d.ts +93 -0
  860. package/dist/m0saic/wireframe/animated/v1/animated-wireframe.js +580 -0
  861. package/dist/m0saic/wireframe/animated/v1/index.d.ts +1 -0
  862. package/dist/m0saic/wireframe/animated/v1/index.js +5 -0
  863. package/dist/m0saic/wireframe/base/v1/index.d.ts +1 -0
  864. package/dist/m0saic/wireframe/base/v1/index.js +5 -0
  865. package/dist/m0saic/wireframe/base/v1/wireframe.d.ts +68 -0
  866. package/dist/m0saic/wireframe/base/v1/wireframe.js +372 -0
  867. package/dist/m0saic/wireframe/base/v2/index.d.ts +2 -0
  868. package/dist/m0saic/wireframe/base/v2/index.js +9 -0
  869. package/dist/m0saic/wireframe/base/v2/wireframe.d.ts +166 -0
  870. package/dist/m0saic/wireframe/base/v2/wireframe.js +1181 -0
  871. package/dist/m0saic/wireframe/index.d.ts +4 -0
  872. package/dist/m0saic/wireframe/index.js +16 -0
  873. package/dist/m0saic/wireframe/utils/paperGrid.d.ts +53 -0
  874. package/dist/m0saic/wireframe/utils/paperGrid.js +91 -0
  875. package/dist/m0saic/wireframe/utils/wireframeCell.d.ts +35 -0
  876. package/dist/m0saic/wireframe/utils/wireframeCell.js +278 -0
  877. package/dist/registry.d.ts +4 -0
  878. package/dist/registry.js +7 -0
  879. package/dist/repo.d.ts +11 -0
  880. package/dist/repo.js +39 -0
  881. package/dist/template-registry.d.ts +18 -0
  882. package/dist/template-registry.js +888 -0
  883. package/dist/web.d.ts +35 -0
  884. package/dist/web.js +88 -0
  885. package/dist/webTemplateIds.d.ts +6 -0
  886. package/dist/webTemplateIds.js +80 -0
  887. package/package.json +52 -0
  888. package/template-manifest.json +1635 -0
  889. package/web-template-ids.json +84 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * Pure calendar arithmetic for the GitHub connector — ISO-8601 weeks and
4
+ * Monday-start week windows.
5
+ *
6
+ * DETERMINISM CONTRACT: every function here is a pure integer computation over
7
+ * `"YYYY-MM-DD"` strings — NO `Date` construction, NO wall-clock. This is what
8
+ * lets the core-tier `weekly-pulse-adapter` (and the beats) stay deterministic
9
+ * while still doing week math, and it extends the `parseISODate` idiom already
10
+ * in `hero/ffmpeg-pulse/_shared/pulse-data.ts`. Shared by: the client (window →
11
+ * since/until), the adapter (weekNumber, trailing-8 grid), and — later — the
12
+ * Jobs window tokens (F5 Phase 5), which import these instead of re-deriving.
13
+ *
14
+ * The engine (proleptic Gregorian) day-count is Howard Hinnant's
15
+ * `days_from_civil` / `civil_from_days` — exact for all in-range dates, integer
16
+ * throughout.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.parseISODate = parseISODate;
20
+ exports.formatISODate = formatISODate;
21
+ exports.daysFromCivil = daysFromCivil;
22
+ exports.civilFromDays = civilFromDays;
23
+ exports.addDaysISO = addDaysISO;
24
+ exports.isoDayOfWeek = isoDayOfWeek;
25
+ exports.mondayOfISO = mondayOfISO;
26
+ exports.isoWeekNumber = isoWeekNumber;
27
+ exports.lastFullWeek = lastFullWeek;
28
+ /** Parse `"YYYY-MM-DD"` (optionally with a trailing time) into integer parts. */
29
+ function parseISODate(iso) {
30
+ const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(iso);
31
+ if (!m)
32
+ throw new Error(`week-math: not an ISO date: ${JSON.stringify(iso)}`);
33
+ return { y: Number(m[1]), m: Number(m[2]), d: Number(m[3]) };
34
+ }
35
+ /** Format integer parts back to `"YYYY-MM-DD"` (zero-padded). */
36
+ function formatISODate({ y, m, d }) {
37
+ const p = (n, w) => String(n).padStart(w, "0");
38
+ return `${p(y, 4)}-${p(m, 2)}-${p(d, 2)}`;
39
+ }
40
+ /** Days since 1970-01-01 for a civil date. Pure integer (Hinnant). */
41
+ function daysFromCivil(y, m, d) {
42
+ const yy = y - (m <= 2 ? 1 : 0);
43
+ const era = Math.floor((yy >= 0 ? yy : yy - 399) / 400);
44
+ const yoe = yy - era * 400; // [0, 399]
45
+ const doy = Math.floor((153 * (m + (m > 2 ? -3 : 9)) + 2) / 5) + d - 1; // [0, 365]
46
+ const doe = yoe * 365 + Math.floor(yoe / 4) - Math.floor(yoe / 100) + doy; // [0, 146096]
47
+ return era * 146097 + doe - 719468;
48
+ }
49
+ /** Civil date from a 1970-epoch day-count. Inverse of {@link daysFromCivil}. */
50
+ function civilFromDays(z) {
51
+ const zz = z + 719468;
52
+ const era = Math.floor((zz >= 0 ? zz : zz - 146096) / 146097);
53
+ const doe = zz - era * 146097; // [0, 146096]
54
+ const yoe = Math.floor((doe - Math.floor(doe / 1460) + Math.floor(doe / 36524) - Math.floor(doe / 146096)) / 365); // [0, 399]
55
+ const y = yoe + era * 400;
56
+ const doy = doe - (365 * yoe + Math.floor(yoe / 4) - Math.floor(yoe / 100)); // [0, 365]
57
+ const mp = Math.floor((5 * doy + 2) / 153); // [0, 11]
58
+ const d = doy - Math.floor((153 * mp + 2) / 5) + 1; // [1, 31]
59
+ const m = mp + (mp < 10 ? 3 : -9); // [1, 12]
60
+ return { y: y + (m <= 2 ? 1 : 0), m, d };
61
+ }
62
+ const dayCount = (iso) => { const { y, m, d } = parseISODate(iso); return daysFromCivil(y, m, d); };
63
+ /** Add `n` days (may be negative) to an ISO date, returning a new ISO date. */
64
+ function addDaysISO(iso, n) {
65
+ return formatISODate(civilFromDays(dayCount(iso) + n));
66
+ }
67
+ /** ISO day-of-week: 0 = Monday … 6 = Sunday. */
68
+ function isoDayOfWeek(iso) {
69
+ // 1970-01-01 (day 0) is a Thursday → Sunday-indexed weekday = (z + 4) mod 7.
70
+ const sun = (((dayCount(iso) + 4) % 7) + 7) % 7; // 0 = Sunday
71
+ return (sun + 6) % 7; // 0 = Monday
72
+ }
73
+ /** The Monday (`"YYYY-MM-DD"`) of the ISO week containing `iso`. */
74
+ function mondayOfISO(iso) {
75
+ return addDaysISO(iso, -isoDayOfWeek(iso));
76
+ }
77
+ /** ISO-8601 week number (1–53) of the week containing `iso`. */
78
+ function isoWeekNumber(iso) {
79
+ const z = dayCount(iso);
80
+ const thursday = z - isoDayOfWeek(iso) + 3; // Thursday fixes the ISO week-year
81
+ const { y } = civilFromDays(thursday);
82
+ const jan1 = daysFromCivil(y, 1, 1);
83
+ return Math.floor((thursday - jan1) / 7) + 1;
84
+ }
85
+ /**
86
+ * The most recent COMPLETE Monday..Sunday week STRICTLY before `todayISO`.
87
+ *
88
+ * The week containing `todayISO` is never complete before its own Sunday
89
+ * elapses, so the last guaranteed-complete week is always the one before it —
90
+ * `[thisMonday - 7d, thisMonday - 1d]` — regardless of which weekday `today` is.
91
+ * This is the window the Jobs `{{lastFullWeek*}}` tokens resolve to (F5 P5).
92
+ */
93
+ function lastFullWeek(todayISO) {
94
+ const thisMonday = mondayOfISO(todayISO);
95
+ return { startISO: addDaysISO(thisMonday, -7), endISO: addDaysISO(thisMonday, -1) };
96
+ }
@@ -0,0 +1 @@
1
+ export * from "./v1/weekly-pulse";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./v1/weekly-pulse"), exports);
@@ -0,0 +1,51 @@
1
+ import type { MosaicTemplate } from "@m0saic/types";
2
+ import type { GithubRepoFacts } from "../../repo-facts-fetcher/v1/facts";
3
+ /**
4
+ * `@m0saic/github/weekly-pulse/v1` — the ONE self-contained, app-runnable Weekly
5
+ * Pulse. Capability-tier: it fetches a repo's week itself from prop input (repo +
6
+ * window + token), derives the WeeklyPulse sheet, and renders all 8 beats — no
7
+ * `.mosaicx` pipeline, no upstream wiring. The app counterpart to the fetcher →
8
+ * adapter → runner chain the Jobs cron uses.
9
+ *
10
+ * NETWORK DISCIPLINE (renderLite): editor previews / prop changes call
11
+ * `renderLite`, which does NOT fetch — it shows a friendly "ready" card so
12
+ * tweaking props never hammers the API. The live fetch happens only on an
13
+ * explicit Make (`render`). Power users can set `livePreview:true` to fetch on
14
+ * every preview and geometrically inspect the real data — an intentional opt-in.
15
+ *
16
+ * WINDOW: live mode defaults to the last COMPLETE Mon..Sun week (UTC, computed
17
+ * at render time — this capability template is inherently non-deterministic, so
18
+ * it reads the clock; core templates never do). Set `window` to pin a week. The
19
+ * fully deterministic path is the cron `.mosaicx` (`{{lastFullWeek*}}` tokens).
20
+ */
21
+ export type GithubWeeklyPulseProps = {
22
+ /** `replay` (embedded sample, no network — default) or `live` (fetch `repo`). */
23
+ source?: "replay" | "live";
24
+ /** Replay payload. Default: the embedded sample. */
25
+ facts?: GithubRepoFacts;
26
+ /** `owner/name` (live). */
27
+ repo?: string;
28
+ /** UTC Monday..Sunday inclusive (live). Omit → the last complete week. */
29
+ window?: {
30
+ startISO: string;
31
+ endISO: string;
32
+ };
33
+ /** Connection id for the base URL + keychain token (live). */
34
+ connectionId?: string;
35
+ /** Explicit SecretRef escape hatch (e.g. `env:GITHUB_TOKEN`); falls through to the connection when unresolvable. */
36
+ tokenRef?: string;
37
+ commitDetails?: "auto" | "full" | "none";
38
+ maxCommits?: number;
39
+ callBudget?: number;
40
+ /** Power-user opt-in: fetch + render real data on EVERY editor preview (not just Make). Off by default. */
41
+ livePreview?: boolean;
42
+ kpiKeys?: string[];
43
+ notableCount?: number;
44
+ areaDepth?: number;
45
+ topContributors?: number;
46
+ timings?: Record<string, number>;
47
+ crossfadeMs?: number;
48
+ renderMode?: "premium" | "light";
49
+ };
50
+ export declare const GithubWeeklyPulse: MosaicTemplate<GithubWeeklyPulseProps>;
51
+ export default GithubWeeklyPulse;
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GithubWeeklyPulse = void 0;
4
+ const types_1 = require("@m0saic/types");
5
+ const dsl_stdlib_1 = require("@m0saic/dsl-stdlib");
6
+ const template_utils_1 = require("@m0saic/template-utils");
7
+ const client_1 = require("../../client");
8
+ const week_math_1 = require("../../week-math");
9
+ const build_facts_1 = require("../../repo-facts-fetcher/v1/build-facts");
10
+ const repo_facts_fetcher_1 = require("../../repo-facts-fetcher/v1/repo-facts-fetcher");
11
+ const sample_facts_1 = require("../../repo-facts-fetcher/v1/sample-facts");
12
+ const derive_pulse_1 = require("../../weekly-pulse-adapter/v1/derive-pulse");
13
+ const runner_1 = require("../../../hero/ffmpeg-pulse/runner/v1/runner");
14
+ const connection_1 = require("../../connection");
15
+ const propsSchema = (0, template_utils_1.definePropsSchema)({
16
+ source: { type: "string", required: false, description: "replay = embedded sample, no network (default); live = fetch `repo` over `window`.", meta: { constraints: { oneOf: ["replay", "live"] }, ui: { label: "Source", order: 1 } } },
17
+ facts: { type: "json", required: false, description: "Replay payload (a GithubRepoFacts sheet). Defaults to the embedded sample.", meta: { ui: { label: "Facts (replay)", order: 2, consumer: "agent" } } },
18
+ repo: { type: "string", required: false, description: 'Repository "owner/name" (live).', meta: { ui: { label: "Repository", order: 3 } } },
19
+ window: { type: "json", required: false, description: "UTC { startISO, endISO } — Monday..Sunday. Omit → the last complete week (live).", meta: { ui: { label: "Window", order: 4, consumer: "agent" } } },
20
+ connectionId: { type: "string", required: false, description: "Host connection id for the base URL + keychain token (live).", meta: { ui: { label: "Connection", order: 5 } } },
21
+ tokenRef: { type: "string", required: false, description: "Explicit SecretRef (e.g. env:GITHUB_TOKEN). Falls through to the connection token when unresolvable.", meta: { ui: { label: "Token ref", order: 6 } } },
22
+ commitDetails: { type: "string", required: false, description: "auto (full when authenticated, none anonymous), full, or none.", meta: { constraints: { oneOf: ["auto", "full", "none"] }, ui: { label: "Commit details", order: 7 } } },
23
+ maxCommits: { type: "number", required: false, description: "Per-window commit cap.", meta: { constraints: { min: 1, max: 5000 }, ui: { label: "Max commits", order: 8 } } },
24
+ callBudget: { type: "number", required: false, description: "Hard cap on API calls per render.", meta: { constraints: { min: 1, max: 5000 }, ui: { label: "Call budget", order: 9 } } },
25
+ livePreview: { type: "boolean", required: false, description: "Fetch + render real data on every editor preview (not just Make). Off by default so prop changes don't hammer the API.", meta: { ui: { label: "Live preview (fetch on preview)", order: 10 } } },
26
+ kpiKeys: { type: "string[]", required: false, description: "Override the adaptive KPI selection (ordered keys).", meta: { ui: { label: "KPI keys", order: 11, consumer: "agent" } } },
27
+ notableCount: { type: "number", required: false, description: "Notable-commit feed length.", meta: { constraints: { min: 1, max: 12 }, ui: { label: "Notable count", order: 12 } } },
28
+ areaDepth: { type: "number", required: false, description: "Path segments defining a changed area.", meta: { constraints: { min: 1, max: 4 }, ui: { label: "Area depth", order: 13 } } },
29
+ topContributors: { type: "number", required: false, description: "Top-N contributors.", meta: { constraints: { min: 1, max: 12 }, ui: { label: "Top contributors", order: 14 } } },
30
+ timings: { type: "group", required: false, description: "Per-beat durations in ms.", meta: { ui: { label: "Beat timings", collapsedByDefault: true, consumer: "agent" } } },
31
+ crossfadeMs: { type: "number", required: false, description: "Cross-fade between beats (ms). 0 = hard cut.", meta: { constraints: { min: 0, max: 2000 }, ui: { label: "Cross-fade" } } },
32
+ renderMode: { type: "string", required: false, description: '"premium" (default) alpha-fade reveals; "light" geq-free pops.', meta: { constraints: { oneOf: ["light", "premium"] }, ui: { label: "Render mode" } } },
33
+ });
34
+ /** Live window: the explicit prop, else the last complete Mon..Sun week (UTC).
35
+ * Capability-tier + inherently non-deterministic, so it reads the clock here. */
36
+ function effectiveWindow(props) {
37
+ var _a;
38
+ return (_a = props.window) !== null && _a !== void 0 ? _a : (0, week_math_1.lastFullWeek)(new Date().toISOString().slice(0, 10));
39
+ }
40
+ /** The full fetch/replay → derive → render, shared by `render` (Make) and
41
+ * `renderLite` when the user opted into a live preview. */
42
+ async function renderPulse(props, ctx) {
43
+ var _a, _b, _c, _d, _e, _f;
44
+ const source = (_a = props.source) !== null && _a !== void 0 ? _a : "replay";
45
+ if (source !== "replay" && source !== "live") {
46
+ throw new Error(`github/weekly-pulse: source must be "replay" or "live", got ${JSON.stringify(source)}.`);
47
+ }
48
+ let facts;
49
+ if (source === "replay") {
50
+ const f = (_b = props.facts) !== null && _b !== void 0 ? _b : sample_facts_1.SAMPLE_FACTS;
51
+ if (f === null || typeof f !== "object" || Array.isArray(f)) {
52
+ throw new Error("github/weekly-pulse: replay `facts` must be a GithubRepoFacts object.");
53
+ }
54
+ facts = f;
55
+ }
56
+ else {
57
+ const repo = (_c = props.repo) !== null && _c !== void 0 ? _c : "FFmpeg/FFmpeg";
58
+ if (!/^[^/\s]+\/[^/\s]+$/.test(repo)) {
59
+ throw new Error(`github/weekly-pulse: repo must be "owner/name", got ${JSON.stringify(repo)}.`);
60
+ }
61
+ const window = effectiveWindow(props);
62
+ const commitDetails = (_d = props.commitDetails) !== null && _d !== void 0 ? _d : "auto";
63
+ const maxCommits = (_e = props.maxCommits) !== null && _e !== void 0 ? _e : 500;
64
+ const callBudget = (_f = props.callBudget) !== null && _f !== void 0 ? _f : 300;
65
+ try {
66
+ const { token, baseUrl } = await (0, repo_facts_fetcher_1.resolveGithubAccess)({ tokenRef: props.tokenRef, connectionId: props.connectionId }, ctx);
67
+ const client = new client_1.GithubClient({ baseUrl, token, callBudget });
68
+ facts = await (0, build_facts_1.buildRepoFacts)(client, { repo, window, commitDetails, maxCommits });
69
+ }
70
+ catch (e) {
71
+ return (0, template_utils_1.makeErrorMosaic)(`GitHub Weekly Pulse: fetch failed for ${repo} (${window.startISO}..${window.endISO}): ${e instanceof Error ? e.message : String(e)}`, { width: Math.max(1, Math.round(ctx.target.width)), height: Math.max(1, Math.round(ctx.target.height)), title: "GitHub Weekly Pulse", errorCode: "GITHUB_FETCH_FAILED", backgroundColor: "#000000" });
72
+ }
73
+ }
74
+ const pulse = (0, derive_pulse_1.deriveWeeklyPulse)(facts, {
75
+ kpiKeys: props.kpiKeys,
76
+ notableCount: props.notableCount,
77
+ areaDepth: props.areaDepth,
78
+ topContributors: props.topContributors,
79
+ });
80
+ return (0, runner_1.buildPulsePipeline)(pulse, { timings: props.timings, crossfadeMs: props.crossfadeMs, renderMode: props.renderMode }, ctx);
81
+ }
82
+ /** The network-free "ready" card shown on editor previews (renderLite). Themed,
83
+ * friendly, and honest about what a Make will do — NO fetch, NO side effects. */
84
+ function readyCard(props, ctx) {
85
+ var _a, _b;
86
+ const W = Math.max(1, Math.round(ctx.target.width));
87
+ const source = (_a = props.source) !== null && _a !== void 0 ? _a : "replay";
88
+ const repo = (_b = props.repo) !== null && _b !== void 0 ? _b : "FFmpeg/FFmpeg";
89
+ const ew = effectiveWindow(props);
90
+ const win = props.window ? `${ew.startISO} - ${ew.endISO}` : `${ew.startISO} - ${ew.endISO} (auto)`;
91
+ const body = source === "live"
92
+ ? [`Live - fetches ${repo} on render`, `Window: ${win}`, "Press Render to build the full pulse.", "Set livePreview to fetch + preview real data here."]
93
+ : ["Replay - the embedded sample", "Press Render to build the full pulse.", "Switch source to 'live' + set a repo to fetch real data."];
94
+ const titleFont = Math.max(18, Math.min(52, Math.round(W / 20)));
95
+ const bodyFont = Math.max(12, Math.min(24, Math.round(W / 44)));
96
+ const layers = [
97
+ { content: { kind: "literal", text: "GITHUB WEEKLY PULSE" }, style: { fontSize: titleFont, fontColor: "#2ea043" }, placement: { hAlign: "left", vAlign: "top", xExpr: "w*0.07", yExpr: "h*0.16" } },
98
+ { content: { kind: "literal", text: "ready" }, style: { fontSize: bodyFont, fontColor: "#8b949e" }, placement: { hAlign: "left", vAlign: "top", xExpr: "w*0.07", yExpr: "h*0.30" } },
99
+ ...body.map((text, i) => ({
100
+ content: { kind: "literal", text },
101
+ style: { fontSize: bodyFont, fontColor: "#c9d1d9" },
102
+ placement: { hAlign: "left", vAlign: "top", xExpr: "w*0.07", yExpr: `h*${(0.44 + i * 0.11).toFixed(2)}` },
103
+ })),
104
+ ];
105
+ return {
106
+ kind: "mosaic_document",
107
+ version: 1,
108
+ m0: (0, dsl_stdlib_1.toM0String)("F", "weeklyPulseReady"),
109
+ assets: {},
110
+ sources: [{ type: "text", visual: { backgroundColor: "#0d1117" }, layers }],
111
+ };
112
+ }
113
+ // Plain-object template (like the pulse runner): it returns a duration-follows-
114
+ // timings pipeline, so it opts out of defineMosaicTemplate's fixed-duration
115
+ // timing assertion. Capability-tier — the host threads secrets/connections onto
116
+ // ctx, which renderPulse passes straight to resolveGithubAccess.
117
+ exports.GithubWeeklyPulse = {
118
+ id: (0, types_1.asTemplateId)("@m0saic/github/weekly-pulse/v1"),
119
+ label: "GitHub Weekly Pulse",
120
+ version: 1,
121
+ description: "Self-contained, app-runnable Weekly Pulse: fetches a GitHub repo's week from prop input (repo + window + token), derives the pulse sheet, and renders all 8 beats — one capability-tier template, no pipeline wiring. Replay mode (default) is network-free; live mode fetches over the GitHub REST API and degrades to an error frame on failure. Editor previews use a network-free renderLite card.",
122
+ capabilities: { tier: "capability", caps: { net: { fetch: true } } },
123
+ tags: ["data-viz", "github", "ffmpeg-pulse", "pulse", "live", "animated", "developers", "analysts", "weekly", "report"],
124
+ outputHints: { format: { kind: "video", container: "mp4" }, width: 1920, height: 1080, fps: 30, durationMs: 38000, note: "The full 8-beat weekly pulse. Live mode fetches GitHub; replay uses the embedded sample; previews show a renderLite card." },
125
+ propsSchema,
126
+ defaultProps: {
127
+ source: "replay",
128
+ facts: sample_facts_1.SAMPLE_FACTS,
129
+ repo: "FFmpeg/FFmpeg",
130
+ connectionId: String(connection_1.GITHUB_CONNECTION_ID),
131
+ tokenRef: "",
132
+ commitDetails: "auto",
133
+ maxCommits: 500,
134
+ callBudget: 300,
135
+ livePreview: false,
136
+ notableCount: 5,
137
+ areaDepth: 1,
138
+ topContributors: 5,
139
+ crossfadeMs: 350,
140
+ renderMode: "premium",
141
+ },
142
+ async render(props, ctx) {
143
+ return renderPulse(props, ctx);
144
+ },
145
+ /** Preview / design hot path — NO network unless the user opted into livePreview. */
146
+ async renderLite(props, ctx) {
147
+ if (props.livePreview)
148
+ return renderPulse(props, ctx); // power-user opt-in: fetch + preview real data
149
+ return readyCard(props, ctx);
150
+ },
151
+ };
152
+ (0, template_utils_1.registerTemplate)(exports.GithubWeeklyPulse);
153
+ exports.default = exports.GithubWeeklyPulse;
@@ -0,0 +1,2 @@
1
+ export * from "./v1/weekly-pulse-adapter";
2
+ export * from "./v1/derive-pulse";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./v1/weekly-pulse-adapter"), exports);
18
+ __exportStar(require("./v1/derive-pulse"), exports);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `deriveWeeklyPulse` — the PURE core of the weekly-pulse-adapter (F5 Seam C).
3
+ *
4
+ * A deterministic function of `GithubRepoFacts` + preview props → a `WeeklyPulse`
5
+ * sheet. NO clock, NO network, NO randomness. Every derivation below is the
6
+ * determinism contract; the adapter's snapshot tests lock the exact output.
7
+ *
8
+ * Coverage-aware by design: a mirror repo (no PR/issue KPIs) or an anonymous
9
+ * fetch (`commitDetails:"none"` → commit-basis donut, 0 additions/deletions)
10
+ * degrades honestly — the basis is labeled, never faked.
11
+ */
12
+ import type { WeeklyPulse } from "../../../hero/ffmpeg-pulse/_shared/pulse-data";
13
+ import type { GithubRepoFacts } from "../../repo-facts-fetcher/v1/facts";
14
+ export type DeriveWeeklyPulseProps = {
15
+ /** Override the adaptive KPI selection (ordered keys). */
16
+ kpiKeys?: string[];
17
+ /** Number of notable commits (default 5). */
18
+ notableCount?: number;
19
+ /** Path segments that define a "changed area" (default 1). */
20
+ areaDepth?: number;
21
+ /** Top-N contributors (default 5). */
22
+ topContributors?: number;
23
+ };
24
+ export declare function deriveWeeklyPulse(facts: GithubRepoFacts, props?: DeriveWeeklyPulseProps): WeeklyPulse;
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * `deriveWeeklyPulse` — the PURE core of the weekly-pulse-adapter (F5 Seam C).
4
+ *
5
+ * A deterministic function of `GithubRepoFacts` + preview props → a `WeeklyPulse`
6
+ * sheet. NO clock, NO network, NO randomness. Every derivation below is the
7
+ * determinism contract; the adapter's snapshot tests lock the exact output.
8
+ *
9
+ * Coverage-aware by design: a mirror repo (no PR/issue KPIs) or an anonymous
10
+ * fetch (`commitDetails:"none"` → commit-basis donut, 0 additions/deletions)
11
+ * degrades honestly — the basis is labeled, never faked.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.deriveWeeklyPulse = deriveWeeklyPulse;
15
+ const pulse_data_1 = require("../../../hero/ffmpeg-pulse/_shared/pulse-data");
16
+ const week_math_1 = require("../../week-math");
17
+ const DAY_LABELS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
18
+ /** Notable-commit keyword table — case-insensitive, FIRST match wins; both
19
+ * classifies `kind` and sets `signal` + a score boost (F5 Seam C). */
20
+ const KEYWORD_RULES = [
21
+ { re: /security|cve|overflow/i, kind: "fix", signal: "warn", boost: 6 },
22
+ { re: /revert|regression/i, kind: "fix", signal: "warn", boost: 4 },
23
+ { re: /fix|leak|crash/i, kind: "fix", signal: "win", boost: 2 },
24
+ { re: /\b(add|support|new|implement)/i, kind: "feat", signal: "neutral", boost: 2 },
25
+ { re: /faster|optimi|simd|speed/i, kind: "perf", signal: "win", boost: 3 },
26
+ { re: /docs?\b/i, kind: "docs", signal: "neutral", boost: 0 },
27
+ { re: /test|fate/i, kind: "test", signal: "neutral", boost: 0 },
28
+ ];
29
+ function classify(headline) {
30
+ for (const r of KEYWORD_RULES)
31
+ if (r.re.test(headline))
32
+ return r;
33
+ return { kind: "chore", signal: "neutral", boost: 0 };
34
+ }
35
+ /** `area: description` prefix of a commit subject, capped to `areaDepth` segments. */
36
+ function messagePrefix(headline, areaDepth) {
37
+ const m = /^([\w/,.-]+):/.exec(headline);
38
+ return m ? m[1].split("/").slice(0, areaDepth).join("/") : undefined;
39
+ }
40
+ /** The dominant changed directory of a commit (fallback: message prefix). */
41
+ function topChangedDir(commit, areaDepth) {
42
+ var _a, _b;
43
+ const counts = new Map();
44
+ for (const f of (_a = commit.files) !== null && _a !== void 0 ? _a : []) {
45
+ const seg = f.path.split("/").slice(0, areaDepth).join("/");
46
+ counts.set(seg, ((_b = counts.get(seg)) !== null && _b !== void 0 ? _b : 0) + 1);
47
+ }
48
+ if (counts.size) {
49
+ return [...counts.entries()].sort((a, b) => b[1] - a[1] || (a[0] < b[0] ? -1 : 1))[0][0];
50
+ }
51
+ return messagePrefix(commit.headline, areaDepth);
52
+ }
53
+ /** Top-6 areas + an aggregated `other`, colored from the shared PULSE_AREA ramp. */
54
+ function buildByArea(areas) {
55
+ const out = areas.slice(0, 6).map((a, i) => ({ area: a.area, files: a.files, color: (0, pulse_data_1.PULSE_AREA)(i) }));
56
+ const otherFiles = areas.slice(6).reduce((s, a) => s + a.files, 0);
57
+ if (otherFiles > 0)
58
+ out.push({ area: "other", files: otherFiles, color: (0, pulse_data_1.PULSE_AREA)(5) });
59
+ return out;
60
+ }
61
+ /** direction (from the sign) + deltaPct (omitted when the base is 0 / unknown). */
62
+ function deltaFields(cur, prev) {
63
+ if (cur === undefined || prev === undefined)
64
+ return {};
65
+ const diff = cur - prev;
66
+ const out = { direction: diff > 0 ? "up" : diff < 0 ? "down" : "flat" };
67
+ if (prev !== 0)
68
+ out.deltaPct = Math.round((diff / prev) * 1000) / 10;
69
+ return out;
70
+ }
71
+ function deriveWeeklyPulse(facts, props = {}) {
72
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
73
+ const areaDepth = Math.max(1, Math.floor((_a = props.areaDepth) !== null && _a !== void 0 ? _a : 1));
74
+ const notableCount = Math.max(1, Math.floor((_b = props.notableCount) !== null && _b !== void 0 ? _b : 5));
75
+ const topContributors = Math.max(1, Math.floor((_c = props.topContributors) !== null && _c !== void 0 ? _c : 5));
76
+ const cov = facts.coverage;
77
+ const hasDetails = cov.commitDetails === "full";
78
+ const windowCommits = facts.commits;
79
+ const windowMonday = (0, week_math_1.mondayOfISO)(facts.window.startISO);
80
+ const prevMonday = (0, week_math_1.addDaysISO)(windowMonday, -7);
81
+ const haveTrailing = facts.trailing8WeekCommitsLite.length > 0;
82
+ // ── period ─────────────────────────────────────────────────────
83
+ const period = { weekNumber: (0, week_math_1.isoWeekNumber)(facts.window.startISO), startISO: facts.window.startISO, endISO: facts.window.endISO };
84
+ // ── activity.days + peak (committer-date bucketed, Mon..Sun) ────
85
+ const dayCounts = [0, 0, 0, 0, 0, 0, 0];
86
+ for (const c of windowCommits)
87
+ dayCounts[(0, week_math_1.isoDayOfWeek)(c.committedISO)]++;
88
+ const days = DAY_LABELS.map((label, i) => ({ label, commits: dayCounts[i] }));
89
+ let peakIdx = 0;
90
+ for (let i = 1; i < 7; i++)
91
+ if (dayCounts[i] > dayCounts[peakIdx])
92
+ peakIdx = i; // tie → earliest
93
+ const peakDateISO = (0, week_math_1.addDaysISO)(windowMonday, peakIdx);
94
+ const peak = { dayLabel: DAY_LABELS[peakIdx], dateISO: peakDateISO, commits: dayCounts[peakIdx] };
95
+ // ── activity.grid (trailing 8 Mon-weeks, entirely from the lite list) ──
96
+ const weekStarts = [];
97
+ for (let w = 7; w >= 0; w--)
98
+ weekStarts.push((0, week_math_1.addDaysISO)(windowMonday, -7 * w));
99
+ const gridCounts = DAY_LABELS.map(() => weekStarts.map(() => 0));
100
+ for (const c of facts.trailing8WeekCommitsLite) {
101
+ const col = weekStarts.indexOf((0, week_math_1.mondayOfISO)(c.committedISO));
102
+ if (col >= 0)
103
+ gridCounts[(0, week_math_1.isoDayOfWeek)(c.committedISO)][col]++;
104
+ }
105
+ const grid = {
106
+ weekLabels: weekStarts.map((ws) => "W" + (0, week_math_1.isoWeekNumber)(ws)),
107
+ rows: DAY_LABELS.map((label, r) => ({ label, values: gridCounts[r] })),
108
+ };
109
+ // ── contributors (window commits grouped by login ?? name) ─────
110
+ const groups = new Map();
111
+ for (const c of windowCommits) {
112
+ const key = (_d = c.authorLogin) !== null && _d !== void 0 ? _d : c.authorName;
113
+ let g = groups.get(key);
114
+ if (!g) {
115
+ g = { login: (_e = c.authorLogin) !== null && _e !== void 0 ? _e : "", name: c.authorName, avatarUrl: c.avatarUrl, commits: 0, additions: 0, deletions: 0 };
116
+ groups.set(key, g);
117
+ }
118
+ g.commits++;
119
+ if (hasDetails) {
120
+ g.additions += (_f = c.additions) !== null && _f !== void 0 ? _f : 0;
121
+ g.deletions += (_g = c.deletions) !== null && _g !== void 0 ? _g : 0;
122
+ }
123
+ }
124
+ const contribRows = [...groups.entries()]
125
+ .map(([key, g]) => ({ key, g }))
126
+ .sort((a, b) => b.g.commits - a.g.commits || b.g.additions - a.g.additions || (a.key < b.key ? -1 : 1))
127
+ .slice(0, topContributors)
128
+ .map(({ g }, i) => ({ rank: i + 1, login: g.login, name: g.name, ...(g.avatarUrl ? { avatarUrl: g.avatarUrl } : {}), commits: g.commits, additions: g.additions, deletions: g.deletions }));
129
+ const contributorsThis = groups.size;
130
+ const prevAuthors = new Set();
131
+ let prevWeekCommits = 0;
132
+ for (const c of facts.trailing8WeekCommitsLite) {
133
+ if ((0, week_math_1.mondayOfISO)(c.committedISO) === prevMonday) {
134
+ prevWeekCommits++;
135
+ prevAuthors.add((_h = c.authorLogin) !== null && _h !== void 0 ? _h : c.authorName);
136
+ }
137
+ }
138
+ const prevCommitsArg = haveTrailing ? prevWeekCommits : undefined;
139
+ const prevContribArg = haveTrailing ? prevAuthors.size : undefined;
140
+ // ── scalar aggregates ──────────────────────────────────────────
141
+ const totalCommits = windowCommits.length;
142
+ const sumAdds = hasDetails ? windowCommits.reduce((s, c) => { var _a; return s + ((_a = c.additions) !== null && _a !== void 0 ? _a : 0); }, 0) : undefined;
143
+ const sumDels = hasDetails ? windowCommits.reduce((s, c) => { var _a; return s + ((_a = c.deletions) !== null && _a !== void 0 ? _a : 0); }, 0) : undefined;
144
+ const wcf = facts.weeklyCodeFrequency;
145
+ const cfCur = wcf && wcf.length ? wcf[wcf.length - 1] : undefined;
146
+ const cfPrev = wcf && wcf.length >= 2 ? wcf[wcf.length - 2] : undefined;
147
+ // ── changes (full = distinct changed paths by area; degraded = message-prefix commit counts) ──
148
+ let totalFiles;
149
+ let byArea;
150
+ if (hasDetails) {
151
+ const distinct = new Set();
152
+ const areaSets = new Map();
153
+ for (const c of windowCommits)
154
+ for (const f of (_j = c.files) !== null && _j !== void 0 ? _j : []) {
155
+ distinct.add(f.path);
156
+ const seg = f.path.split("/").slice(0, areaDepth).join("/");
157
+ let set = areaSets.get(seg);
158
+ if (!set) {
159
+ set = new Set();
160
+ areaSets.set(seg, set);
161
+ }
162
+ set.add(f.path);
163
+ }
164
+ totalFiles = distinct.size;
165
+ byArea = buildByArea([...areaSets.entries()].map(([area, set]) => ({ area, files: set.size })).sort((a, b) => b.files - a.files || (a.area < b.area ? -1 : 1)));
166
+ }
167
+ else {
168
+ const areaCounts = new Map();
169
+ for (const c of windowCommits) {
170
+ const seg = (_k = messagePrefix(c.headline, areaDepth)) !== null && _k !== void 0 ? _k : "other";
171
+ areaCounts.set(seg, ((_l = areaCounts.get(seg)) !== null && _l !== void 0 ? _l : 0) + 1);
172
+ }
173
+ totalFiles = windowCommits.length; // basis = commits, not files (labeled in the rail)
174
+ byArea = buildByArea([...areaCounts.entries()].map(([area, files]) => ({ area, files })).sort((a, b) => b.files - a.files || (a.area < b.area ? -1 : 1)));
175
+ }
176
+ // ── KPI pool (each entry present only when its inputs exist) ────
177
+ const pool = {};
178
+ const addKpi = (k) => { pool[k.key] = k; };
179
+ addKpi({ key: "commits", label: "Commits", value: totalCommits, sublabel: "vs last week", ...deltaFields(totalCommits, prevCommitsArg) });
180
+ addKpi({ key: "totalCommits", label: "Total Commits", value: totalCommits, sublabel: "vs last week", ...deltaFields(totalCommits, prevCommitsArg) });
181
+ addKpi({ key: "contributors", label: "Contributors", value: contributorsThis, sublabel: "vs last week", ...deltaFields(contributorsThis, prevContribArg) });
182
+ if (sumAdds !== undefined)
183
+ addKpi({ key: "additions", label: "Additions", value: sumAdds, sublabel: "vs last week", ...deltaFields(cfCur === null || cfCur === void 0 ? void 0 : cfCur.additions, cfPrev === null || cfPrev === void 0 ? void 0 : cfPrev.additions) });
184
+ if (sumDels !== undefined)
185
+ addKpi({ key: "deletions", label: "Deletions", value: sumDels, sublabel: "vs last week", ...deltaFields(cfCur ? Math.abs(cfCur.deletions) : undefined, cfPrev ? Math.abs(cfPrev.deletions) : undefined) });
186
+ if (sumAdds !== undefined && sumDels !== undefined)
187
+ addKpi({ key: "netChanges", label: "Net Changes", value: sumAdds - sumDels, display: (sumAdds - sumDels >= 0 ? "+" : "") + (sumAdds - sumDels).toLocaleString("en-US") });
188
+ if (hasDetails) {
189
+ addKpi({ key: "totalFiles", label: "Total Files Changed", value: totalFiles });
190
+ addKpi({ key: "filesChanged", label: "Files Changed", value: totalFiles });
191
+ }
192
+ if (cov.starDeltas && ((_m = facts.stars) === null || _m === void 0 ? void 0 : _m.deltaInWindow) !== undefined) {
193
+ addKpi({ key: "starsDelta", label: "Stars Δ", value: facts.stars.deltaInWindow, display: "+" + facts.stars.deltaInWindow, sublabel: "vs last week", ...deltaFields(facts.stars.deltaInWindow, facts.stars.deltaPrevWindow) });
194
+ }
195
+ if (cov.pulls && facts.pulls) {
196
+ addKpi({ key: "pullRequests", label: "Pull Requests", value: facts.pulls.openedInWindow });
197
+ addKpi({ key: "mergedPrs", label: "Merged PRs", value: facts.pulls.mergedInWindow });
198
+ }
199
+ if (cov.issues && facts.issues)
200
+ addKpi({ key: "openIssues", label: "Open Issues", value: facts.issues.open });
201
+ const activeDays = dayCounts.filter((c) => c > 0).length;
202
+ const avg = totalCommits / 7;
203
+ addKpi({ key: "peakDay", label: "Peak Day", value: peak.commits, sublabel: `${(0, pulse_data_1.monthDay)(peakDateISO)}, ${(0, week_math_1.parseISODate)(peakDateISO).y}` });
204
+ addKpi({ key: "dailyAvg", label: "Daily Avg", value: Math.round(avg), display: avg.toFixed(1) });
205
+ addKpi({ key: "activeDays", label: "Active Days", value: activeDays, display: `${activeDays}/7`, sublabel: `${Math.round((activeDays / 7) * 100)}% of week` });
206
+ const reviewed = windowCommits.filter((c) => { var _a, _b, _c; return ((_c = (_b = (_a = c.trailers) === null || _a === void 0 ? void 0 : _a["Reviewed-by"]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0; }).length;
207
+ const reviewPct = totalCommits ? Math.round((reviewed / totalCommits) * 100) : 0;
208
+ addKpi({ key: "reviewCoverage", label: "Review Coverage", value: reviewPct, display: `${reviewPct}%`, sublabel: "of commits" });
209
+ // ── adaptive kpi selection (cap 8) ─────────────────────────────
210
+ const KPI_PRIORITY = ["commits", "contributors", "additions", "deletions", "filesChanged", "starsDelta", "pullRequests", "mergedPrs", "openIssues"];
211
+ const order = props.kpiKeys && props.kpiKeys.length ? props.kpiKeys : KPI_PRIORITY;
212
+ const kpis = order.map((k) => pool[k]).filter((k) => Boolean(k)).slice(0, 8);
213
+ // ── notable (deterministic score → top N, ties by sha asc) ─────
214
+ const notableItems = windowCommits
215
+ .map((c) => {
216
+ var _a, _b, _c, _d;
217
+ const cls = classify(c.headline);
218
+ const score = 2 * Math.log(1 + ((_a = c.additions) !== null && _a !== void 0 ? _a : 0) + ((_b = c.deletions) !== null && _b !== void 0 ? _b : 0)) + 0.5 * ((_d = (_c = c.files) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) + cls.boost;
219
+ return { c, cls, score };
220
+ })
221
+ .sort((a, b) => b.score - a.score || (a.c.sha < b.c.sha ? -1 : 1))
222
+ .slice(0, notableCount)
223
+ .map(({ c, cls }) => {
224
+ var _a, _b;
225
+ const reviewers = [...new Set((_b = (_a = c.trailers) === null || _a === void 0 ? void 0 : _a["Reviewed-by"]) !== null && _b !== void 0 ? _b : [])].slice(0, 2);
226
+ const area = topChangedDir(c, areaDepth);
227
+ return {
228
+ kind: cls.kind,
229
+ title: c.headline,
230
+ hash: c.sha,
231
+ author: c.authorName,
232
+ dateISO: c.committedISO.slice(0, 10),
233
+ ...(area ? { area } : {}),
234
+ signal: cls.signal,
235
+ ...(reviewers.length ? { reviewers } : {}),
236
+ // `pr` intentionally omitted — the facts sheet carries no commit→PR mapping.
237
+ };
238
+ });
239
+ // ── rails (fixed key-lists filtered to the available pool) ─────
240
+ const railFrom = (keys) => keys.map((k) => pool[k]).filter((k) => Boolean(k));
241
+ return {
242
+ repo: { name: facts.repo.name, fullName: facts.repo.fullName },
243
+ period,
244
+ kpis,
245
+ activity: { days, peak, grid, rail: railFrom(["totalCommits", "peakDay", "dailyAvg", "activeDays"]) },
246
+ contributors: { rows: contribRows, rail: railFrom(["totalCommits", "contributors", "additions", "deletions", "starsDelta"]) },
247
+ changes: { totalFiles, byArea, rail: hasDetails ? railFrom(["totalFiles", "additions", "deletions", "netChanges"]) : railFrom(["totalCommits", "contributors"]) },
248
+ notable: { items: notableItems, rail: railFrom(["mergedPrs", "reviewCoverage", "openIssues", "contributors"]) },
249
+ fin: {
250
+ headline: "THANK YOU!",
251
+ subhead: "ANOTHER WEEK OF PROGRESS.",
252
+ kpiStrip: railFrom(["commits", "contributors", "filesChanged", "starsDelta"]),
253
+ qr: { url: "https://www.m0saic.io", caption: "Make your own — m0saic.io" },
254
+ footer: "Built with m0saic",
255
+ },
256
+ };
257
+ }