@ultracart/bq-skill 0.1.2

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 (303) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +952 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +42 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/alarm.d.ts +3 -0
  8. package/dist/commands/alarm.d.ts.map +1 -0
  9. package/dist/commands/alarm.js +146 -0
  10. package/dist/commands/alarm.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +749 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/deck.d.ts +3 -0
  16. package/dist/commands/deck.d.ts.map +1 -0
  17. package/dist/commands/deck.js +567 -0
  18. package/dist/commands/deck.js.map +1 -0
  19. package/dist/commands/dry-run.d.ts +3 -0
  20. package/dist/commands/dry-run.d.ts.map +1 -0
  21. package/dist/commands/dry-run.js +105 -0
  22. package/dist/commands/dry-run.js.map +1 -0
  23. package/dist/commands/history.d.ts +3 -0
  24. package/dist/commands/history.d.ts.map +1 -0
  25. package/dist/commands/history.js +127 -0
  26. package/dist/commands/history.js.map +1 -0
  27. package/dist/commands/init.d.ts +3 -0
  28. package/dist/commands/init.d.ts.map +1 -0
  29. package/dist/commands/init.js +302 -0
  30. package/dist/commands/init.js.map +1 -0
  31. package/dist/commands/install-skill.d.ts +3 -0
  32. package/dist/commands/install-skill.d.ts.map +1 -0
  33. package/dist/commands/install-skill.js +132 -0
  34. package/dist/commands/install-skill.js.map +1 -0
  35. package/dist/commands/list.d.ts +3 -0
  36. package/dist/commands/list.d.ts.map +1 -0
  37. package/dist/commands/list.js +89 -0
  38. package/dist/commands/list.js.map +1 -0
  39. package/dist/commands/query.d.ts +3 -0
  40. package/dist/commands/query.d.ts.map +1 -0
  41. package/dist/commands/query.js +152 -0
  42. package/dist/commands/query.js.map +1 -0
  43. package/dist/commands/render.d.ts +3 -0
  44. package/dist/commands/render.d.ts.map +1 -0
  45. package/dist/commands/render.js +107 -0
  46. package/dist/commands/render.js.map +1 -0
  47. package/dist/commands/run-all.d.ts +3 -0
  48. package/dist/commands/run-all.d.ts.map +1 -0
  49. package/dist/commands/run-all.js +285 -0
  50. package/dist/commands/run-all.js.map +1 -0
  51. package/dist/commands/run.d.ts +3 -0
  52. package/dist/commands/run.d.ts.map +1 -0
  53. package/dist/commands/run.js +321 -0
  54. package/dist/commands/run.js.map +1 -0
  55. package/dist/commands/schema.d.ts +3 -0
  56. package/dist/commands/schema.d.ts.map +1 -0
  57. package/dist/commands/schema.js +271 -0
  58. package/dist/commands/schema.js.map +1 -0
  59. package/dist/commands/validate.d.ts +3 -0
  60. package/dist/commands/validate.d.ts.map +1 -0
  61. package/dist/commands/validate.js +109 -0
  62. package/dist/commands/validate.js.map +1 -0
  63. package/dist/lib/alarm-notify.d.ts +16 -0
  64. package/dist/lib/alarm-notify.d.ts.map +1 -0
  65. package/dist/lib/alarm-notify.js +312 -0
  66. package/dist/lib/alarm-notify.js.map +1 -0
  67. package/dist/lib/alarm-state.d.ts +26 -0
  68. package/dist/lib/alarm-state.d.ts.map +1 -0
  69. package/dist/lib/alarm-state.js +118 -0
  70. package/dist/lib/alarm-state.js.map +1 -0
  71. package/dist/lib/alarm.d.ts +28 -0
  72. package/dist/lib/alarm.d.ts.map +1 -0
  73. package/dist/lib/alarm.js +215 -0
  74. package/dist/lib/alarm.js.map +1 -0
  75. package/dist/lib/analysis.d.ts +16 -0
  76. package/dist/lib/analysis.d.ts.map +1 -0
  77. package/dist/lib/analysis.js +134 -0
  78. package/dist/lib/analysis.js.map +1 -0
  79. package/dist/lib/bigquery.d.ts +55 -0
  80. package/dist/lib/bigquery.d.ts.map +1 -0
  81. package/dist/lib/bigquery.js +321 -0
  82. package/dist/lib/bigquery.js.map +1 -0
  83. package/dist/lib/config-writer.d.ts +3 -0
  84. package/dist/lib/config-writer.d.ts.map +1 -0
  85. package/dist/lib/config-writer.js +60 -0
  86. package/dist/lib/config-writer.js.map +1 -0
  87. package/dist/lib/config.d.ts +63 -0
  88. package/dist/lib/config.d.ts.map +1 -0
  89. package/dist/lib/config.js +151 -0
  90. package/dist/lib/config.js.map +1 -0
  91. package/dist/lib/dashboard.d.ts +3 -0
  92. package/dist/lib/dashboard.d.ts.map +1 -0
  93. package/dist/lib/dashboard.js +468 -0
  94. package/dist/lib/dashboard.js.map +1 -0
  95. package/dist/lib/deck.d.ts +58 -0
  96. package/dist/lib/deck.d.ts.map +1 -0
  97. package/dist/lib/deck.js +232 -0
  98. package/dist/lib/deck.js.map +1 -0
  99. package/dist/lib/deliver-email.d.ts +14 -0
  100. package/dist/lib/deliver-email.d.ts.map +1 -0
  101. package/dist/lib/deliver-email.js +360 -0
  102. package/dist/lib/deliver-email.js.map +1 -0
  103. package/dist/lib/deliver-slack.d.ts +6 -0
  104. package/dist/lib/deliver-slack.d.ts.map +1 -0
  105. package/dist/lib/deliver-slack.js +73 -0
  106. package/dist/lib/deliver-slack.js.map +1 -0
  107. package/dist/lib/deliver.d.ts +10 -0
  108. package/dist/lib/deliver.d.ts.map +1 -0
  109. package/dist/lib/deliver.js +95 -0
  110. package/dist/lib/deliver.js.map +1 -0
  111. package/dist/lib/llm/anthropic.d.ts +7 -0
  112. package/dist/lib/llm/anthropic.d.ts.map +1 -0
  113. package/dist/lib/llm/anthropic.js +69 -0
  114. package/dist/lib/llm/anthropic.js.map +1 -0
  115. package/dist/lib/llm/bedrock.d.ts +7 -0
  116. package/dist/lib/llm/bedrock.d.ts.map +1 -0
  117. package/dist/lib/llm/bedrock.js +67 -0
  118. package/dist/lib/llm/bedrock.js.map +1 -0
  119. package/dist/lib/llm/gemini.d.ts +7 -0
  120. package/dist/lib/llm/gemini.d.ts.map +1 -0
  121. package/dist/lib/llm/gemini.js +67 -0
  122. package/dist/lib/llm/gemini.js.map +1 -0
  123. package/dist/lib/llm/index.d.ts +5 -0
  124. package/dist/lib/llm/index.d.ts.map +1 -0
  125. package/dist/lib/llm/index.js +61 -0
  126. package/dist/lib/llm/index.js.map +1 -0
  127. package/dist/lib/llm/models.d.ts +5 -0
  128. package/dist/lib/llm/models.d.ts.map +1 -0
  129. package/dist/lib/llm/models.js +33 -0
  130. package/dist/lib/llm/models.js.map +1 -0
  131. package/dist/lib/llm/openai.d.ts +8 -0
  132. package/dist/lib/llm/openai.d.ts.map +1 -0
  133. package/dist/lib/llm/openai.js +48 -0
  134. package/dist/lib/llm/openai.js.map +1 -0
  135. package/dist/lib/llm/provider.d.ts +28 -0
  136. package/dist/lib/llm/provider.d.ts.map +1 -0
  137. package/dist/lib/llm/provider.js +3 -0
  138. package/dist/lib/llm/provider.js.map +1 -0
  139. package/dist/lib/manifest.d.ts +95 -0
  140. package/dist/lib/manifest.d.ts.map +1 -0
  141. package/dist/lib/manifest.js +105 -0
  142. package/dist/lib/manifest.js.map +1 -0
  143. package/dist/lib/params.d.ts +27 -0
  144. package/dist/lib/params.d.ts.map +1 -0
  145. package/dist/lib/params.js +192 -0
  146. package/dist/lib/params.js.map +1 -0
  147. package/dist/lib/pdf.d.ts +8 -0
  148. package/dist/lib/pdf.d.ts.map +1 -0
  149. package/dist/lib/pdf.js +86 -0
  150. package/dist/lib/pdf.js.map +1 -0
  151. package/dist/lib/renderer.d.ts +17 -0
  152. package/dist/lib/renderer.d.ts.map +1 -0
  153. package/dist/lib/renderer.js +166 -0
  154. package/dist/lib/renderer.js.map +1 -0
  155. package/dist/lib/schema-filter.d.ts +3 -0
  156. package/dist/lib/schema-filter.d.ts.map +1 -0
  157. package/dist/lib/schema-filter.js +49 -0
  158. package/dist/lib/schema-filter.js.map +1 -0
  159. package/dist/lib/template.d.ts +4 -0
  160. package/dist/lib/template.d.ts.map +1 -0
  161. package/dist/lib/template.js +37 -0
  162. package/dist/lib/template.js.map +1 -0
  163. package/dist/lib/validator.d.ts +8 -0
  164. package/dist/lib/validator.d.ts.map +1 -0
  165. package/dist/lib/validator.js +88 -0
  166. package/dist/lib/validator.js.map +1 -0
  167. package/package.json +59 -0
  168. package/schemas/deck.schema.json +122 -0
  169. package/schemas/report-manifest.schema.json +309 -0
  170. package/schemas/tables/README.md +45 -0
  171. package/schemas/tables/ultracart_dw/uc_affiliate_clicks.json +186 -0
  172. package/schemas/tables/ultracart_dw/uc_affiliate_commission_groups.json +317 -0
  173. package/schemas/tables/ultracart_dw/uc_affiliate_ledgers.json +404 -0
  174. package/schemas/tables/ultracart_dw/uc_affiliate_network_pixel_postback_logs.json +166 -0
  175. package/schemas/tables/ultracart_dw/uc_affiliate_network_pixels.json +106 -0
  176. package/schemas/tables/ultracart_dw/uc_affiliate_payments.json +204 -0
  177. package/schemas/tables/ultracart_dw/uc_affiliate_postback_logs.json +90 -0
  178. package/schemas/tables/ultracart_dw/uc_affiliates.json +425 -0
  179. package/schemas/tables/ultracart_dw/uc_auto_orders.json +13848 -0
  180. package/schemas/tables/ultracart_dw/uc_cart_abandons.json +3971 -0
  181. package/schemas/tables/ultracart_dw/uc_conversation_pbx_calls.json +374 -0
  182. package/schemas/tables/ultracart_dw/uc_conversations.json +374 -0
  183. package/schemas/tables/ultracart_dw/uc_coupons.json +1893 -0
  184. package/schemas/tables/ultracart_dw/uc_customers.json +11886 -0
  185. package/schemas/tables/ultracart_dw/uc_fraud_rules.json +239 -0
  186. package/schemas/tables/ultracart_dw/uc_gift_certificates.json +135 -0
  187. package/schemas/tables/ultracart_dw/uc_item_inventory_history.json +79 -0
  188. package/schemas/tables/ultracart_dw/uc_items.json +4437 -0
  189. package/schemas/tables/ultracart_dw/uc_orders.json +6629 -0
  190. package/schemas/tables/ultracart_dw/uc_rotating_transaction_gateway_history.json +271 -0
  191. package/schemas/tables/ultracart_dw/uc_rotating_transaction_gateways.json +416 -0
  192. package/schemas/tables/ultracart_dw/uc_shipping_methods.json +1372 -0
  193. package/schemas/tables/ultracart_dw/uc_storefront_customers.json +261 -0
  194. package/schemas/tables/ultracart_dw/uc_storefront_experiments.json +386 -0
  195. package/schemas/tables/ultracart_dw/uc_storefront_pages.json +513 -0
  196. package/schemas/tables/ultracart_dw/uc_storefront_upsell_offer_events.json +338 -0
  197. package/schemas/tables/ultracart_dw/uc_storefront_upsell_offers.json +431 -0
  198. package/schemas/tables/ultracart_dw/uc_storefront_upsell_paths.json +163 -0
  199. package/schemas/tables/ultracart_dw/uc_storefronts.json +62 -0
  200. package/schemas/tables/ultracart_dw/uc_surveys.json +238 -0
  201. package/schemas/tables/ultracart_dw/uc_workflow_tasks.json +377 -0
  202. package/schemas/tables/ultracart_dw/uc_zoho_desk_tickets.json +1184 -0
  203. package/schemas/tables/ultracart_dw_high/uc_affiliate_clicks.json +186 -0
  204. package/schemas/tables/ultracart_dw_high/uc_affiliate_commission_groups.json +317 -0
  205. package/schemas/tables/ultracart_dw_high/uc_affiliate_ledgers.json +404 -0
  206. package/schemas/tables/ultracart_dw_high/uc_affiliate_network_pixel_postback_logs.json +166 -0
  207. package/schemas/tables/ultracart_dw_high/uc_affiliate_network_pixels.json +106 -0
  208. package/schemas/tables/ultracart_dw_high/uc_affiliate_payments.json +204 -0
  209. package/schemas/tables/ultracart_dw_high/uc_affiliate_postback_logs.json +90 -0
  210. package/schemas/tables/ultracart_dw_high/uc_affiliates.json +425 -0
  211. package/schemas/tables/ultracart_dw_high/uc_auto_orders.json +14332 -0
  212. package/schemas/tables/ultracart_dw_high/uc_cart_abandons.json +4245 -0
  213. package/schemas/tables/ultracart_dw_high/uc_conversation_pbx_calls.json +415 -0
  214. package/schemas/tables/ultracart_dw_high/uc_conversations.json +415 -0
  215. package/schemas/tables/ultracart_dw_high/uc_coupons.json +1893 -0
  216. package/schemas/tables/ultracart_dw_high/uc_customers.json +12250 -0
  217. package/schemas/tables/ultracart_dw_high/uc_fraud_rules.json +239 -0
  218. package/schemas/tables/ultracart_dw_high/uc_gift_certificates.json +135 -0
  219. package/schemas/tables/ultracart_dw_high/uc_item_inventory_history.json +79 -0
  220. package/schemas/tables/ultracart_dw_high/uc_items.json +4437 -0
  221. package/schemas/tables/ultracart_dw_high/uc_orders.json +6871 -0
  222. package/schemas/tables/ultracart_dw_high/uc_rotating_transaction_gateway_history.json +271 -0
  223. package/schemas/tables/ultracart_dw_high/uc_rotating_transaction_gateways.json +416 -0
  224. package/schemas/tables/ultracart_dw_high/uc_shipping_methods.json +1372 -0
  225. package/schemas/tables/ultracart_dw_high/uc_storefront_customers.json +261 -0
  226. package/schemas/tables/ultracart_dw_high/uc_storefront_experiments.json +386 -0
  227. package/schemas/tables/ultracart_dw_high/uc_storefront_pages.json +513 -0
  228. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_offer_events.json +338 -0
  229. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_offers.json +431 -0
  230. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_paths.json +163 -0
  231. package/schemas/tables/ultracart_dw_high/uc_storefronts.json +62 -0
  232. package/schemas/tables/ultracart_dw_high/uc_surveys.json +269 -0
  233. package/schemas/tables/ultracart_dw_high/uc_workflow_tasks.json +377 -0
  234. package/schemas/tables/ultracart_dw_high/uc_zoho_desk_tickets.json +1330 -0
  235. package/schemas/tables/ultracart_dw_low/uc_affiliate_clicks.json +186 -0
  236. package/schemas/tables/ultracart_dw_low/uc_affiliate_commission_groups.json +317 -0
  237. package/schemas/tables/ultracart_dw_low/uc_affiliate_ledgers.json +404 -0
  238. package/schemas/tables/ultracart_dw_low/uc_affiliate_network_pixel_postback_logs.json +166 -0
  239. package/schemas/tables/ultracart_dw_low/uc_affiliate_network_pixels.json +106 -0
  240. package/schemas/tables/ultracart_dw_low/uc_affiliate_payments.json +204 -0
  241. package/schemas/tables/ultracart_dw_low/uc_affiliate_postback_logs.json +90 -0
  242. package/schemas/tables/ultracart_dw_low/uc_affiliates.json +425 -0
  243. package/schemas/tables/ultracart_dw_low/uc_auto_orders.json +13868 -0
  244. package/schemas/tables/ultracart_dw_low/uc_cart_abandons.json +3971 -0
  245. package/schemas/tables/ultracart_dw_low/uc_conversation_pbx_calls.json +374 -0
  246. package/schemas/tables/ultracart_dw_low/uc_conversations.json +374 -0
  247. package/schemas/tables/ultracart_dw_low/uc_coupons.json +1893 -0
  248. package/schemas/tables/ultracart_dw_low/uc_customers.json +11900 -0
  249. package/schemas/tables/ultracart_dw_low/uc_fraud_rules.json +239 -0
  250. package/schemas/tables/ultracart_dw_low/uc_gift_certificates.json +135 -0
  251. package/schemas/tables/ultracart_dw_low/uc_item_inventory_history.json +79 -0
  252. package/schemas/tables/ultracart_dw_low/uc_items.json +4437 -0
  253. package/schemas/tables/ultracart_dw_low/uc_orders.json +6639 -0
  254. package/schemas/tables/ultracart_dw_low/uc_rotating_transaction_gateway_history.json +271 -0
  255. package/schemas/tables/ultracart_dw_low/uc_rotating_transaction_gateways.json +416 -0
  256. package/schemas/tables/ultracart_dw_low/uc_shipping_methods.json +1372 -0
  257. package/schemas/tables/ultracart_dw_low/uc_storefront_customers.json +261 -0
  258. package/schemas/tables/ultracart_dw_low/uc_storefront_experiments.json +386 -0
  259. package/schemas/tables/ultracart_dw_low/uc_storefront_pages.json +513 -0
  260. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_offer_events.json +338 -0
  261. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_offers.json +431 -0
  262. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_paths.json +163 -0
  263. package/schemas/tables/ultracart_dw_low/uc_storefronts.json +62 -0
  264. package/schemas/tables/ultracart_dw_low/uc_surveys.json +238 -0
  265. package/schemas/tables/ultracart_dw_low/uc_workflow_tasks.json +377 -0
  266. package/schemas/tables/ultracart_dw_low/uc_zoho_desk_tickets.json +1184 -0
  267. package/schemas/tables/ultracart_dw_medium/uc_affiliate_clicks.json +186 -0
  268. package/schemas/tables/ultracart_dw_medium/uc_affiliate_commission_groups.json +317 -0
  269. package/schemas/tables/ultracart_dw_medium/uc_affiliate_ledgers.json +404 -0
  270. package/schemas/tables/ultracart_dw_medium/uc_affiliate_network_pixel_postback_logs.json +166 -0
  271. package/schemas/tables/ultracart_dw_medium/uc_affiliate_network_pixels.json +106 -0
  272. package/schemas/tables/ultracart_dw_medium/uc_affiliate_payments.json +204 -0
  273. package/schemas/tables/ultracart_dw_medium/uc_affiliate_postback_logs.json +90 -0
  274. package/schemas/tables/ultracart_dw_medium/uc_affiliates.json +425 -0
  275. package/schemas/tables/ultracart_dw_medium/uc_auto_orders.json +14320 -0
  276. package/schemas/tables/ultracart_dw_medium/uc_cart_abandons.json +4245 -0
  277. package/schemas/tables/ultracart_dw_medium/uc_conversation_pbx_calls.json +415 -0
  278. package/schemas/tables/ultracart_dw_medium/uc_conversations.json +415 -0
  279. package/schemas/tables/ultracart_dw_medium/uc_coupons.json +1893 -0
  280. package/schemas/tables/ultracart_dw_medium/uc_customers.json +12250 -0
  281. package/schemas/tables/ultracart_dw_medium/uc_fraud_rules.json +239 -0
  282. package/schemas/tables/ultracart_dw_medium/uc_gift_certificates.json +135 -0
  283. package/schemas/tables/ultracart_dw_medium/uc_item_inventory_history.json +79 -0
  284. package/schemas/tables/ultracart_dw_medium/uc_items.json +4437 -0
  285. package/schemas/tables/ultracart_dw_medium/uc_orders.json +6865 -0
  286. package/schemas/tables/ultracart_dw_medium/uc_rotating_transaction_gateway_history.json +271 -0
  287. package/schemas/tables/ultracart_dw_medium/uc_rotating_transaction_gateways.json +416 -0
  288. package/schemas/tables/ultracart_dw_medium/uc_shipping_methods.json +1372 -0
  289. package/schemas/tables/ultracart_dw_medium/uc_storefront_customers.json +261 -0
  290. package/schemas/tables/ultracart_dw_medium/uc_storefront_experiments.json +386 -0
  291. package/schemas/tables/ultracart_dw_medium/uc_storefront_pages.json +513 -0
  292. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_offer_events.json +338 -0
  293. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_offers.json +431 -0
  294. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_paths.json +163 -0
  295. package/schemas/tables/ultracart_dw_medium/uc_storefronts.json +62 -0
  296. package/schemas/tables/ultracart_dw_medium/uc_surveys.json +269 -0
  297. package/schemas/tables/ultracart_dw_medium/uc_workflow_tasks.json +377 -0
  298. package/schemas/tables/ultracart_dw_medium/uc_zoho_desk_tickets.json +1330 -0
  299. package/schemas/tables/ultracart_dw_streaming/uc_analytics_session_streaming.json +2444 -0
  300. package/schemas/tables/ultracart_dw_streaming/uc_screen_recording_streaming.json +509 -0
  301. package/schemas/ultracart-bq-config.schema.json +140 -0
  302. package/skill/skill.md +1228 -0
  303. package/templates/render.html +73 -0
