@beesolve/analytics-processor 0.0.0-stage → 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 (341) hide show
  1. package/DOCS.md +20 -0
  2. package/README.md +87 -2
  3. package/dist/cdk.d.ts +49 -0
  4. package/dist/cdk.js +127 -0
  5. package/dist/dailyRollup/bowser-UJEXXM6S.mjs +2 -0
  6. package/dist/dailyRollup/bowser-UJEXXM6S.mjs.map +7 -0
  7. package/dist/dailyRollup/chunk-3GD7PA4I.mjs +2 -0
  8. package/dist/dailyRollup/chunk-3GD7PA4I.mjs.map +7 -0
  9. package/dist/dailyRollup/chunk-3YRRUMLY.mjs +10 -0
  10. package/dist/dailyRollup/chunk-3YRRUMLY.mjs.map +7 -0
  11. package/dist/dailyRollup/chunk-5JDAL5HL.mjs +2 -0
  12. package/dist/dailyRollup/chunk-5JDAL5HL.mjs.map +7 -0
  13. package/dist/dailyRollup/chunk-C4CD3R2M.mjs +2 -0
  14. package/dist/dailyRollup/chunk-C4CD3R2M.mjs.map +7 -0
  15. package/dist/dailyRollup/chunk-CFZ5JWD3.mjs +2 -0
  16. package/dist/dailyRollup/chunk-CFZ5JWD3.mjs.map +7 -0
  17. package/dist/dailyRollup/chunk-FLISSIFQ.mjs +4 -0
  18. package/dist/dailyRollup/chunk-FLISSIFQ.mjs.map +7 -0
  19. package/dist/dailyRollup/chunk-G7FCKJTE.mjs +8 -0
  20. package/dist/dailyRollup/chunk-G7FCKJTE.mjs.map +7 -0
  21. package/dist/dailyRollup/chunk-GHMUY3QB.mjs +13 -0
  22. package/dist/dailyRollup/chunk-GHMUY3QB.mjs.map +7 -0
  23. package/dist/dailyRollup/chunk-HGD7WY52.mjs +2 -0
  24. package/dist/dailyRollup/chunk-HGD7WY52.mjs.map +7 -0
  25. package/dist/dailyRollup/chunk-IHCR62UU.mjs +6 -0
  26. package/dist/dailyRollup/chunk-IHCR62UU.mjs.map +7 -0
  27. package/dist/dailyRollup/chunk-KT7DZL3D.mjs +2 -0
  28. package/dist/dailyRollup/chunk-KT7DZL3D.mjs.map +7 -0
  29. package/dist/dailyRollup/chunk-LK4IXOEA.mjs +2 -0
  30. package/dist/dailyRollup/chunk-LK4IXOEA.mjs.map +7 -0
  31. package/dist/dailyRollup/chunk-MATUPZWL.mjs +6 -0
  32. package/dist/dailyRollup/chunk-MATUPZWL.mjs.map +7 -0
  33. package/dist/dailyRollup/chunk-NX6AKUU3.mjs +2 -0
  34. package/dist/dailyRollup/chunk-NX6AKUU3.mjs.map +7 -0
  35. package/dist/dailyRollup/chunk-PBJCPHYW.mjs +10 -0
  36. package/dist/dailyRollup/chunk-PBJCPHYW.mjs.map +7 -0
  37. package/dist/dailyRollup/chunk-PNUYSX4A.mjs +2 -0
  38. package/dist/dailyRollup/chunk-PNUYSX4A.mjs.map +7 -0
  39. package/dist/dailyRollup/chunk-RO44VKXZ.mjs +2 -0
  40. package/dist/dailyRollup/chunk-RO44VKXZ.mjs.map +7 -0
  41. package/dist/dailyRollup/chunk-RU3KGSS6.mjs +2 -0
  42. package/dist/dailyRollup/chunk-RU3KGSS6.mjs.map +7 -0
  43. package/dist/dailyRollup/chunk-VG37NXBO.mjs +2 -0
  44. package/dist/dailyRollup/chunk-VG37NXBO.mjs.map +7 -0
  45. package/dist/dailyRollup/chunk-VVG5B2RA.mjs +13 -0
  46. package/dist/dailyRollup/chunk-VVG5B2RA.mjs.map +7 -0
  47. package/dist/dailyRollup/chunk-YIZKQ2WK.mjs +10 -0
  48. package/dist/dailyRollup/chunk-YIZKQ2WK.mjs.map +7 -0
  49. package/dist/dailyRollup/chunk-ZH5DZOB5.mjs +2 -0
  50. package/dist/dailyRollup/chunk-ZH5DZOB5.mjs.map +7 -0
  51. package/dist/dailyRollup/client-7VYWT6KE.mjs +2 -0
  52. package/dist/dailyRollup/client-7VYWT6KE.mjs.map +7 -0
  53. package/dist/dailyRollup/dailyRollup.mjs +2 -0
  54. package/dist/dailyRollup/dailyRollup.mjs.map +7 -0
  55. package/dist/dailyRollup/dist-es-3PO6WBRA.mjs +2 -0
  56. package/dist/dailyRollup/dist-es-3PO6WBRA.mjs.map +7 -0
  57. package/dist/dailyRollup/dist-es-4375P743.mjs +2 -0
  58. package/dist/dailyRollup/dist-es-4375P743.mjs.map +7 -0
  59. package/dist/dailyRollup/dist-es-43J27JDM.mjs +3 -0
  60. package/dist/dailyRollup/dist-es-43J27JDM.mjs.map +7 -0
  61. package/dist/dailyRollup/dist-es-6SRW3I3T.mjs +2 -0
  62. package/dist/dailyRollup/dist-es-6SRW3I3T.mjs.map +7 -0
  63. package/dist/dailyRollup/dist-es-BMGNYEV6.mjs +3 -0
  64. package/dist/dailyRollup/dist-es-BMGNYEV6.mjs.map +7 -0
  65. package/dist/dailyRollup/dist-es-BQ5OLCIJ.mjs +2 -0
  66. package/dist/dailyRollup/dist-es-BQ5OLCIJ.mjs.map +7 -0
  67. package/dist/dailyRollup/dist-es-CFDT5MDO.mjs +2 -0
  68. package/dist/dailyRollup/dist-es-CFDT5MDO.mjs.map +7 -0
  69. package/dist/dailyRollup/dist-es-FPBJ7DAB.mjs +2 -0
  70. package/dist/dailyRollup/dist-es-FPBJ7DAB.mjs.map +7 -0
  71. package/dist/dailyRollup/dist-es-G4DL2UUB.mjs +7 -0
  72. package/dist/dailyRollup/dist-es-G4DL2UUB.mjs.map +7 -0
  73. package/dist/dailyRollup/dist-es-IRYFH3EH.mjs +2 -0
  74. package/dist/dailyRollup/dist-es-IRYFH3EH.mjs.map +7 -0
  75. package/dist/dailyRollup/dist-es-L5F6PNYU.mjs +2 -0
  76. package/dist/dailyRollup/dist-es-L5F6PNYU.mjs.map +7 -0
  77. package/dist/dailyRollup/dist-es-LEKBJS4E.mjs +2 -0
  78. package/dist/dailyRollup/dist-es-LEKBJS4E.mjs.map +7 -0
  79. package/dist/dailyRollup/dist-es-NMUDTELL.mjs +2 -0
  80. package/dist/dailyRollup/dist-es-NMUDTELL.mjs.map +7 -0
  81. package/dist/dailyRollup/dist-es-OY2VA72W.mjs +2 -0
  82. package/dist/dailyRollup/dist-es-OY2VA72W.mjs.map +7 -0
  83. package/dist/dailyRollup/dist-es-SJKDRHZJ.mjs +2 -0
  84. package/dist/dailyRollup/dist-es-SJKDRHZJ.mjs.map +7 -0
  85. package/dist/dailyRollup/dist-es-UGFAGDM2.mjs +7 -0
  86. package/dist/dailyRollup/dist-es-UGFAGDM2.mjs.map +7 -0
  87. package/dist/dailyRollup/dist-es-YRXTT57X.mjs +3 -0
  88. package/dist/dailyRollup/dist-es-YRXTT57X.mjs.map +7 -0
  89. package/dist/dailyRollup/event-streams-G2EZD32F.mjs +2 -0
  90. package/dist/dailyRollup/event-streams-G2EZD32F.mjs.map +7 -0
  91. package/dist/dailyRollup/event-streams-H4LI66VS.mjs +2 -0
  92. package/dist/dailyRollup/event-streams-H4LI66VS.mjs.map +7 -0
  93. package/dist/dailyRollup/event-streams-U52YN65T.mjs +2 -0
  94. package/dist/dailyRollup/event-streams-U52YN65T.mjs.map +7 -0
  95. package/dist/dailyRollup/loadCognitoIdentity-3OXED256.mjs +2 -0
  96. package/dist/dailyRollup/loadCognitoIdentity-3OXED256.mjs.map +7 -0
  97. package/dist/dailyRollup/loadSso-6KWTKR23.mjs +2 -0
  98. package/dist/dailyRollup/loadSso-6KWTKR23.mjs.map +7 -0
  99. package/dist/dailyRollup/loadSso-AITTIS6M.mjs +2 -0
  100. package/dist/dailyRollup/loadSso-AITTIS6M.mjs.map +7 -0
  101. package/dist/dailyRollup/loadSts-LQCNCE76.mjs +2 -0
  102. package/dist/dailyRollup/loadSts-LQCNCE76.mjs.map +7 -0
  103. package/dist/dailyRollup/signin-THWW5VM5.mjs +2 -0
  104. package/dist/dailyRollup/signin-THWW5VM5.mjs.map +7 -0
  105. package/dist/dailyRollup/signin-ZKLDJEMJ.mjs +2 -0
  106. package/dist/dailyRollup/signin-ZKLDJEMJ.mjs.map +7 -0
  107. package/dist/dailyRollup/sso-oidc-MI4NLGSV.mjs +2 -0
  108. package/dist/dailyRollup/sso-oidc-MI4NLGSV.mjs.map +7 -0
  109. package/dist/dailyRollup/sso-oidc-OWLWHDBI.mjs +2 -0
  110. package/dist/dailyRollup/sso-oidc-OWLWHDBI.mjs.map +7 -0
  111. package/dist/dailyRollup/sts-AQIPDWOX.mjs +2 -0
  112. package/dist/dailyRollup/sts-AQIPDWOX.mjs.map +7 -0
  113. package/dist/dailyRollup/sts-EN7K54DW.mjs +2 -0
  114. package/dist/dailyRollup/sts-EN7K54DW.mjs.map +7 -0
  115. package/dist/hourly/bowser-UJEXXM6S.mjs +2 -0
  116. package/dist/hourly/bowser-UJEXXM6S.mjs.map +7 -0
  117. package/dist/hourly/chunk-2LV65MUY.mjs +2 -0
  118. package/dist/hourly/chunk-2LV65MUY.mjs.map +7 -0
  119. package/dist/hourly/chunk-3GD7PA4I.mjs +2 -0
  120. package/dist/hourly/chunk-3GD7PA4I.mjs.map +7 -0
  121. package/dist/hourly/chunk-4X6M4ZIM.mjs +13 -0
  122. package/dist/hourly/chunk-4X6M4ZIM.mjs.map +7 -0
  123. package/dist/hourly/chunk-5EEREEGM.mjs +10 -0
  124. package/dist/hourly/chunk-5EEREEGM.mjs.map +7 -0
  125. package/dist/hourly/chunk-5JDAL5HL.mjs +2 -0
  126. package/dist/hourly/chunk-5JDAL5HL.mjs.map +7 -0
  127. package/dist/hourly/chunk-C4CD3R2M.mjs +2 -0
  128. package/dist/hourly/chunk-C4CD3R2M.mjs.map +7 -0
  129. package/dist/hourly/chunk-CDK2TDZ3.mjs +2 -0
  130. package/dist/hourly/chunk-CDK2TDZ3.mjs.map +7 -0
  131. package/dist/hourly/chunk-CFZ5JWD3.mjs +2 -0
  132. package/dist/hourly/chunk-CFZ5JWD3.mjs.map +7 -0
  133. package/dist/hourly/chunk-DDOSB7QU.mjs +10 -0
  134. package/dist/hourly/chunk-DDOSB7QU.mjs.map +7 -0
  135. package/dist/hourly/chunk-FLISSIFQ.mjs +4 -0
  136. package/dist/hourly/chunk-FLISSIFQ.mjs.map +7 -0
  137. package/dist/hourly/chunk-G7FCKJTE.mjs +8 -0
  138. package/dist/hourly/chunk-G7FCKJTE.mjs.map +7 -0
  139. package/dist/hourly/chunk-HGD7WY52.mjs +2 -0
  140. package/dist/hourly/chunk-HGD7WY52.mjs.map +7 -0
  141. package/dist/hourly/chunk-IHCR62UU.mjs +6 -0
  142. package/dist/hourly/chunk-IHCR62UU.mjs.map +7 -0
  143. package/dist/hourly/chunk-LK4IXOEA.mjs +2 -0
  144. package/dist/hourly/chunk-LK4IXOEA.mjs.map +7 -0
  145. package/dist/hourly/chunk-MATUPZWL.mjs +6 -0
  146. package/dist/hourly/chunk-MATUPZWL.mjs.map +7 -0
  147. package/dist/hourly/chunk-NX6AKUU3.mjs +2 -0
  148. package/dist/hourly/chunk-NX6AKUU3.mjs.map +7 -0
  149. package/dist/hourly/chunk-OV75J3RB.mjs +10 -0
  150. package/dist/hourly/chunk-OV75J3RB.mjs.map +7 -0
  151. package/dist/hourly/chunk-RO44VKXZ.mjs +2 -0
  152. package/dist/hourly/chunk-RO44VKXZ.mjs.map +7 -0
  153. package/dist/hourly/chunk-RU3KGSS6.mjs +2 -0
  154. package/dist/hourly/chunk-RU3KGSS6.mjs.map +7 -0
  155. package/dist/hourly/chunk-SEATMW6H.mjs +2 -0
  156. package/dist/hourly/chunk-SEATMW6H.mjs.map +7 -0
  157. package/dist/hourly/chunk-UEL4UF23.mjs +2 -0
  158. package/dist/hourly/chunk-UEL4UF23.mjs.map +7 -0
  159. package/dist/hourly/chunk-VG37NXBO.mjs +2 -0
  160. package/dist/hourly/chunk-VG37NXBO.mjs.map +7 -0
  161. package/dist/hourly/chunk-YLTURKBY.mjs +13 -0
  162. package/dist/hourly/chunk-YLTURKBY.mjs.map +7 -0
  163. package/dist/hourly/chunk-ZH5DZOB5.mjs +2 -0
  164. package/dist/hourly/chunk-ZH5DZOB5.mjs.map +7 -0
  165. package/dist/hourly/client-YFAS5DGU.mjs +2 -0
  166. package/dist/hourly/client-YFAS5DGU.mjs.map +7 -0
  167. package/dist/hourly/dist-es-2QGRGQLF.mjs +7 -0
  168. package/dist/hourly/dist-es-2QGRGQLF.mjs.map +7 -0
  169. package/dist/hourly/dist-es-4JJUYAKR.mjs +2 -0
  170. package/dist/hourly/dist-es-4JJUYAKR.mjs.map +7 -0
  171. package/dist/hourly/dist-es-4NUPISR6.mjs +3 -0
  172. package/dist/hourly/dist-es-4NUPISR6.mjs.map +7 -0
  173. package/dist/hourly/dist-es-4PFASTED.mjs +2 -0
  174. package/dist/hourly/dist-es-4PFASTED.mjs.map +7 -0
  175. package/dist/hourly/dist-es-ARVZEK2B.mjs +2 -0
  176. package/dist/hourly/dist-es-ARVZEK2B.mjs.map +7 -0
  177. package/dist/hourly/dist-es-BH4D2XQ2.mjs +2 -0
  178. package/dist/hourly/dist-es-BH4D2XQ2.mjs.map +7 -0
  179. package/dist/hourly/dist-es-D46ET7B3.mjs +2 -0
  180. package/dist/hourly/dist-es-D46ET7B3.mjs.map +7 -0
  181. package/dist/hourly/dist-es-DQHOM6HA.mjs +3 -0
  182. package/dist/hourly/dist-es-DQHOM6HA.mjs.map +7 -0
  183. package/dist/hourly/dist-es-ETNPEJSC.mjs +2 -0
  184. package/dist/hourly/dist-es-ETNPEJSC.mjs.map +7 -0
  185. package/dist/hourly/dist-es-HCGEEOBW.mjs +2 -0
  186. package/dist/hourly/dist-es-HCGEEOBW.mjs.map +7 -0
  187. package/dist/hourly/dist-es-LONCZIHI.mjs +2 -0
  188. package/dist/hourly/dist-es-LONCZIHI.mjs.map +7 -0
  189. package/dist/hourly/dist-es-PV5J6DAM.mjs +2 -0
  190. package/dist/hourly/dist-es-PV5J6DAM.mjs.map +7 -0
  191. package/dist/hourly/dist-es-S4EGUNEL.mjs +2 -0
  192. package/dist/hourly/dist-es-S4EGUNEL.mjs.map +7 -0
  193. package/dist/hourly/dist-es-VDZMHJW2.mjs +7 -0
  194. package/dist/hourly/dist-es-VDZMHJW2.mjs.map +7 -0
  195. package/dist/hourly/dist-es-WBVL2T3J.mjs +2 -0
  196. package/dist/hourly/dist-es-WBVL2T3J.mjs.map +7 -0
  197. package/dist/hourly/dist-es-YFKUCAP2.mjs +2 -0
  198. package/dist/hourly/dist-es-YFKUCAP2.mjs.map +7 -0
  199. package/dist/hourly/dist-es-YZBMXOS5.mjs +3 -0
  200. package/dist/hourly/dist-es-YZBMXOS5.mjs.map +7 -0
  201. package/dist/hourly/event-streams-G2EZD32F.mjs +2 -0
  202. package/dist/hourly/event-streams-G2EZD32F.mjs.map +7 -0
  203. package/dist/hourly/event-streams-H4LI66VS.mjs +2 -0
  204. package/dist/hourly/event-streams-H4LI66VS.mjs.map +7 -0
  205. package/dist/hourly/event-streams-U52YN65T.mjs +2 -0
  206. package/dist/hourly/event-streams-U52YN65T.mjs.map +7 -0
  207. package/dist/hourly/hourly.mjs +11 -0
  208. package/dist/hourly/hourly.mjs.map +7 -0
  209. package/dist/hourly/loadCognitoIdentity-KHSY4IOA.mjs +2 -0
  210. package/dist/hourly/loadCognitoIdentity-KHSY4IOA.mjs.map +7 -0
  211. package/dist/hourly/loadSso-HHJP34KX.mjs +2 -0
  212. package/dist/hourly/loadSso-HHJP34KX.mjs.map +7 -0
  213. package/dist/hourly/loadSso-R47RBCPJ.mjs +2 -0
  214. package/dist/hourly/loadSso-R47RBCPJ.mjs.map +7 -0
  215. package/dist/hourly/loadSts-5X55AJY5.mjs +2 -0
  216. package/dist/hourly/loadSts-5X55AJY5.mjs.map +7 -0
  217. package/dist/hourly/signin-F7JF6BF6.mjs +2 -0
  218. package/dist/hourly/signin-F7JF6BF6.mjs.map +7 -0
  219. package/dist/hourly/signin-WDXS6SW2.mjs +2 -0
  220. package/dist/hourly/signin-WDXS6SW2.mjs.map +7 -0
  221. package/dist/hourly/sso-oidc-63EGB35D.mjs +2 -0
  222. package/dist/hourly/sso-oidc-63EGB35D.mjs.map +7 -0
  223. package/dist/hourly/sso-oidc-UVLJZI2R.mjs +2 -0
  224. package/dist/hourly/sso-oidc-UVLJZI2R.mjs.map +7 -0
  225. package/dist/hourly/sts-4M7S3GN4.mjs +2 -0
  226. package/dist/hourly/sts-4M7S3GN4.mjs.map +7 -0
  227. package/dist/hourly/sts-YXUOYWFS.mjs +2 -0
  228. package/dist/hourly/sts-YXUOYWFS.mjs.map +7 -0
  229. package/dist/index.d.ts +359 -0
  230. package/dist/index.js +1011 -0
  231. package/dist/monthlyRollup/bowser-UJEXXM6S.mjs +2 -0
  232. package/dist/monthlyRollup/bowser-UJEXXM6S.mjs.map +7 -0
  233. package/dist/monthlyRollup/chunk-3GD7PA4I.mjs +2 -0
  234. package/dist/monthlyRollup/chunk-3GD7PA4I.mjs.map +7 -0
  235. package/dist/monthlyRollup/chunk-3YRRUMLY.mjs +10 -0
  236. package/dist/monthlyRollup/chunk-3YRRUMLY.mjs.map +7 -0
  237. package/dist/monthlyRollup/chunk-5JDAL5HL.mjs +2 -0
  238. package/dist/monthlyRollup/chunk-5JDAL5HL.mjs.map +7 -0
  239. package/dist/monthlyRollup/chunk-C4CD3R2M.mjs +2 -0
  240. package/dist/monthlyRollup/chunk-C4CD3R2M.mjs.map +7 -0
  241. package/dist/monthlyRollup/chunk-CFZ5JWD3.mjs +2 -0
  242. package/dist/monthlyRollup/chunk-CFZ5JWD3.mjs.map +7 -0
  243. package/dist/monthlyRollup/chunk-FLISSIFQ.mjs +4 -0
  244. package/dist/monthlyRollup/chunk-FLISSIFQ.mjs.map +7 -0
  245. package/dist/monthlyRollup/chunk-G7FCKJTE.mjs +8 -0
  246. package/dist/monthlyRollup/chunk-G7FCKJTE.mjs.map +7 -0
  247. package/dist/monthlyRollup/chunk-GHMUY3QB.mjs +13 -0
  248. package/dist/monthlyRollup/chunk-GHMUY3QB.mjs.map +7 -0
  249. package/dist/monthlyRollup/chunk-HGD7WY52.mjs +2 -0
  250. package/dist/monthlyRollup/chunk-HGD7WY52.mjs.map +7 -0
  251. package/dist/monthlyRollup/chunk-IHCR62UU.mjs +6 -0
  252. package/dist/monthlyRollup/chunk-IHCR62UU.mjs.map +7 -0
  253. package/dist/monthlyRollup/chunk-KT7DZL3D.mjs +2 -0
  254. package/dist/monthlyRollup/chunk-KT7DZL3D.mjs.map +7 -0
  255. package/dist/monthlyRollup/chunk-LK4IXOEA.mjs +2 -0
  256. package/dist/monthlyRollup/chunk-LK4IXOEA.mjs.map +7 -0
  257. package/dist/monthlyRollup/chunk-MATUPZWL.mjs +6 -0
  258. package/dist/monthlyRollup/chunk-MATUPZWL.mjs.map +7 -0
  259. package/dist/monthlyRollup/chunk-NX6AKUU3.mjs +2 -0
  260. package/dist/monthlyRollup/chunk-NX6AKUU3.mjs.map +7 -0
  261. package/dist/monthlyRollup/chunk-PBJCPHYW.mjs +10 -0
  262. package/dist/monthlyRollup/chunk-PBJCPHYW.mjs.map +7 -0
  263. package/dist/monthlyRollup/chunk-PNUYSX4A.mjs +2 -0
  264. package/dist/monthlyRollup/chunk-PNUYSX4A.mjs.map +7 -0
  265. package/dist/monthlyRollup/chunk-RO44VKXZ.mjs +2 -0
  266. package/dist/monthlyRollup/chunk-RO44VKXZ.mjs.map +7 -0
  267. package/dist/monthlyRollup/chunk-RU3KGSS6.mjs +2 -0
  268. package/dist/monthlyRollup/chunk-RU3KGSS6.mjs.map +7 -0
  269. package/dist/monthlyRollup/chunk-VG37NXBO.mjs +2 -0
  270. package/dist/monthlyRollup/chunk-VG37NXBO.mjs.map +7 -0
  271. package/dist/monthlyRollup/chunk-VVG5B2RA.mjs +13 -0
  272. package/dist/monthlyRollup/chunk-VVG5B2RA.mjs.map +7 -0
  273. package/dist/monthlyRollup/chunk-YIZKQ2WK.mjs +10 -0
  274. package/dist/monthlyRollup/chunk-YIZKQ2WK.mjs.map +7 -0
  275. package/dist/monthlyRollup/chunk-ZH5DZOB5.mjs +2 -0
  276. package/dist/monthlyRollup/chunk-ZH5DZOB5.mjs.map +7 -0
  277. package/dist/monthlyRollup/client-7VYWT6KE.mjs +2 -0
  278. package/dist/monthlyRollup/client-7VYWT6KE.mjs.map +7 -0
  279. package/dist/monthlyRollup/dist-es-3PO6WBRA.mjs +2 -0
  280. package/dist/monthlyRollup/dist-es-3PO6WBRA.mjs.map +7 -0
  281. package/dist/monthlyRollup/dist-es-4375P743.mjs +2 -0
  282. package/dist/monthlyRollup/dist-es-4375P743.mjs.map +7 -0
  283. package/dist/monthlyRollup/dist-es-43J27JDM.mjs +3 -0
  284. package/dist/monthlyRollup/dist-es-43J27JDM.mjs.map +7 -0
  285. package/dist/monthlyRollup/dist-es-6SRW3I3T.mjs +2 -0
  286. package/dist/monthlyRollup/dist-es-6SRW3I3T.mjs.map +7 -0
  287. package/dist/monthlyRollup/dist-es-BMGNYEV6.mjs +3 -0
  288. package/dist/monthlyRollup/dist-es-BMGNYEV6.mjs.map +7 -0
  289. package/dist/monthlyRollup/dist-es-BQ5OLCIJ.mjs +2 -0
  290. package/dist/monthlyRollup/dist-es-BQ5OLCIJ.mjs.map +7 -0
  291. package/dist/monthlyRollup/dist-es-CFDT5MDO.mjs +2 -0
  292. package/dist/monthlyRollup/dist-es-CFDT5MDO.mjs.map +7 -0
  293. package/dist/monthlyRollup/dist-es-FPBJ7DAB.mjs +2 -0
  294. package/dist/monthlyRollup/dist-es-FPBJ7DAB.mjs.map +7 -0
  295. package/dist/monthlyRollup/dist-es-G4DL2UUB.mjs +7 -0
  296. package/dist/monthlyRollup/dist-es-G4DL2UUB.mjs.map +7 -0
  297. package/dist/monthlyRollup/dist-es-IRYFH3EH.mjs +2 -0
  298. package/dist/monthlyRollup/dist-es-IRYFH3EH.mjs.map +7 -0
  299. package/dist/monthlyRollup/dist-es-L5F6PNYU.mjs +2 -0
  300. package/dist/monthlyRollup/dist-es-L5F6PNYU.mjs.map +7 -0
  301. package/dist/monthlyRollup/dist-es-LEKBJS4E.mjs +2 -0
  302. package/dist/monthlyRollup/dist-es-LEKBJS4E.mjs.map +7 -0
  303. package/dist/monthlyRollup/dist-es-NMUDTELL.mjs +2 -0
  304. package/dist/monthlyRollup/dist-es-NMUDTELL.mjs.map +7 -0
  305. package/dist/monthlyRollup/dist-es-OY2VA72W.mjs +2 -0
  306. package/dist/monthlyRollup/dist-es-OY2VA72W.mjs.map +7 -0
  307. package/dist/monthlyRollup/dist-es-SJKDRHZJ.mjs +2 -0
  308. package/dist/monthlyRollup/dist-es-SJKDRHZJ.mjs.map +7 -0
  309. package/dist/monthlyRollup/dist-es-UGFAGDM2.mjs +7 -0
  310. package/dist/monthlyRollup/dist-es-UGFAGDM2.mjs.map +7 -0
  311. package/dist/monthlyRollup/dist-es-YRXTT57X.mjs +3 -0
  312. package/dist/monthlyRollup/dist-es-YRXTT57X.mjs.map +7 -0
  313. package/dist/monthlyRollup/event-streams-G2EZD32F.mjs +2 -0
  314. package/dist/monthlyRollup/event-streams-G2EZD32F.mjs.map +7 -0
  315. package/dist/monthlyRollup/event-streams-H4LI66VS.mjs +2 -0
  316. package/dist/monthlyRollup/event-streams-H4LI66VS.mjs.map +7 -0
  317. package/dist/monthlyRollup/event-streams-U52YN65T.mjs +2 -0
  318. package/dist/monthlyRollup/event-streams-U52YN65T.mjs.map +7 -0
  319. package/dist/monthlyRollup/loadCognitoIdentity-3OXED256.mjs +2 -0
  320. package/dist/monthlyRollup/loadCognitoIdentity-3OXED256.mjs.map +7 -0
  321. package/dist/monthlyRollup/loadSso-6KWTKR23.mjs +2 -0
  322. package/dist/monthlyRollup/loadSso-6KWTKR23.mjs.map +7 -0
  323. package/dist/monthlyRollup/loadSso-AITTIS6M.mjs +2 -0
  324. package/dist/monthlyRollup/loadSso-AITTIS6M.mjs.map +7 -0
  325. package/dist/monthlyRollup/loadSts-LQCNCE76.mjs +2 -0
  326. package/dist/monthlyRollup/loadSts-LQCNCE76.mjs.map +7 -0
  327. package/dist/monthlyRollup/monthlyRollup.mjs +2 -0
  328. package/dist/monthlyRollup/monthlyRollup.mjs.map +7 -0
  329. package/dist/monthlyRollup/signin-THWW5VM5.mjs +2 -0
  330. package/dist/monthlyRollup/signin-THWW5VM5.mjs.map +7 -0
  331. package/dist/monthlyRollup/signin-ZKLDJEMJ.mjs +2 -0
  332. package/dist/monthlyRollup/signin-ZKLDJEMJ.mjs.map +7 -0
  333. package/dist/monthlyRollup/sso-oidc-MI4NLGSV.mjs +2 -0
  334. package/dist/monthlyRollup/sso-oidc-MI4NLGSV.mjs.map +7 -0
  335. package/dist/monthlyRollup/sso-oidc-OWLWHDBI.mjs +2 -0
  336. package/dist/monthlyRollup/sso-oidc-OWLWHDBI.mjs.map +7 -0
  337. package/dist/monthlyRollup/sts-AQIPDWOX.mjs +2 -0
  338. package/dist/monthlyRollup/sts-AQIPDWOX.mjs.map +7 -0
  339. package/dist/monthlyRollup/sts-EN7K54DW.mjs +2 -0
  340. package/dist/monthlyRollup/sts-EN7K54DW.mjs.map +7 -0
  341. package/package.json +61 -4
@@ -0,0 +1,359 @@
1
+ export * from "@beesolve/ip-info";
2
+ import { DynamoDBDocumentClient, TransactWriteCommandInput } from "@aws-sdk/lib-dynamodb";
3
+ import * as v from "valibot";
4
+ declare const grains: readonly ["hour", "day", "month"];
5
+ type Grain = (typeof grains)[number];
6
+ declare const dimensions: readonly ["status", "country", "device", "path"];
7
+ type Dimension = (typeof dimensions)[number];
8
+ declare const appliedSources: readonly ["v1", "v2"];
9
+ type AppliedSource = (typeof appliedSources)[number];
10
+ type TransactWriteItem = NonNullable<TransactWriteCommandInput["TransactItems"]>[number];
11
+ type PutMembers = NonNullable<TransactWriteItem["Put"]>;
12
+ interface TransactPutItem {
13
+ readonly Put: PutMembers;
14
+ }
15
+ declare const appliedMarkerSchema: v.ObjectSchema<{
16
+ readonly pk: v.StringSchema<undefined>;
17
+ readonly sk: v.StringSchema<undefined>;
18
+ readonly source: v.PicklistSchema<readonly ["v1", "v2"], undefined>;
19
+ readonly appliedAt: v.NumberSchema<undefined>;
20
+ readonly ttl: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
21
+ }, undefined>;
22
+ type AppliedMarker = v.InferOutput<typeof appliedMarkerSchema>;
23
+ declare class AppliedMarkers {
24
+ private readonly props;
25
+ constructor(props: {
26
+ readonly dynamo: Pick<DynamoDBDocumentClient, "send">;
27
+ readonly tableName: string;
28
+ readonly reverseIndexName?: string;
29
+ });
30
+ readonly isApplied: (props: {
31
+ readonly grain: Grain;
32
+ readonly periodKey: string;
33
+ }) => Promise<boolean>;
34
+ readonly buildMarkerPut: (props: {
35
+ readonly grain: Grain;
36
+ readonly periodKey: string;
37
+ readonly source: AppliedSource;
38
+ readonly ttl?: number;
39
+ }) => TransactPutItem;
40
+ }
41
+ import { AthenaClient } from "@aws-sdk/client-athena";
42
+ import { DynamoDBDocumentClient as DynamoDBDocumentClient2, TransactWriteCommandInput as TransactWriteCommandInput2 } from "@aws-sdk/lib-dynamodb";
43
+ import * as v2 from "valibot";
44
+ type TransactWriteItem2 = NonNullable<TransactWriteCommandInput2["TransactItems"]>[number];
45
+ type UpdateMembers = NonNullable<TransactWriteItem2["Update"]>;
46
+ interface TransactUpdateItem {
47
+ readonly Update: UpdateMembers;
48
+ }
49
+ interface TotalsInput {
50
+ readonly timeKey: string;
51
+ readonly hits: number;
52
+ readonly success: number;
53
+ readonly errors: number;
54
+ readonly errors4xx: number;
55
+ readonly errors5xx: number;
56
+ readonly bytesSent: number;
57
+ readonly bytesReceived: number;
58
+ readonly p50TimeTaken?: number;
59
+ readonly p95TimeTaken?: number;
60
+ readonly cacheHitRatio?: number;
61
+ readonly uniqueIpCount?: number;
62
+ }
63
+ declare const totalsSchema: v2.ObjectSchema<{
64
+ readonly pk: v2.StringSchema<undefined>;
65
+ readonly sk: v2.StringSchema<undefined>;
66
+ readonly grain: v2.PicklistSchema<readonly ["hour", "day", "month"], undefined>;
67
+ readonly timeKey: v2.StringSchema<undefined>;
68
+ readonly hits: v2.NumberSchema<undefined>;
69
+ readonly success: v2.NumberSchema<undefined>;
70
+ readonly errors: v2.NumberSchema<undefined>;
71
+ readonly errors4xx: v2.NumberSchema<undefined>;
72
+ readonly errors5xx: v2.NumberSchema<undefined>;
73
+ readonly bytesSent: v2.NumberSchema<undefined>;
74
+ readonly bytesReceived: v2.NumberSchema<undefined>;
75
+ readonly p50TimeTaken: v2.OptionalSchema<v2.NumberSchema<undefined>, undefined>;
76
+ readonly p95TimeTaken: v2.OptionalSchema<v2.NumberSchema<undefined>, undefined>;
77
+ readonly cacheHitRatio: v2.OptionalSchema<v2.NumberSchema<undefined>, undefined>;
78
+ readonly uniqueIpCount: v2.OptionalSchema<v2.NumberSchema<undefined>, undefined>;
79
+ readonly ttl: v2.OptionalSchema<v2.NumberSchema<undefined>, undefined>;
80
+ }, undefined>;
81
+ type TotalsItem = v2.InferOutput<typeof totalsSchema>;
82
+ declare class Totals {
83
+ private readonly props;
84
+ constructor(props: {
85
+ readonly dynamo: Pick<DynamoDBDocumentClient2, "send">;
86
+ readonly tableName: string;
87
+ readonly reverseIndexName?: string;
88
+ });
89
+ readonly addHourly: (props: {
90
+ readonly item: TotalsInput;
91
+ readonly ttl: number;
92
+ }) => Promise<void>;
93
+ readonly addAggregate: (props: {
94
+ readonly grain: "day" | "month";
95
+ readonly item: TotalsInput;
96
+ }) => Promise<void>;
97
+ readonly buildHourlyUpdate: (props: {
98
+ readonly item: TotalsInput;
99
+ readonly ttl: number;
100
+ }) => TransactUpdateItem;
101
+ readonly buildAggregateUpdate: (props: {
102
+ readonly grain: "day" | "month";
103
+ readonly item: TotalsInput;
104
+ }) => TransactUpdateItem;
105
+ readonly queryWindow: (props: {
106
+ readonly grain: Grain;
107
+ readonly startKey: string;
108
+ readonly endKey: string;
109
+ }) => Promise<Array<TotalsItem>>;
110
+ readonly getOne: (props: {
111
+ readonly grain: Grain;
112
+ readonly timeKey: string;
113
+ }) => Promise<TotalsItem | undefined>;
114
+ private readonly buildUpdateMembers;
115
+ private readonly parseOne;
116
+ }
117
+ interface BreakdownRow {
118
+ readonly value: string;
119
+ readonly hits: number;
120
+ readonly bytes: number;
121
+ }
122
+ interface SummedTotals {
123
+ readonly hits: number;
124
+ readonly success: number;
125
+ readonly errors: number;
126
+ readonly errors4xx: number;
127
+ readonly errors5xx: number;
128
+ readonly bytesSent: number;
129
+ readonly bytesReceived: number;
130
+ }
131
+ declare function sumTotals(items: Array<TotalsInput>): SummedTotals;
132
+ declare function sumBreakdown(items: Array<BreakdownRow>): Array<BreakdownRow>;
133
+ declare function topNWithOther({ items, n, otherValue }: {
134
+ items: Array<BreakdownRow>;
135
+ n: number;
136
+ otherValue: string;
137
+ }): Array<BreakdownRow>;
138
+ /**
139
+ * Normalized Glue/Parquet column names the processor's hourly query reads. Pass
140
+ * these as `CloudFrontAccessLoggingSettings`' `athena.recordFields` to deliver
141
+ * only the columns the processor needs, shrinking Parquet and cutting Athena cost.
142
+ */
143
+ declare const requiredRecordFields: readonly ["timestamp", "sc_status", "sc_bytes", "cs_bytes", "time_taken", "x_edge_result_type", "x_edge_detailed_result_type", "cs_uri_stem", "c_ip", "cs_user_agent"];
144
+ interface AthenaColumnMap {
145
+ readonly status: string;
146
+ readonly bytesSent: string;
147
+ readonly bytesReceived: string;
148
+ readonly timeTaken: string;
149
+ readonly resultType: string;
150
+ readonly detailedResultType: string;
151
+ readonly uriStem: string;
152
+ readonly clientIp: string;
153
+ readonly userAgent: string;
154
+ readonly timestamp: string;
155
+ }
156
+ /**
157
+ * Per-source SQL column references — the single source of truth for how each
158
+ * logical field is addressed in each table.
159
+ *
160
+ * v2 is the Parquet Glue table: Athena normalizes Parquet column names to
161
+ * lowercase with hyphens folded to underscores, and numeric columns are already
162
+ * typed, so no casting is needed.
163
+ *
164
+ * v1 is the legacy tab-delimited LazySimpleSerDe table: its column names contain
165
+ * hyphens and parentheses, so they must be double-quoted, and every numeric
166
+ * column is typed as string in the Glue schema, so arithmetic references must
167
+ * cast explicitly.
168
+ */
169
+ declare const columnMaps: Record<AppliedSource, AthenaColumnMap>;
170
+ interface HourParts {
171
+ readonly year: string;
172
+ readonly month: string;
173
+ readonly day: string;
174
+ readonly hour: string;
175
+ }
176
+ declare function hourKeyParts(hourKey: string): HourParts;
177
+ /**
178
+ * Builds ONE Athena statement that scans a single UTC hour and returns, in a
179
+ * single pass, the grand-total aggregate row plus per-status, per-device,
180
+ * per-path, and per-ip grouped rows via GROUPING SETS.
181
+ *
182
+ * Why no per-set LIMIT: GROUPING SETS cannot apply an independent LIMIT to each
183
+ * set within one statement. Rather than fragment the scan, the full grouped
184
+ * rows are returned and {@link runHourlyAthenaQuery} applies the `topPaths`
185
+ * top-N (folding the remainder into `__other__`) downstream via
186
+ * {@link topNWithOther}. `topPaths` is still threaded through this builder so
187
+ * callers have a single source of truth for the value.
188
+ */
189
+ declare function buildHourlyQuery({ table, source, hourKey, topPaths: _topPaths }: {
190
+ table: string;
191
+ source: AppliedSource;
192
+ hourKey: string;
193
+ topPaths: number;
194
+ }): string;
195
+ interface HourlyAthenaTotals {
196
+ readonly hits: number;
197
+ readonly success: number;
198
+ readonly errors: number;
199
+ readonly errors4xx: number;
200
+ readonly errors5xx: number;
201
+ readonly bytesSent: number;
202
+ readonly bytesReceived: number;
203
+ readonly p50TimeTaken: number;
204
+ readonly p95TimeTaken: number;
205
+ readonly cacheHitRatio: number;
206
+ readonly uniqueIpCount: number;
207
+ }
208
+ interface HourlyAthenaResult {
209
+ readonly totals: HourlyAthenaTotals;
210
+ readonly byStatus: Array<BreakdownRow>;
211
+ readonly byDevice: Array<BreakdownRow>;
212
+ readonly byPath: Array<BreakdownRow>;
213
+ readonly topIps: Array<{
214
+ ip: string;
215
+ hits: number;
216
+ }>;
217
+ }
218
+ declare function runHourlyAthenaQuery({ athena, database, table, workgroup, outputLocation, source, hourKey, topPaths }: {
219
+ athena: Pick<AthenaClient, "send">;
220
+ database: string;
221
+ table: string;
222
+ workgroup: string;
223
+ outputLocation?: string;
224
+ source: AppliedSource;
225
+ hourKey: string;
226
+ topPaths: number;
227
+ }): Promise<HourlyAthenaResult>;
228
+ import { DynamoDBDocumentClient as DynamoDBDocumentClient3, TransactWriteCommandInput as TransactWriteCommandInput3 } from "@aws-sdk/lib-dynamodb";
229
+ import * as v3 from "valibot";
230
+ type TransactWriteItem3 = NonNullable<TransactWriteCommandInput3["TransactItems"]>[number];
231
+ type UpdateMembers2 = NonNullable<TransactWriteItem3["Update"]>;
232
+ interface TransactUpdateItem2 {
233
+ readonly Update: UpdateMembers2;
234
+ }
235
+ interface BreakdownInput {
236
+ readonly value: string;
237
+ readonly hits: number;
238
+ readonly bytes: number;
239
+ }
240
+ declare const breakdownSchema: v3.ObjectSchema<{
241
+ readonly pk: v3.StringSchema<undefined>;
242
+ readonly sk: v3.StringSchema<undefined>;
243
+ readonly dimension: v3.PicklistSchema<readonly ["status", "country", "device", "path"], undefined>;
244
+ readonly grain: v3.PicklistSchema<readonly ["hour", "day", "month"], undefined>;
245
+ readonly periodKey: v3.StringSchema<undefined>;
246
+ readonly value: v3.StringSchema<undefined>;
247
+ readonly hits: v3.NumberSchema<undefined>;
248
+ readonly bytes: v3.NumberSchema<undefined>;
249
+ readonly ttl: v3.OptionalSchema<v3.NumberSchema<undefined>, undefined>;
250
+ }, undefined>;
251
+ type BreakdownItem = v3.InferOutput<typeof breakdownSchema>;
252
+ declare class Breakdowns {
253
+ private readonly props;
254
+ constructor(props: {
255
+ readonly dynamo: Pick<DynamoDBDocumentClient3, "send">;
256
+ readonly tableName: string;
257
+ readonly reverseIndexName?: string;
258
+ });
259
+ readonly addMany: (props: {
260
+ readonly dimension: Dimension;
261
+ readonly grain: Grain;
262
+ readonly periodKey: string;
263
+ readonly items: Array<BreakdownInput>;
264
+ readonly ttl?: number;
265
+ }) => Promise<void>;
266
+ readonly buildUpdates: (props: {
267
+ readonly dimension: Dimension;
268
+ readonly grain: Grain;
269
+ readonly periodKey: string;
270
+ readonly items: Array<BreakdownInput>;
271
+ readonly ttl?: number;
272
+ }) => Array<TransactUpdateItem2>;
273
+ readonly getForPeriod: (props: {
274
+ readonly dimension: Dimension;
275
+ readonly grain: Grain;
276
+ readonly periodKey: string;
277
+ }) => Promise<Array<BreakdownItem>>;
278
+ private readonly buildUpdateMembers;
279
+ private readonly parseOne;
280
+ }
281
+ type DeviceBucket = "mobile" | "desktop" | "bot" | "other";
282
+ declare function classifyDevice(userAgent: string): DeviceBucket;
283
+ import { AthenaClient as AthenaClient2 } from "@aws-sdk/client-athena";
284
+ import { DynamoDBDocumentClient as DynamoDBDocumentClient4, TransactWriteCommandInput as TransactWriteCommandInput4 } from "@aws-sdk/lib-dynamodb";
285
+ import { IpInfoCache } from "@beesolve/ip-info";
286
+ type TransactItem = NonNullable<TransactWriteCommandInput4["TransactItems"]>[number];
287
+ interface ProcessHourModels {
288
+ readonly totals: Pick<Totals, "buildHourlyUpdate">;
289
+ readonly breakdowns: Pick<Breakdowns, "buildUpdates">;
290
+ readonly markers: Pick<AppliedMarkers, "isApplied" | "buildMarkerPut">;
291
+ readonly ipCache: Pick<IpInfoCache, "enrichMany">;
292
+ }
293
+ interface ProcessHourAthena {
294
+ readonly client: Pick<AthenaClient2, "send">;
295
+ readonly database: string;
296
+ readonly table: string;
297
+ readonly workgroup: string;
298
+ readonly outputLocation?: string;
299
+ }
300
+ interface ProcessHourOptions {
301
+ readonly topPaths: number;
302
+ readonly hourlyTtlDays: number;
303
+ readonly ipInfoApiKey?: string;
304
+ }
305
+ interface ProcessHourResult {
306
+ readonly status: "applied" | "skipped";
307
+ }
308
+ declare function processHour({ hourKey, source, models, athena, options, dynamo }: {
309
+ hourKey: string;
310
+ source: AppliedSource;
311
+ models: ProcessHourModels;
312
+ athena: ProcessHourAthena;
313
+ options: ProcessHourOptions;
314
+ dynamo: Pick<DynamoDBDocumentClient4, "send">;
315
+ }): Promise<ProcessHourResult>;
316
+ declare function applyDailyRollup({ dayKey, models, dynamo }: {
317
+ dayKey: string;
318
+ models: RollupModels;
319
+ dynamo: Pick<DynamoDBDocumentClient4, "send">;
320
+ }): Promise<ProcessHourResult>;
321
+ declare function applyMonthlyRollup({ monthKey, models, dynamo }: {
322
+ monthKey: string;
323
+ models: RollupModels;
324
+ dynamo: Pick<DynamoDBDocumentClient4, "send">;
325
+ }): Promise<ProcessHourResult>;
326
+ declare function chunkTransactItems({ leading, rest, limit }: {
327
+ leading: Array<TransactItem>;
328
+ rest: Array<TransactItem>;
329
+ limit?: number;
330
+ }): Array<Array<TransactItem>>;
331
+ interface RollupModels {
332
+ readonly totals: Pick<Totals, "buildAggregateUpdate" | "queryWindow">;
333
+ readonly breakdowns: Pick<Breakdowns, "buildUpdates" | "getForPeriod">;
334
+ readonly markers: Pick<AppliedMarkers, "isApplied" | "buildMarkerPut">;
335
+ }
336
+ declare function yearKey(date: Date): string;
337
+ declare function monthKey2(date: Date): string;
338
+ declare function dayKey2(date: Date): string;
339
+ declare function hourKey2(date: Date): string;
340
+ declare function maxWindowFor(grain: Grain): number;
341
+ declare function shiftAnchor({ grain, anchor, size, direction }: {
342
+ grain: Grain;
343
+ anchor: Date;
344
+ size: number;
345
+ direction: "next" | "prev";
346
+ }): Date;
347
+ declare function windowKeys({ grain, anchor, size }: {
348
+ grain: Grain;
349
+ anchor: Date;
350
+ size: number;
351
+ }): {
352
+ startKey: string;
353
+ endKey: string;
354
+ };
355
+ declare function hoursBetween({ from, to }: {
356
+ from: Date;
357
+ to: Date;
358
+ }): Array<string>;
359
+ export { AppliedMarker, AppliedMarkers, AppliedSource, AthenaColumnMap, BreakdownInput, BreakdownItem, BreakdownRow, Breakdowns, DeviceBucket, Dimension, Grain, HourlyAthenaResult, HourlyAthenaTotals, ProcessHourAthena, ProcessHourModels, ProcessHourOptions, ProcessHourResult, SummedTotals, Totals, TotalsInput, TotalsItem, TransactItem, appliedMarkerSchema, appliedSources, applyDailyRollup, applyMonthlyRollup, breakdownSchema, buildHourlyQuery, chunkTransactItems, classifyDevice, columnMaps, dayKey2 as dayKey, dimensions, grains, hourKey2 as hourKey, hourKeyParts, hoursBetween, maxWindowFor, monthKey2 as monthKey, processHour, requiredRecordFields, runHourlyAthenaQuery, shiftAnchor, sumBreakdown, sumTotals, topNWithOther, totalsSchema, windowKeys, yearKey };