@@ -0,0 +1,468 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildDashboardHtml = buildDashboardHtml;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const deck_1 = require("./deck");
40
+ const manifest_1 = require("./manifest");
41
+ function buildDashboardHtml(deck, reportsBaseDir) {
42
+ const dateStr = new Date().toLocaleDateString('en-US', {
43
+ year: 'numeric',
44
+ month: 'long',
45
+ day: 'numeric',
46
+ });
47
+ const companyName = deck.cover?.company || '';
48
+ const subtitle = companyName
49
+ ? `${companyName} — Generated ${dateStr}`
50
+ : `Generated ${dateStr}`;
51
+ // Collect chart data for each report
52
+ const charts = [];
53
+ for (const reportEntry of deck.reports) {
54
+ const reportDirName = (0, deck_1.getReportName)(reportEntry);
55
+ const reportDir = path.join(reportsBaseDir, reportDirName);
56
+ let reportName = reportDirName;
57
+ try {
58
+ const manifest = (0, manifest_1.loadManifest)(reportDir);
59
+ reportName = manifest.name;
60
+ }
61
+ catch {
62
+ // fall back to directory name
63
+ }
64
+ // Read data.json
65
+ const dataPath = path.join(reportDir, 'data.json');
66
+ if (!fs.existsSync(dataPath)) {
67
+ continue;
68
+ }
69
+ const rawData = fs.readFileSync(dataPath, 'utf-8');
70
+ let dataJson;
71
+ try {
72
+ const parsed = JSON.parse(rawData);
73
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && Array.isArray(parsed.rows)) {
74
+ dataJson = JSON.stringify(parsed.rows);
75
+ }
76
+ else {
77
+ dataJson = rawData;
78
+ }
79
+ }
80
+ catch {
81
+ dataJson = rawData;
82
+ }
83
+ // Read chart.js
84
+ const chartJsPath = path.join(reportDir, 'chart.js');
85
+ if (!fs.existsSync(chartJsPath)) {
86
+ continue;
87
+ }
88
+ const chartJs = fs.readFileSync(chartJsPath, 'utf-8');
89
+ // Read report.md and convert to simple HTML
90
+ let analysisHtml = '';
91
+ const reportMdPath = path.join(reportDir, 'report.md');
92
+ if (fs.existsSync(reportMdPath)) {
93
+ const md = fs.readFileSync(reportMdPath, 'utf-8');
94
+ analysisHtml = markdownToHtml(md);
95
+ }
96
+ charts.push({ name: reportName, dataJson, chartJs, analysisHtml });
97
+ }
98
+ // Build chart cards HTML (grid view)
99
+ const chartCardsHtml = charts
100
+ .map((c, i) => ` <div class="chart-card" onclick="showDetail(${i})" style="cursor:pointer;">
101
+ <h2>${escapeHtml(c.name)}</h2>
102
+ <div class="chart-container" id="chart-${i}"></div>
103
+ <div class="view-report">Click to view full report &rarr;</div>
104
+ </div>`)
105
+ .join('\n');
106
+ // Build detail views (hidden by default, one per report)
107
+ const detailViewsHtml = charts
108
+ .map((c, i) => ` <div class="detail-view" id="detail-${i}" style="display:none;">
109
+ <div class="detail-header">
110
+ <button class="back-btn" onclick="showGrid()">&larr; Back to Dashboard</button>
111
+ <h2>${escapeHtml(c.name)}</h2>
112
+ </div>
113
+ <div class="detail-chart-container" id="detail-chart-${i}"></div>
114
+ <div class="analysis-content">
115
+ ${c.analysisHtml || '<p><em>No analysis available for this report.</em></p>'}
116
+ </div>
117
+ </div>`)
118
+ .join('\n');
119
+ // Build chart init scripts
120
+ const chartScripts = charts
121
+ .map((c, i) => `
122
+ // Report ${i}: ${c.name}
123
+ (function() {
124
+ var data = ${c.dataJson};
125
+ ${c.chartJs}
126
+ var chart = echarts.init(document.getElementById('chart-${i}'));
127
+ try {
128
+ var options = formatChartData(data, false);
129
+ if (options && typeof options === 'object') {
130
+ chart.setOption(options, true);
131
+ }
132
+ } catch(e) {
133
+ console.error('Chart ${i} error:', e);
134
+ }
135
+ // Store references for detail view
136
+ window.__deckCharts = window.__deckCharts || [];
137
+ window.__deckCharts[${i}] = { data: data, fn: formatChartData };
138
+ })();`)
139
+ .join('\n');
140
+ const html = `<!DOCTYPE html>
141
+ <html lang="en">
142
+ <head>
143
+ <meta charset="UTF-8">
144
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
145
+ <title>${escapeHtml(deck.title)}</title>
146
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
147
+ <style>
148
+ * { margin: 0; padding: 0; box-sizing: border-box; }
149
+ body {
150
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
151
+ background: #f5f5f5;
152
+ color: #333;
153
+ padding: 24px;
154
+ }
155
+ header {
156
+ text-align: center;
157
+ margin-bottom: 32px;
158
+ padding: 24px;
159
+ background: #fff;
160
+ border-radius: 8px;
161
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
162
+ }
163
+ header h1 { font-size: 28px; margin-bottom: 8px; }
164
+ header p { color: #666; font-size: 14px; }
165
+ .grid {
166
+ display: grid;
167
+ grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));
168
+ gap: 24px;
169
+ }
170
+ .chart-card {
171
+ background: #fff;
172
+ border-radius: 8px;
173
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
174
+ padding: 20px;
175
+ transition: box-shadow 0.2s;
176
+ }
177
+ .chart-card:hover {
178
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
179
+ }
180
+ .chart-card h2 {
181
+ font-size: 16px;
182
+ color: #444;
183
+ margin-bottom: 16px;
184
+ padding-bottom: 8px;
185
+ border-bottom: 1px solid #eee;
186
+ }
187
+ .chart-container { width: 100%; height: 500px; }
188
+ .view-report {
189
+ text-align: right;
190
+ margin-top: 12px;
191
+ font-size: 13px;
192
+ color: #888;
193
+ }
194
+ .chart-card:hover .view-report { color: #4a90d9; }
195
+
196
+ /* Detail view */
197
+ .detail-view {
198
+ background: #fff;
199
+ border-radius: 8px;
200
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
201
+ padding: 24px;
202
+ max-width: 1200px;
203
+ margin: 0 auto;
204
+ }
205
+ .detail-header {
206
+ display: flex;
207
+ align-items: center;
208
+ gap: 16px;
209
+ margin-bottom: 20px;
210
+ padding-bottom: 12px;
211
+ border-bottom: 2px solid #eee;
212
+ }
213
+ .detail-header h2 { font-size: 22px; color: #333; }
214
+ .back-btn {
215
+ background: #f0f0f0;
216
+ border: 1px solid #ddd;
217
+ border-radius: 6px;
218
+ padding: 8px 16px;
219
+ font-size: 14px;
220
+ cursor: pointer;
221
+ color: #555;
222
+ white-space: nowrap;
223
+ }
224
+ .back-btn:hover { background: #e0e0e0; }
225
+ .detail-chart-container { width: 100%; height: 600px; margin-bottom: 32px; }
226
+ .analysis-content {
227
+ line-height: 1.7;
228
+ font-size: 14px;
229
+ }
230
+ .analysis-content h1 {
231
+ font-size: 22px;
232
+ color: #1a1a2e;
233
+ border-bottom: 3px solid #4a90d9;
234
+ padding-bottom: 10px;
235
+ margin: 28px 0 16px 0;
236
+ }
237
+ .analysis-content h2 {
238
+ font-size: 18px;
239
+ color: #16213e;
240
+ margin: 24px 0 12px 0;
241
+ padding-left: 12px;
242
+ border-left: 4px solid #4a90d9;
243
+ }
244
+ .analysis-content h3 {
245
+ font-size: 15px;
246
+ color: #0f3460;
247
+ margin: 16px 0 8px 0;
248
+ }
249
+ .analysis-content p { margin: 10px 0; line-height: 1.75; }
250
+ .analysis-content strong { color: #1a1a2e; }
251
+ .analysis-content ul, .analysis-content ol { margin: 10px 0; padding-left: 24px; }
252
+ .analysis-content li { margin: 6px 0; line-height: 1.6; }
253
+ .analysis-content li strong { color: #4a90d9; }
254
+ .analysis-content table { border-collapse: collapse; width: 100%; margin: 16px 0; border-radius: 6px; overflow: hidden; }
255
+ .analysis-content th { background: #4a90d9; color: #fff; padding: 10px 14px; text-align: left; font-size: 13px; font-weight: 600; }
256
+ .analysis-content td { border-bottom: 1px solid #e8e8e8; padding: 10px 14px; text-align: left; font-size: 13px; }
257
+ .analysis-content tr:nth-child(even) { background: #f8f9fc; }
258
+ .analysis-content tr:hover { background: #eef2f9; }
259
+ .analysis-content code { background: #e8edf5; color: #4a90d9; padding: 2px 6px; border-radius: 4px; font-size: 13px; }
260
+ .analysis-content hr { border: none; border-top: 2px solid #e8e8e8; margin: 24px 0; }
261
+ .analysis-content em { color: #666; }
262
+
263
+ @media (max-width: 700px) {
264
+ .grid { grid-template-columns: 1fr; }
265
+ body { padding: 12px; }
266
+ .detail-header { flex-direction: column; align-items: flex-start; }
267
+ }
268
+ @media print {
269
+ body { background: #fff; }
270
+ .chart-card { box-shadow: none; border: 1px solid #ddd; page-break-inside: avoid; }
271
+ .back-btn { display: none; }
272
+ .view-report { display: none; }
273
+ }
274
+ </style>
275
+ </head>
276
+ <body>
277
+ <header id="dashboard-header">
278
+ <h1>${escapeHtml(deck.title)}</h1>
279
+ <p>${escapeHtml(subtitle)}</p>
280
+ </header>
281
+
282
+ <div class="grid" id="grid-view">
283
+ ${chartCardsHtml}
284
+ </div>
285
+
286
+ ${detailViewsHtml}
287
+
288
+ <script>
289
+ ${chartScripts}
290
+
291
+ // Navigation
292
+ function showDetail(index) {
293
+ document.getElementById('grid-view').style.display = 'none';
294
+ document.getElementById('dashboard-header').style.display = 'none';
295
+
296
+ // Hide all detail views
297
+ var details = document.querySelectorAll('.detail-view');
298
+ details.forEach(function(el) { el.style.display = 'none'; });
299
+
300
+ // Show the selected detail view
301
+ var detail = document.getElementById('detail-' + index);
302
+ detail.style.display = 'block';
303
+
304
+ // Initialize the detail chart (larger version)
305
+ var detailContainer = document.getElementById('detail-chart-' + index);
306
+ var existingChart = echarts.getInstanceByDom(detailContainer);
307
+ if (existingChart) { existingChart.dispose(); }
308
+
309
+ var chart = echarts.init(detailContainer);
310
+ var ref = window.__deckCharts[index];
311
+ if (ref) {
312
+ try {
313
+ var options = ref.fn(ref.data, false);
314
+ if (options && typeof options === 'object') {
315
+ chart.setOption(options, true);
316
+ }
317
+ } catch(e) {
318
+ console.error('Detail chart error:', e);
319
+ }
320
+ }
321
+
322
+ window.scrollTo(0, 0);
323
+ }
324
+
325
+ function showGrid() {
326
+ // Hide all detail views
327
+ var details = document.querySelectorAll('.detail-view');
328
+ details.forEach(function(el) { el.style.display = 'none'; });
329
+
330
+ // Show grid
331
+ document.getElementById('grid-view').style.display = '';
332
+ document.getElementById('dashboard-header').style.display = '';
333
+
334
+ // Resize all grid charts (they may have been hidden)
335
+ var containers = document.querySelectorAll('.chart-container');
336
+ containers.forEach(function(el) {
337
+ var instance = echarts.getInstanceByDom(el);
338
+ if (instance) instance.resize();
339
+ });
340
+
341
+ window.scrollTo(0, 0);
342
+ }
343
+
344
+ // Responsive resize
345
+ window.addEventListener('resize', function() {
346
+ document.querySelectorAll('.chart-container, .detail-chart-container').forEach(function(el) {
347
+ var instance = echarts.getInstanceByDom(el);
348
+ if (instance) instance.resize();
349
+ });
350
+ });
351
+ </script>
352
+ </body>
353
+ </html>`;
354
+ return html;
355
+ }
356
+ /**
357
+ * Simple markdown to HTML converter for executive analysis content.
358
+ * Handles: headings, bold, italic, tables, lists, code, paragraphs.
359
+ */
360
+ function markdownToHtml(md) {
361
+ const lines = md.split('\n');
362
+ const html = [];
363
+ let inTable = false;
364
+ let inList = false;
365
+ let listType = '';
366
+ for (let i = 0; i < lines.length; i++) {
367
+ let line = lines[i];
368
+ // Table
369
+ if (line.match(/^\|.*\|$/)) {
370
+ // Skip separator rows
371
+ if (line.match(/^\|[\s\-:|]+\|$/))
372
+ continue;
373
+ if (!inTable) {
374
+ if (inList) {
375
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
376
+ inList = false;
377
+ }
378
+ html.push('<table>');
379
+ inTable = true;
380
+ // First row is header
381
+ const cells = line.split('|').filter(c => c.trim());
382
+ html.push('<tr>' + cells.map(c => `<th>${inlineFormat(c.trim())}</th>`).join('') + '</tr>');
383
+ continue;
384
+ }
385
+ const cells = line.split('|').filter(c => c.trim());
386
+ html.push('<tr>' + cells.map(c => `<td>${inlineFormat(c.trim())}</td>`).join('') + '</tr>');
387
+ continue;
388
+ }
389
+ else if (inTable) {
390
+ html.push('</table>');
391
+ inTable = false;
392
+ }
393
+ // Headings
394
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
395
+ if (headingMatch) {
396
+ if (inList) {
397
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
398
+ inList = false;
399
+ }
400
+ const level = headingMatch[1].length;
401
+ html.push(`<h${level}>${inlineFormat(headingMatch[2])}</h${level}>`);
402
+ continue;
403
+ }
404
+ // Unordered list
405
+ if (line.match(/^\s*[-*]\s+/)) {
406
+ if (!inList || listType !== 'ul') {
407
+ if (inList)
408
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
409
+ html.push('<ul>');
410
+ inList = true;
411
+ listType = 'ul';
412
+ }
413
+ html.push(`<li>${inlineFormat(line.replace(/^\s*[-*]\s+/, ''))}</li>`);
414
+ continue;
415
+ }
416
+ // Ordered list
417
+ if (line.match(/^\s*\d+\.\s+/)) {
418
+ if (!inList || listType !== 'ol') {
419
+ if (inList)
420
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
421
+ html.push('<ol>');
422
+ inList = true;
423
+ listType = 'ol';
424
+ }
425
+ html.push(`<li>${inlineFormat(line.replace(/^\s*\d+\.\s+/, ''))}</li>`);
426
+ continue;
427
+ }
428
+ // Close list if we're no longer in one
429
+ if (inList && line.trim() === '') {
430
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
431
+ inList = false;
432
+ }
433
+ // Horizontal rule
434
+ if (line.match(/^---+$/)) {
435
+ html.push('<hr>');
436
+ continue;
437
+ }
438
+ // Empty line
439
+ if (line.trim() === '') {
440
+ continue;
441
+ }
442
+ // Paragraph
443
+ if (inList) {
444
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
445
+ inList = false;
446
+ }
447
+ html.push(`<p>${inlineFormat(line)}</p>`);
448
+ }
449
+ if (inTable)
450
+ html.push('</table>');
451
+ if (inList)
452
+ html.push(listType === 'ol' ? '</ol>' : '</ul>');
453
+ return html.join('\n');
454
+ }
455
+ function inlineFormat(text) {
456
+ return text
457
+ .replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
458
+ .replace(/\*(.+?)\*/g, '<em>$1</em>')
459
+ .replace(/`(.+?)`/g, '<code>$1</code>');
460
+ }
461
+ function escapeHtml(str) {
462
+ return str
463
+ .replace(/&/g, '&amp;')
464
+ .replace(/</g, '&lt;')
465
+ .replace(/>/g, '&gt;')
466
+ .replace(/"/g, '&quot;');
467
+ }
468
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/lib/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export type DeckReportEntry = string | {
2
+ name: string;
3
+ parameters?: Record<string, string>;
4
+ };
5
+ export interface DeckConfig {
6
+ name: string;
7
+ title: string;
8
+ cover?: {
9
+ company?: string;
10
+ logo_url?: string;
11
+ };
12
+ reports: DeckReportEntry[];
13
+ parameter_mode?: 'smart' | 'override';
14
+ parameters?: Record<string, string>;
15
+ landscape?: boolean;
16
+ delivery?: {
17
+ slack?: {
18
+ channels: string[];
19
+ };
20
+ email?: {
21
+ to: string[];
22
+ subject: string;
23
+ provider: string;
24
+ };
25
+ };
26
+ }
27
+ /** Get the report directory name from a deck report entry. */
28
+ export declare function getReportName(entry: DeckReportEntry): string;
29
+ /** Get per-report parameter overrides from a deck report entry. */
30
+ export declare function getReportOverrides(entry: DeckReportEntry): Record<string, string>;
31
+ /**
32
+ * Load a deck definition from a YAML file.
33
+ */
34
+ export declare function loadDeck(decksDir: string, deckName: string): DeckConfig;
35
+ /**
36
+ * Save a deck definition to a YAML file.
37
+ */
38
+ export declare function saveDeck(decksDir: string, deckName: string, config: DeckConfig): void;
39
+ /**
40
+ * List all deck definitions in the decks directory.
41
+ */
42
+ export declare function listDecks(decksDir: string): Array<{
43
+ name: string;
44
+ title: string;
45
+ reportCount: number;
46
+ }>;
47
+ /**
48
+ * Build a combined markdown document from a deck and its constituent reports.
49
+ * Chart images use relative paths from the decks directory (e.g., ../report-name/chart.png).
50
+ * The report.md content for each report is read from the reports base directory.
51
+ */
52
+ export declare function buildDeckMarkdown(deck: DeckConfig, reportsBaseDir: string): string;
53
+ /**
54
+ * Generate a PDF from combined deck markdown using md-to-pdf.
55
+ * basedir should be the merchant's report output dir so relative image paths resolve.
56
+ */
57
+ export declare function generateDeckPdf(markdown: string, outputPath: string, basedir: string, landscape?: boolean): Promise<string>;
58
+ //# sourceMappingURL=deck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deck.d.ts","sourceRoot":"","sources":["../../src/lib/deck.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7F,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QAC/B,KAAK,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7D,CAAC;CACH;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAE5D;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEjF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAOvE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAWrF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBvG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CA8FlF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC,CAqCjB"}