@shushed/helpers 0.0.203-bug-erp-770-20251208112219 → 0.0.203-validate-fix-20251208135144

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 (356) hide show
  1. package/dist/cjs/contracts/order.schema.json +231 -0
  2. package/dist/cjs/dist-dereferenced/asset.js +5 -0
  3. package/dist/cjs/dist-dereferenced/asset.js.map +1 -0
  4. package/dist/cjs/dist-dereferenced/category.js +5 -0
  5. package/dist/cjs/dist-dereferenced/category.js.map +1 -0
  6. package/dist/cjs/dist-dereferenced/country.js +5 -0
  7. package/dist/cjs/dist-dereferenced/country.js.map +1 -0
  8. package/dist/cjs/dist-dereferenced/currency.js +5 -0
  9. package/dist/cjs/dist-dereferenced/currency.js.map +1 -0
  10. package/dist/cjs/dist-dereferenced/customer-segment.js +5 -0
  11. package/dist/cjs/dist-dereferenced/customer-segment.js.map +1 -0
  12. package/dist/cjs/dist-dereferenced/development-colour.js +5 -0
  13. package/dist/cjs/dist-dereferenced/development-colour.js.map +1 -0
  14. package/dist/cjs/dist-dereferenced/index.js +70 -0
  15. package/dist/cjs/dist-dereferenced/index.js.map +1 -0
  16. package/dist/cjs/dist-dereferenced/marketing-preferences.js +5 -0
  17. package/dist/cjs/dist-dereferenced/marketing-preferences.js.map +1 -0
  18. package/dist/cjs/dist-dereferenced/messages/ean-change.js +5 -0
  19. package/dist/cjs/dist-dereferenced/messages/ean-change.js.map +1 -0
  20. package/dist/cjs/dist-dereferenced/messages/index.js +51 -0
  21. package/dist/cjs/dist-dereferenced/messages/index.js.map +1 -0
  22. package/dist/cjs/dist-dereferenced/messages/order/delivered.js +5 -0
  23. package/dist/cjs/dist-dereferenced/messages/order/delivered.js.map +1 -0
  24. package/dist/cjs/dist-dereferenced/messages/order/index.js +19 -0
  25. package/dist/cjs/dist-dereferenced/messages/order/index.js.map +1 -0
  26. package/dist/cjs/dist-dereferenced/messages/order/new.js +5 -0
  27. package/dist/cjs/dist-dereferenced/messages/order/new.js.map +1 -0
  28. package/dist/cjs/dist-dereferenced/messages/order/processed.js +5 -0
  29. package/dist/cjs/dist-dereferenced/messages/order/processed.js.map +1 -0
  30. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +5 -0
  31. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js.map +1 -0
  32. package/dist/cjs/dist-dereferenced/messages/order/returned.js +5 -0
  33. package/dist/cjs/dist-dereferenced/messages/order/returned.js.map +1 -0
  34. package/dist/cjs/dist-dereferenced/messages/order/shipped.js +5 -0
  35. package/dist/cjs/dist-dereferenced/messages/order/shipped.js.map +1 -0
  36. package/dist/cjs/dist-dereferenced/messages/price-change.js +5 -0
  37. package/dist/cjs/dist-dereferenced/messages/price-change.js.map +1 -0
  38. package/dist/cjs/dist-dereferenced/messages/product-category.js +5 -0
  39. package/dist/cjs/dist-dereferenced/messages/product-category.js.map +1 -0
  40. package/dist/cjs/dist-dereferenced/messages/product-draft.js +5 -0
  41. package/dist/cjs/dist-dereferenced/messages/product-draft.js.map +1 -0
  42. package/dist/cjs/dist-dereferenced/messages/product.js +5 -0
  43. package/dist/cjs/dist-dereferenced/messages/product.js.map +1 -0
  44. package/dist/cjs/dist-dereferenced/money.js +5 -0
  45. package/dist/cjs/dist-dereferenced/money.js.map +1 -0
  46. package/dist/cjs/dist-dereferenced/order/address.js +5 -0
  47. package/dist/cjs/dist-dereferenced/order/address.js.map +1 -0
  48. package/dist/cjs/dist-dereferenced/order/customer.js +5 -0
  49. package/dist/cjs/dist-dereferenced/order/customer.js.map +1 -0
  50. package/dist/cjs/dist-dereferenced/order/index.js +52 -0
  51. package/dist/cjs/dist-dereferenced/order/index.js.map +1 -0
  52. package/dist/cjs/dist-dereferenced/order/item.js +5 -0
  53. package/dist/cjs/dist-dereferenced/order/item.js.map +1 -0
  54. package/dist/cjs/dist-dereferenced/order/orderMain.js +5 -0
  55. package/dist/cjs/dist-dereferenced/order/orderMain.js.map +1 -0
  56. package/dist/cjs/dist-dereferenced/order/payment.js +5 -0
  57. package/dist/cjs/dist-dereferenced/order/payment.js.map +1 -0
  58. package/dist/cjs/dist-dereferenced/order/shipment/index.js +46 -0
  59. package/dist/cjs/dist-dereferenced/order/shipment/index.js.map +1 -0
  60. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js +12 -0
  61. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js.map +1 -0
  62. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +5 -0
  63. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js.map +1 -0
  64. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +5 -0
  65. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js.map +1 -0
  66. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js +14 -0
  67. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js.map +1 -0
  68. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +5 -0
  69. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js.map +1 -0
  70. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +5 -0
  71. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js.map +1 -0
  72. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +5 -0
  73. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js.map +1 -0
  74. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +5 -0
  75. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js.map +1 -0
  76. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js +14 -0
  77. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js.map +1 -0
  78. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +5 -0
  79. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js.map +1 -0
  80. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +5 -0
  81. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js.map +1 -0
  82. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +5 -0
  83. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js.map +1 -0
  84. package/dist/cjs/dist-dereferenced/price.js +5 -0
  85. package/dist/cjs/dist-dereferenced/price.js.map +1 -0
  86. package/dist/cjs/dist-dereferenced/product-category.js +5 -0
  87. package/dist/cjs/dist-dereferenced/product-category.js.map +1 -0
  88. package/dist/cjs/dist-dereferenced/product-draft.js +5 -0
  89. package/dist/cjs/dist-dereferenced/product-draft.js.map +1 -0
  90. package/dist/cjs/dist-dereferenced/product.js +5 -0
  91. package/dist/cjs/dist-dereferenced/product.js.map +1 -0
  92. package/dist/cjs/dist-dereferenced/stock.js +5 -0
  93. package/dist/cjs/dist-dereferenced/stock.js.map +1 -0
  94. package/dist/cjs/dist-dereferenced/total.js +5 -0
  95. package/dist/cjs/dist-dereferenced/total.js.map +1 -0
  96. package/dist/cjs/dist-types/asset.js +3 -0
  97. package/dist/cjs/dist-types/asset.js.map +1 -0
  98. package/dist/cjs/dist-types/category.js +3 -0
  99. package/dist/cjs/dist-types/category.js.map +1 -0
  100. package/dist/cjs/dist-types/country.js +3 -0
  101. package/dist/cjs/dist-types/country.js.map +1 -0
  102. package/dist/cjs/dist-types/currency.js +3 -0
  103. package/dist/cjs/dist-types/currency.js.map +1 -0
  104. package/dist/cjs/dist-types/customer-segment.js +3 -0
  105. package/dist/cjs/dist-types/customer-segment.js.map +1 -0
  106. package/dist/cjs/dist-types/development-colour.js +3 -0
  107. package/dist/cjs/dist-types/development-colour.js.map +1 -0
  108. package/dist/cjs/dist-types/index.js +39 -0
  109. package/dist/cjs/dist-types/index.js.map +1 -0
  110. package/dist/cjs/dist-types/marketing-preferences.js +3 -0
  111. package/dist/cjs/dist-types/marketing-preferences.js.map +1 -0
  112. package/dist/cjs/dist-types/messages/ean-change.js +3 -0
  113. package/dist/cjs/dist-types/messages/ean-change.js.map +1 -0
  114. package/dist/cjs/dist-types/messages/index.js +38 -0
  115. package/dist/cjs/dist-types/messages/index.js.map +1 -0
  116. package/dist/cjs/dist-types/messages/order/delivered.js +3 -0
  117. package/dist/cjs/dist-types/messages/order/delivered.js.map +1 -0
  118. package/dist/cjs/dist-types/messages/order/index.js +3 -0
  119. package/dist/cjs/dist-types/messages/order/index.js.map +1 -0
  120. package/dist/cjs/dist-types/messages/order/new.js +3 -0
  121. package/dist/cjs/dist-types/messages/order/new.js.map +1 -0
  122. package/dist/cjs/dist-types/messages/order/processed.js +3 -0
  123. package/dist/cjs/dist-types/messages/order/processed.js.map +1 -0
  124. package/dist/cjs/dist-types/messages/order/return-initiated.js +3 -0
  125. package/dist/cjs/dist-types/messages/order/return-initiated.js.map +1 -0
  126. package/dist/cjs/dist-types/messages/order/returned.js +3 -0
  127. package/dist/cjs/dist-types/messages/order/returned.js.map +1 -0
  128. package/dist/cjs/dist-types/messages/order/shipped.js +3 -0
  129. package/dist/cjs/dist-types/messages/order/shipped.js.map +1 -0
  130. package/dist/cjs/dist-types/messages/price-change.js +3 -0
  131. package/dist/cjs/dist-types/messages/price-change.js.map +1 -0
  132. package/dist/cjs/dist-types/messages/product-category.js +3 -0
  133. package/dist/cjs/dist-types/messages/product-category.js.map +1 -0
  134. package/dist/cjs/dist-types/messages/product-draft.js +3 -0
  135. package/dist/cjs/dist-types/messages/product-draft.js.map +1 -0
  136. package/dist/cjs/dist-types/messages/product.js +3 -0
  137. package/dist/cjs/dist-types/messages/product.js.map +1 -0
  138. package/dist/cjs/dist-types/money.js +3 -0
  139. package/dist/cjs/dist-types/money.js.map +1 -0
  140. package/dist/cjs/dist-types/order/address.js +3 -0
  141. package/dist/cjs/dist-types/order/address.js.map +1 -0
  142. package/dist/cjs/dist-types/order/customer.js +3 -0
  143. package/dist/cjs/dist-types/order/customer.js.map +1 -0
  144. package/dist/cjs/dist-types/order/index.js +38 -0
  145. package/dist/cjs/dist-types/order/index.js.map +1 -0
  146. package/dist/cjs/dist-types/order/item.js +3 -0
  147. package/dist/cjs/dist-types/order/item.js.map +1 -0
  148. package/dist/cjs/dist-types/order/orderMain.js +3 -0
  149. package/dist/cjs/dist-types/order/orderMain.js.map +1 -0
  150. package/dist/cjs/dist-types/order/payment.js +3 -0
  151. package/dist/cjs/dist-types/order/payment.js.map +1 -0
  152. package/dist/cjs/dist-types/order/shipment/index.js +40 -0
  153. package/dist/cjs/dist-types/order/shipment/index.js.map +1 -0
  154. package/dist/cjs/dist-types/order/shipment/item/index.js +3 -0
  155. package/dist/cjs/dist-types/order/shipment/item/index.js.map +1 -0
  156. package/dist/cjs/dist-types/order/shipment/item/itemMain.js +3 -0
  157. package/dist/cjs/dist-types/order/shipment/item/itemMain.js.map +1 -0
  158. package/dist/cjs/dist-types/order/shipment/item/returned.js +3 -0
  159. package/dist/cjs/dist-types/order/shipment/item/returned.js.map +1 -0
  160. package/dist/cjs/dist-types/order/shipment/pos/index.js +3 -0
  161. package/dist/cjs/dist-types/order/shipment/pos/index.js.map +1 -0
  162. package/dist/cjs/dist-types/order/shipment/pos/outbound.js +3 -0
  163. package/dist/cjs/dist-types/order/shipment/pos/outbound.js.map +1 -0
  164. package/dist/cjs/dist-types/order/shipment/pos/posMain.js +3 -0
  165. package/dist/cjs/dist-types/order/shipment/pos/posMain.js.map +1 -0
  166. package/dist/cjs/dist-types/order/shipment/pos/return.js +3 -0
  167. package/dist/cjs/dist-types/order/shipment/pos/return.js.map +1 -0
  168. package/dist/cjs/dist-types/order/shipment/shipmentMain.js +3 -0
  169. package/dist/cjs/dist-types/order/shipment/shipmentMain.js.map +1 -0
  170. package/dist/cjs/dist-types/order/shipment/shipped/index.js +3 -0
  171. package/dist/cjs/dist-types/order/shipment/shipped/index.js.map +1 -0
  172. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js +3 -0
  173. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js.map +1 -0
  174. package/dist/cjs/dist-types/order/shipment/shipped/return.js +3 -0
  175. package/dist/cjs/dist-types/order/shipment/shipped/return.js.map +1 -0
  176. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js +3 -0
  177. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js.map +1 -0
  178. package/dist/cjs/dist-types/price.js +3 -0
  179. package/dist/cjs/dist-types/price.js.map +1 -0
  180. package/dist/cjs/dist-types/product-category.js +3 -0
  181. package/dist/cjs/dist-types/product-category.js.map +1 -0
  182. package/dist/cjs/dist-types/product-draft.js +3 -0
  183. package/dist/cjs/dist-types/product-draft.js.map +1 -0
  184. package/dist/cjs/dist-types/product.js +3 -0
  185. package/dist/cjs/dist-types/product.js.map +1 -0
  186. package/dist/cjs/dist-types/stock.js +3 -0
  187. package/dist/cjs/dist-types/stock.js.map +1 -0
  188. package/dist/cjs/dist-types/total.js +3 -0
  189. package/dist/cjs/dist-types/total.js.map +1 -0
  190. package/dist/cjs/index.js +40 -0
  191. package/dist/cjs/index.js.map +1 -0
  192. package/dist/cjs/src-public/airtable.js +626 -0
  193. package/dist/cjs/src-public/airtable.js.map +1 -0
  194. package/dist/cjs/src-public/bcOrder.js +944 -0
  195. package/dist/cjs/src-public/bcOrder.js.map +1 -0
  196. package/dist/cjs/src-public/bigquery.js +60 -0
  197. package/dist/cjs/src-public/bigquery.js.map +1 -0
  198. package/dist/cjs/src-public/centra.js +1054 -0
  199. package/dist/cjs/src-public/centra.js.map +1 -0
  200. package/dist/cjs/src-public/cloudtasks.js +208 -0
  201. package/dist/cjs/src-public/cloudtasks.js.map +1 -0
  202. package/dist/cjs/src-public/dato.js +638 -0
  203. package/dist/cjs/src-public/dato.js.map +1 -0
  204. package/dist/cjs/src-public/env.js +901 -0
  205. package/dist/cjs/src-public/env.js.map +1 -0
  206. package/dist/cjs/src-public/getEventTime.js +29 -0
  207. package/dist/cjs/src-public/getEventTime.js.map +1 -0
  208. package/dist/cjs/src-public/index.js +55 -0
  209. package/dist/cjs/src-public/index.js.map +1 -0
  210. package/dist/cjs/src-public/ipValidation.js +168 -0
  211. package/dist/cjs/src-public/ipValidation.js.map +1 -0
  212. package/dist/cjs/src-public/jwks.js +109 -0
  213. package/dist/cjs/src-public/jwks.js.map +1 -0
  214. package/dist/cjs/src-public/pubsub.js +424 -0
  215. package/dist/cjs/src-public/pubsub.js.map +1 -0
  216. package/dist/cjs/src-public/rateLimit.js +141 -0
  217. package/dist/cjs/src-public/rateLimit.js.map +1 -0
  218. package/dist/cjs/src-public/redisClient.js +45 -0
  219. package/dist/cjs/src-public/redisClient.js.map +1 -0
  220. package/dist/cjs/src-public/runtime.js +146 -0
  221. package/dist/cjs/src-public/runtime.js.map +1 -0
  222. package/dist/cjs/src-public/sanitize.js +26 -0
  223. package/dist/cjs/src-public/sanitize.js.map +1 -0
  224. package/dist/cjs/src-public/scheduler.js +248 -0
  225. package/dist/cjs/src-public/scheduler.js.map +1 -0
  226. package/dist/cjs/src-public/secret.js +17 -0
  227. package/dist/cjs/src-public/secret.js.map +1 -0
  228. package/dist/cjs/src-public/setHeaders.js +17 -0
  229. package/dist/cjs/src-public/setHeaders.js.map +1 -0
  230. package/dist/cjs/src-public/types.js +3 -0
  231. package/dist/cjs/src-public/types.js.map +1 -0
  232. package/dist/cjs/src-public/utils.js +458 -0
  233. package/dist/cjs/src-public/utils.js.map +1 -0
  234. package/dist/cjs/src-public/validate.js +47 -0
  235. package/dist/cjs/src-public/validate.js.map +1 -0
  236. package/dist/package.json +6 -3
  237. package/dist/types/dist-dereferenced/asset.d.ts +51 -0
  238. package/dist/types/dist-dereferenced/category.d.ts +58 -0
  239. package/dist/types/dist-dereferenced/country.d.ts +8 -0
  240. package/dist/types/dist-dereferenced/currency.d.ts +8 -0
  241. package/dist/types/dist-dereferenced/customer-segment.d.ts +26 -0
  242. package/dist/types/dist-dereferenced/development-colour.d.ts +114 -0
  243. package/dist/types/dist-dereferenced/index.d.ts +16 -0
  244. package/dist/types/dist-dereferenced/marketing-preferences.d.ts +31 -0
  245. package/dist/types/dist-dereferenced/messages/ean-change.d.ts +17 -0
  246. package/dist/types/dist-dereferenced/messages/index.d.ts +6 -0
  247. package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +3438 -0
  248. package/dist/types/dist-dereferenced/messages/order/index.d.ts +6 -0
  249. package/dist/types/dist-dereferenced/messages/order/new.d.ts +3438 -0
  250. package/dist/types/dist-dereferenced/messages/order/processed.d.ts +3432 -0
  251. package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +3438 -0
  252. package/dist/types/dist-dereferenced/messages/order/returned.d.ts +3437 -0
  253. package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +3436 -0
  254. package/dist/types/dist-dereferenced/messages/price-change.d.ts +67 -0
  255. package/dist/types/dist-dereferenced/messages/product-category.d.ts +33 -0
  256. package/dist/types/dist-dereferenced/messages/product-draft.d.ts +589 -0
  257. package/dist/types/dist-dereferenced/messages/product.d.ts +628 -0
  258. package/dist/types/dist-dereferenced/money.d.ts +41 -0
  259. package/dist/types/dist-dereferenced/order/address.d.ts +98 -0
  260. package/dist/types/dist-dereferenced/order/customer.d.ts +312 -0
  261. package/dist/types/dist-dereferenced/order/index.d.ts +3428 -0
  262. package/dist/types/dist-dereferenced/order/item.d.ts +339 -0
  263. package/dist/types/dist-dereferenced/order/orderMain.d.ts +3423 -0
  264. package/dist/types/dist-dereferenced/order/payment.d.ts +110 -0
  265. package/dist/types/dist-dereferenced/order/shipment/index.d.ts +253 -0
  266. package/dist/types/dist-dereferenced/order/shipment/item/index.d.ts +19 -0
  267. package/dist/types/dist-dereferenced/order/shipment/item/itemMain.d.ts +18 -0
  268. package/dist/types/dist-dereferenced/order/shipment/item/returned.d.ts +34 -0
  269. package/dist/types/dist-dereferenced/order/shipment/pos/index.d.ts +282 -0
  270. package/dist/types/dist-dereferenced/order/shipment/pos/outbound.d.ts +319 -0
  271. package/dist/types/dist-dereferenced/order/shipment/pos/posMain.d.ts +280 -0
  272. package/dist/types/dist-dereferenced/order/shipment/pos/return.d.ts +330 -0
  273. package/dist/types/dist-dereferenced/order/shipment/shipmentMain.d.ts +250 -0
  274. package/dist/types/dist-dereferenced/order/shipment/shipped/index.d.ts +288 -0
  275. package/dist/types/dist-dereferenced/order/shipment/shipped/outbound.d.ts +286 -0
  276. package/dist/types/dist-dereferenced/order/shipment/shipped/return.d.ts +287 -0
  277. package/dist/types/dist-dereferenced/order/shipment/shipped/shippedMain.d.ts +286 -0
  278. package/dist/types/dist-dereferenced/price.d.ts +58 -0
  279. package/dist/types/dist-dereferenced/product-category.d.ts +24 -0
  280. package/dist/types/dist-dereferenced/product-draft.d.ts +580 -0
  281. package/dist/types/dist-dereferenced/product.d.ts +619 -0
  282. package/dist/types/dist-dereferenced/stock.d.ts +74 -0
  283. package/dist/types/dist-dereferenced/total.d.ts +172 -0
  284. package/dist/types/dist-types/asset.d.ts +16 -0
  285. package/dist/types/dist-types/category.d.ts +20 -0
  286. package/dist/types/dist-types/country.d.ts +2 -0
  287. package/dist/types/dist-types/currency.d.ts +2 -0
  288. package/dist/types/dist-types/customer-segment.d.ts +6 -0
  289. package/dist/types/dist-types/development-colour.d.ts +31 -0
  290. package/dist/types/dist-types/index.d.ts +16 -0
  291. package/dist/types/dist-types/marketing-preferences.d.ts +9 -0
  292. package/dist/types/dist-types/messages/ean-change.d.ts +5 -0
  293. package/dist/types/dist-types/messages/index.d.ts +6 -0
  294. package/dist/types/dist-types/messages/order/delivered.d.ts +300 -0
  295. package/dist/types/dist-types/messages/order/index.d.ts +6 -0
  296. package/dist/types/dist-types/messages/order/new.d.ts +300 -0
  297. package/dist/types/dist-types/messages/order/processed.d.ts +300 -0
  298. package/dist/types/dist-types/messages/order/return-initiated.d.ts +300 -0
  299. package/dist/types/dist-types/messages/order/returned.d.ts +301 -0
  300. package/dist/types/dist-types/messages/order/shipped.d.ts +301 -0
  301. package/dist/types/dist-types/messages/price-change.d.ts +16 -0
  302. package/dist/types/dist-types/messages/product-category.d.ts +7 -0
  303. package/dist/types/dist-types/messages/product-draft.d.ts +136 -0
  304. package/dist/types/dist-types/messages/product.d.ts +144 -0
  305. package/dist/types/dist-types/money.d.ts +11 -0
  306. package/dist/types/dist-types/order/address.d.ts +27 -0
  307. package/dist/types/dist-types/order/customer.d.ts +82 -0
  308. package/dist/types/dist-types/order/index.d.ts +8 -0
  309. package/dist/types/dist-types/order/item.d.ts +86 -0
  310. package/dist/types/dist-types/order/orderMain.d.ts +297 -0
  311. package/dist/types/dist-types/order/payment.d.ts +30 -0
  312. package/dist/types/dist-types/order/shipment/index.d.ts +6 -0
  313. package/dist/types/dist-types/order/shipment/item/index.d.ts +4 -0
  314. package/dist/types/dist-types/order/shipment/item/itemMain.d.ts +6 -0
  315. package/dist/types/dist-types/order/shipment/item/returned.d.ts +11 -0
  316. package/dist/types/dist-types/order/shipment/pos/index.d.ts +5 -0
  317. package/dist/types/dist-types/order/shipment/pos/outbound.d.ts +76 -0
  318. package/dist/types/dist-types/order/shipment/pos/posMain.d.ts +71 -0
  319. package/dist/types/dist-types/order/shipment/pos/return.d.ts +75 -0
  320. package/dist/types/dist-types/order/shipment/shipmentMain.d.ts +62 -0
  321. package/dist/types/dist-types/order/shipment/shipped/index.d.ts +5 -0
  322. package/dist/types/dist-types/order/shipment/shipped/outbound.d.ts +68 -0
  323. package/dist/types/dist-types/order/shipment/shipped/return.d.ts +68 -0
  324. package/dist/types/dist-types/order/shipment/shipped/shippedMain.d.ts +69 -0
  325. package/dist/types/dist-types/price.d.ts +15 -0
  326. package/dist/types/dist-types/product-category.d.ts +6 -0
  327. package/dist/types/dist-types/product-draft.d.ts +135 -0
  328. package/dist/types/dist-types/product.d.ts +143 -0
  329. package/dist/types/dist-types/stock.d.ts +19 -0
  330. package/dist/types/dist-types/total.d.ts +44 -0
  331. package/dist/types/index.d.ts +3 -0
  332. package/dist/types/src-public/airtable.d.ts +227 -0
  333. package/dist/types/src-public/bcOrder.d.ts +84 -0
  334. package/dist/types/src-public/bigquery.d.ts +17 -0
  335. package/dist/types/src-public/centra.d.ts +176 -0
  336. package/dist/types/src-public/cloudtasks.d.ts +74 -0
  337. package/dist/types/src-public/dato.d.ts +88 -0
  338. package/dist/types/src-public/env.d.ts +144 -0
  339. package/dist/types/src-public/getEventTime.d.ts +1 -0
  340. package/dist/types/src-public/index.d.ts +19 -0
  341. package/dist/types/src-public/ipValidation.d.ts +15 -0
  342. package/dist/types/src-public/jwks.d.ts +15 -0
  343. package/dist/types/src-public/pubsub.d.ts +95 -0
  344. package/dist/types/src-public/rateLimit.d.ts +21 -0
  345. package/dist/types/src-public/redisClient.d.ts +6 -0
  346. package/dist/types/src-public/runtime.d.ts +58 -0
  347. package/dist/types/src-public/sanitize.d.ts +4 -0
  348. package/dist/types/src-public/scheduler.d.ts +71 -0
  349. package/dist/types/src-public/secret.d.ts +6 -0
  350. package/dist/types/src-public/setHeaders.d.ts +13 -0
  351. package/dist/types/src-public/types.d.ts +264 -0
  352. package/dist/types/src-public/utils.d.ts +101 -0
  353. package/dist/types/src-public/validate.d.ts +9 -0
  354. package/package.json +7 -4
  355. package/dist/index.d.ts +0 -34970
  356. package/dist/index.js +0 -113321
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FUNCTION_EXPR_ERROR = exports.getIdentityToken = exports.getAccessToken = exports.parseDateOrDefault = exports.validateGoogleAuth = exports.isCloudTask = exports.isRespectfulNudge = exports.isCronMessage = exports.isPubSubRequest = void 0;
7
+ exports.getEventTime = getEventTime;
8
+ exports.shortHash = shortHash;
9
+ exports.slugify = slugify;
10
+ exports.getFirestore = getFirestore;
11
+ exports.createHandlerDecorator = createHandlerDecorator;
12
+ exports.getSecret = getSecret;
13
+ exports.splitTimeToArr = splitTimeToArr;
14
+ exports.minutesAgo = minutesAgo;
15
+ exports.setRetryAfterVariable = setRetryAfterVariable;
16
+ exports.createFunction = createFunction;
17
+ exports.createOnResponse = createOnResponse;
18
+ exports.onResponse = onResponse;
19
+ exports.parsePrices = parsePrices;
20
+ const crypto_1 = __importDefault(require("crypto"));
21
+ const firestore_1 = require("@google-cloud/firestore");
22
+ const jwks_1 = __importDefault(require("./jwks"));
23
+ const isPubSubRequest = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'CloudPubSub-Google'
24
+ || (headers['User-Agent'] || headers['user-agent'] || '').indexOf('APIs-Google') !== -1;
25
+ exports.isPubSubRequest = isPubSubRequest;
26
+ const isCronMessage = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'Google-Cloud-Scheduler';
27
+ exports.isCronMessage = isCronMessage;
28
+ const isRespectfulNudge = (headers) => (headers['User-Agent'] || headers['user-agent'] || '') === 'Respectful-Nudge';
29
+ exports.isRespectfulNudge = isRespectfulNudge;
30
+ const isCloudTask = (headers) => (headers['User-Agent'] || headers['user-agent'] || '').indexOf('CloudTasks-Google') !== -1
31
+ || (headers['User-Agent'] || headers['user-agent'] || '').indexOf('Google-Cloud-Tasks') !== -1;
32
+ exports.isCloudTask = isCloudTask;
33
+ const validateGoogleAuth = async (opts, headers, firestore) => {
34
+ const token = headers.authorization?.split(" ")[1];
35
+ if (!token) {
36
+ throw new Error("Missing authorization header or invalid format, needs to be in format: Bearer <IdToken>");
37
+ }
38
+ let result;
39
+ try {
40
+ const jwksHelper = new jwks_1.default(opts, firestore);
41
+ result = await jwksHelper.validateAuthorizationHeader(token, opts.serviceAccount);
42
+ }
43
+ catch (err) {
44
+ throw new Error('Invalid authorization header ' + err.message);
45
+ }
46
+ return result;
47
+ };
48
+ exports.validateGoogleAuth = validateGoogleAuth;
49
+ const parseDateOrDefault = (date, defaultValue = null) => {
50
+ if (!date) {
51
+ return defaultValue;
52
+ }
53
+ if (date instanceof Date) {
54
+ if (isNaN(date.getTime())) {
55
+ return defaultValue;
56
+ }
57
+ return date;
58
+ }
59
+ const dateObj = new Date(date);
60
+ if (isNaN(dateObj.getTime())) {
61
+ return defaultValue;
62
+ }
63
+ return dateObj;
64
+ };
65
+ exports.parseDateOrDefault = parseDateOrDefault;
66
+ function getEventTime(x, defaultValue) {
67
+ const possibleKeys = [
68
+ 'last_modified_date_time',
69
+ 'record_modified_at',
70
+ 'last_modified_date',
71
+ 'last_modified_datetime',
72
+ 'last_modified_date_time',
73
+ 'lastModifiedDateTime',
74
+ 'lastModifiedAt',
75
+ 'last_modified_at',
76
+ 'SystemModifiedAt',
77
+ 'system_modified_at',
78
+ 'lastUpdatedAt',
79
+ 'modified_at',
80
+ 'last_updated_at',
81
+ 'modifiedAt',
82
+ ];
83
+ for (let i = 0; i < possibleKeys.length; i++) {
84
+ if (x[possibleKeys[i]]) {
85
+ const possibleDateTime = new Date(x[possibleKeys[i]]);
86
+ if (!isNaN(possibleDateTime.getTime())) {
87
+ return possibleDateTime;
88
+ }
89
+ }
90
+ }
91
+ return defaultValue;
92
+ }
93
+ function shortHash(input) {
94
+ const hash = crypto_1.default.createHash('sha256').update(input).digest();
95
+ const base64 = hash.toString('base64')
96
+ .replace(/\+/g, '-')
97
+ .replace(/\//g, '_')
98
+ .replace(/=+$/, '');
99
+ return base64.substring(0, 8);
100
+ }
101
+ function slugify(input) {
102
+ return input
103
+ .toLowerCase()
104
+ .replace(/[()]/g, '')
105
+ .replace(/[^a-z0-9\s-]/g, '')
106
+ .replace(/[\s-]+/g, '-')
107
+ .replace(/^-+|-+$/g, '');
108
+ }
109
+ global.BUILDSHIP_FIRESTORE_V7_CACHE = global.BUILDSHIP_FIRESTORE_V7_CACHE || {};
110
+ const DEFAULT_BRANCH = 'migratedprod';
111
+ function getFirestore(systemEnvName) {
112
+ const firebaseDb = (systemEnvName === DEFAULT_BRANCH ? '(default)' : systemEnvName);
113
+ if (!global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName]) {
114
+ let firestore;
115
+ if (global.BUILDSHIP_FIRESTORE_V7_INSTANCE) {
116
+ firestore = global.BUILDSHIP_FIRESTORE_V7_INSTANCE;
117
+ if (firestore.databaseId !== firebaseDb) {
118
+ firestore = new global.BUILDSHIP_FIRESTORE_V7_INSTANCE.constructor({
119
+ projectId: process.env.GCLOUD_PROJECT,
120
+ databaseId: firebaseDb,
121
+ });
122
+ }
123
+ }
124
+ else {
125
+ firestore = new firestore_1.Firestore({
126
+ projectId: process.env.GCLOUD_PROJECT,
127
+ databaseId: firebaseDb,
128
+ });
129
+ }
130
+ global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName] = firestore;
131
+ }
132
+ return global.BUILDSHIP_FIRESTORE_V7_CACHE[systemEnvName];
133
+ }
134
+ function createHandlerDecorator(decoratorFactory) {
135
+ return decoratorFactory;
136
+ }
137
+ async function getSecret(runtime, name, accessToken) {
138
+ if (name.startsWith('process.secret.')) {
139
+ name = name.slice('process.secret.'.length);
140
+ }
141
+ try {
142
+ const projectId = process.env.GCLOUD_PROJECT;
143
+ if (!projectId) {
144
+ throw new Error('GCLOUD_PROJECT env is not set');
145
+ }
146
+ const url = `https://secretmanager.googleapis.com/v1/projects/${projectId}/secrets/${runtime.systemEnvName}---${name}/versions/latest:access`;
147
+ const res = await fetch(url, {
148
+ headers: { Authorization: `Bearer ${accessToken}` }
149
+ });
150
+ if (!res.ok) {
151
+ const text = await res.text();
152
+ throw new Error(`secret access http ${res.status}: ${text}`);
153
+ }
154
+ const json = await res.json();
155
+ const dataB64 = json?.payload?.data || '';
156
+ if (!dataB64)
157
+ return '';
158
+ const payload = Buffer.from(dataB64, 'base64').toString('utf-8');
159
+ return payload;
160
+ }
161
+ catch (err) {
162
+ throw new Error(`Failed to get secret ${name}. Error: ${err.message}`);
163
+ }
164
+ }
165
+ const getAccessToken = async () => {
166
+ const metadataUrl = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token';
167
+ try {
168
+ const res = await fetch(metadataUrl, {
169
+ headers: { 'Metadata-Flavor': 'Google' }
170
+ });
171
+ if (!res.ok) {
172
+ throw new Error(`metadata token http ${res.status}`);
173
+ }
174
+ const json = await res.json();
175
+ if (!json.access_token) {
176
+ throw new Error('missing access_token in metadata response');
177
+ }
178
+ return json.access_token;
179
+ }
180
+ catch (err) {
181
+ throw new Error(`Failed to obtain access token. Error: ${err.message}`);
182
+ }
183
+ };
184
+ exports.getAccessToken = getAccessToken;
185
+ const getIdentityToken = async (expectedAudience) => {
186
+ const metadataUrl = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?' + new URLSearchParams({
187
+ audience: expectedAudience,
188
+ format: 'full',
189
+ }).toString();
190
+ try {
191
+ const res = await fetch(metadataUrl, {
192
+ headers: { 'Metadata-Flavor': 'Google' }
193
+ });
194
+ if (!res.ok) {
195
+ throw new Error(`metadata token http ${res.status}`);
196
+ }
197
+ const accessToken = await res.text();
198
+ if (!accessToken) {
199
+ throw new Error('missing access_token in metadata response');
200
+ }
201
+ return accessToken;
202
+ }
203
+ catch (err) {
204
+ throw new Error(`Failed to obtain identity token. Error: ${err.message}`);
205
+ }
206
+ };
207
+ exports.getIdentityToken = getIdentityToken;
208
+ function splitTimeToArr(date = new Date()) {
209
+ return [date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()];
210
+ }
211
+ function minutesAgo(minutes) {
212
+ return new Date(Date.now() - minutes * 60 * 1000).toISOString();
213
+ }
214
+ function setRetryAfterVariable(value, options) {
215
+ if (!options.root || !options.root.state) {
216
+ return null;
217
+ }
218
+ let v = null;
219
+ if (value instanceof Response) {
220
+ v = value.headers.get('retry-after') || null;
221
+ }
222
+ else if (typeof value === 'object') {
223
+ if (value instanceof Headers) {
224
+ v = value.get('retry-after') || null;
225
+ }
226
+ else {
227
+ v = value['retry-after'] || null;
228
+ }
229
+ }
230
+ else if (typeof value === 'string') {
231
+ v = value;
232
+ }
233
+ let normV = 0;
234
+ if (v) {
235
+ if (/^\d+$/.test(v)) {
236
+ normV = new Date(Date.now() + parseInt(v) * 1000).getTime();
237
+ }
238
+ else {
239
+ normV = new Date(v).getTime();
240
+ }
241
+ if (isNaN(normV)) {
242
+ normV = 0;
243
+ }
244
+ }
245
+ else {
246
+ normV = 0;
247
+ }
248
+ if (!(options.root && options.root.state)) {
249
+ return null;
250
+ }
251
+ let existingV = 0;
252
+ if (options.root.state['_$hsRetryAfter_']) {
253
+ existingV = new Date(options.root.state['_$hsRetryAfter_']).getTime();
254
+ if (isNaN(existingV)) {
255
+ existingV = 0;
256
+ }
257
+ }
258
+ if (normV > existingV) {
259
+ options.root.state['_$hsRetryAfter_'] = new Date(normV).toISOString();
260
+ return new Date(normV).toISOString();
261
+ }
262
+ return options.root.state['_$hsRetryAfter_'] ?? null;
263
+ }
264
+ global.functionsCache = global.functionsCache || {};
265
+ exports.FUNCTION_EXPR_ERROR = Symbol('function');
266
+ function createFunction(expression) {
267
+ if (!global.functionsCache[expression]) {
268
+ global.functionsCache[expression] = new Function('symbol', 'payload', 'try { return ' + expression + ' } catch (err) { return symbol; }');
269
+ }
270
+ return (payload) => global.functionsCache[expression](exports.FUNCTION_EXPR_ERROR, payload);
271
+ }
272
+ function createOnResponse(opts) {
273
+ return (config, options) => onResponse(config, options, opts.requiredFlag);
274
+ }
275
+ function onResponse(config, options, requiredFlag) {
276
+ const triggerOutput = options.root[options.triggerId || options.trigger?.id];
277
+ const flags = triggerOutput?.flags;
278
+ const numberOfInputMessages = triggerOutput?.body?.length ?? 0;
279
+ const outputBody = config.outputs?.body;
280
+ const outputStatus = config.outputs?.status;
281
+ requiredFlag = config.config?.requiredFlag || requiredFlag;
282
+ let headersToSet = {};
283
+ if (outputBody?.headersToSet) {
284
+ headersToSet = outputBody.headersToSet;
285
+ }
286
+ if (options.root?.state?.['_$hsRetryAfter_'] && !Object.keys(headersToSet).some(x => x.toLocaleLowerCase() === 'retry-after')) {
287
+ const retryAfter = options.root.state['_$hsRetryAfter_'];
288
+ headersToSet['retry-after'] = retryAfter;
289
+ }
290
+ if (headersToSet) {
291
+ for (const [key, value] of Object.entries(headersToSet)) {
292
+ options.request.headers[key] = value;
293
+ }
294
+ }
295
+ if (!triggerOutput) {
296
+ return;
297
+ }
298
+ let responsePayload;
299
+ if (outputBody?.headersToSet && outputBody?.responses) {
300
+ responsePayload = outputBody.responses;
301
+ }
302
+ else {
303
+ responsePayload = outputBody;
304
+ }
305
+ const redactedResponse = {
306
+ message: `<Redacted Response>. Client does not have required permission flag: ${requiredFlag}`,
307
+ error: false,
308
+ };
309
+ if (responsePayload && Array.isArray(responsePayload) && responsePayload.length === numberOfInputMessages) {
310
+ return {
311
+ status: headersToSet['retry-after'] ? 429 : (outputStatus ? outputStatus : ((responsePayload && responsePayload instanceof Error) ? 500 : 200)),
312
+ value: responsePayload.map(x => {
313
+ if (x && typeof x === 'object' && x.statusCode && x.body) {
314
+ if (requiredFlag && !flags?.includes(requiredFlag) && !(x.body instanceof Error)) {
315
+ return Object.assign({}, x, { body: redactedResponse });
316
+ }
317
+ if (x.body instanceof Error) {
318
+ return Object.assign({}, x, { body: { message: x.body.message, error: true } });
319
+ }
320
+ return x;
321
+ }
322
+ return {
323
+ statusCode: x instanceof Error ? (headersToSet['retry-after'] ? 429 : 500) : 200,
324
+ body: x instanceof Error ? ({
325
+ message: x.message,
326
+ error: true
327
+ }) : (requiredFlag && flags?.includes(requiredFlag) ? x : redactedResponse),
328
+ };
329
+ })
330
+ };
331
+ }
332
+ return {
333
+ status: headersToSet['retry-after'] ? 429 : (outputStatus ? outputStatus : ((responsePayload && responsePayload instanceof Error) ? 500 : 200)),
334
+ value: responsePayload instanceof Error ? ({
335
+ message: responsePayload.message,
336
+ error: true
337
+ }) : (requiredFlag && flags?.includes(requiredFlag) ? responsePayload : redactedResponse),
338
+ cacheMaxAge: 0,
339
+ };
340
+ }
341
+ function parsePrices(priceData, timeZone = 'UTC') {
342
+ const result = [];
343
+ const defaultStartDate = convertDateToDatetimeTZ(new Date(0).toISOString(), timeZone);
344
+ const defaultEndDate = convertDateToDatetimeTZ(new Date('2099-01-01T00:00:00Z').toISOString(), timeZone);
345
+ for (let i = 0; i < priceData.length; i += 1) {
346
+ const priceChanges = (priceData[i].price_changes || []).map(x => ({
347
+ effective_from: x.effective_from ? (!isNaN(new Date(x.effective_from).getTime()) ? convertDateToDatetimeTZ(x.effective_from, timeZone) : null) : defaultStartDate,
348
+ effective_until: x.effective_until ? (!isNaN(new Date(x.effective_until).getTime()) ? convertDateToDatetimeTZ(x.effective_until, timeZone) : null) : defaultEndDate,
349
+ price: x.price,
350
+ price_type: x.price_type,
351
+ }));
352
+ const rrpPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'rrp'));
353
+ const permPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'perm'));
354
+ const posPriceTypes = parsePriceType(priceChanges.filter((x) => x.price_type === 'pos'));
355
+ let currentPrice;
356
+ let currentPriceType;
357
+ if (rrpPriceTypes.current) {
358
+ currentPrice = rrpPriceTypes.current;
359
+ currentPriceType = 'rrp';
360
+ }
361
+ if (permPriceTypes.current) {
362
+ currentPrice = permPriceTypes.current;
363
+ currentPriceType = 'perm';
364
+ }
365
+ if (posPriceTypes.current) {
366
+ currentPrice = posPriceTypes.current;
367
+ currentPriceType = 'pos';
368
+ }
369
+ result.push({
370
+ ...priceData[i],
371
+ current_price: currentPrice,
372
+ current_price_type: currentPriceType,
373
+ rrp: rrpPriceTypes,
374
+ perm: permPriceTypes,
375
+ pos: posPriceTypes
376
+ });
377
+ }
378
+ return result;
379
+ }
380
+ function parsePriceType(priceTypeData, now = new Date()) {
381
+ if (!priceTypeData) {
382
+ return {
383
+ current: undefined,
384
+ historical: [],
385
+ future: []
386
+ };
387
+ }
388
+ const historicalEntries = [];
389
+ const futureEntries = [];
390
+ const currentEntries = [];
391
+ for (let i = 0; i < priceTypeData.length; i += 1) {
392
+ const price = priceTypeData[i];
393
+ if (price.effective_from !== null && price.effective_until !== null) {
394
+ const priceWithoutNulls = price;
395
+ if (priceWithoutNulls.effective_from.getTime() > priceWithoutNulls.effective_until.getTime()) {
396
+ continue;
397
+ }
398
+ else if (priceWithoutNulls.effective_from.getTime() > now.getTime()) {
399
+ futureEntries.push(priceWithoutNulls);
400
+ }
401
+ else if (priceWithoutNulls.effective_until.getTime() < now.getTime()) {
402
+ historicalEntries.push(priceWithoutNulls);
403
+ }
404
+ else {
405
+ currentEntries.push(priceWithoutNulls);
406
+ }
407
+ }
408
+ }
409
+ const [currentEntry, ...otherFutureEntries] = currentEntries.sort(createSortPriceTypes(false));
410
+ const sortedHistoricalEntries = historicalEntries.concat(otherFutureEntries).sort(createSortPriceTypes(true));
411
+ const sortedFutureEntries = futureEntries.sort(createSortPriceTypes(true));
412
+ return {
413
+ current: currentEntry,
414
+ historical: sortedHistoricalEntries,
415
+ future: sortedFutureEntries
416
+ };
417
+ }
418
+ function createSortPriceTypes(descending) {
419
+ return function (a, b) {
420
+ let effectiveFromSort;
421
+ if (descending) {
422
+ effectiveFromSort = b.effective_from.getTime() - a.effective_from.getTime();
423
+ }
424
+ else {
425
+ effectiveFromSort = a.effective_from.getTime() - b.effective_from.getTime();
426
+ }
427
+ if (effectiveFromSort === 0) {
428
+ if (!descending) {
429
+ return b.effective_until.getTime() - a.effective_until.getTime();
430
+ }
431
+ return a.effective_until.getTime() - b.effective_until.getTime();
432
+ }
433
+ return effectiveFromSort;
434
+ };
435
+ }
436
+ function convertDateToDatetimeTZ(dateString, timeZone) {
437
+ let normDateString = '';
438
+ if (dateString.includes('T')) {
439
+ normDateString = dateString.slice(0, 19);
440
+ }
441
+ else {
442
+ normDateString = dateString + 'T00:00:00';
443
+ }
444
+ console.error(dateString, normDateString + getOffsetString(timeZone));
445
+ return new Date(normDateString + getOffsetString(timeZone));
446
+ }
447
+ function getOffsetString(timeZone) {
448
+ const today = new Date(`${new Date().toISOString().slice(0, 10)}T00:00:00Z`);
449
+ const locale = today.toLocaleString("sv-SE", { timeZone });
450
+ const tzDate = new Date(locale);
451
+ const offsetMinutes = Math.ceil(tzDate.getTime() - today.getTime()) / 60000;
452
+ const sign = offsetMinutes >= 0 ? "+" : "-";
453
+ const abs = Math.abs(offsetMinutes);
454
+ const hours = String(Math.floor(abs / 60)).padStart(2, "0");
455
+ const minutes = String(abs % 60).padStart(2, "0");
456
+ return `${sign}${hours}:${minutes}`;
457
+ }
458
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src-public/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = validate;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const ajv_formats_1 = __importDefault(require("ajv-formats"));
9
+ function validate(payload, schema, options) {
10
+ const ajv = new ajv_1.default({
11
+ allErrors: true,
12
+ coerceTypes: false,
13
+ verbose: false,
14
+ strictSchema: false,
15
+ logger: {
16
+ log: options.log.log,
17
+ warn: options.log.log,
18
+ error: options.log.error,
19
+ },
20
+ });
21
+ (0, ajv_formats_1.default)(ajv);
22
+ const validate = ajv.compile(schema);
23
+ if (!validate(payload)) {
24
+ const errors = validate.errors?.map(error => `${error.instancePath} ${error.message}: ${JSON.stringify({
25
+ keyword: error.keyword,
26
+ instancePath: error.instancePath,
27
+ schemaPath: error.instancePath,
28
+ params: error.params,
29
+ propertyName: error.propertyName,
30
+ })}`) ||
31
+ [];
32
+ options.log.error(`Payload validation failed for object type '${schema.title || schema.$id}' because it did not match the expected schema.` +
33
+ errors.join('\n'));
34
+ throw new Error(`Payload validation failed for object type '${schema.title || schema.$id}' because it did not match the expected schema` +
35
+ errors.join('\n'));
36
+ }
37
+ else {
38
+ try {
39
+ options.log.log('Validation succeeded');
40
+ }
41
+ catch {
42
+ void 0;
43
+ }
44
+ return payload;
45
+ }
46
+ }
47
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src-public/validate.ts"],"names":[],"mappings":";;;;;AAQA,2BA2EC;AAnFD,8CAA0C;AAC1C,8DAAqC;AAOrC,SAAwB,QAAQ,CAC9B,OAAU,EACV,MAAyB,EACzB,OAEC;IAED,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC;QAClB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE;YACN,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;YACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;YACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK;SACzB;KACF,CAAC,CAAC;IACH,IAAA,qBAAU,EAAC,GAAG,CAAC,CAAC;IAgChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC;YACtF,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,YAAY;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,EAAE,CAAC;YACL,EAAE,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CACf,8CAA+C,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,GAAI,iDAAiD;YAC5I,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;QACF,MAAM,IAAI,KAAK,CACb,8CAA+C,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,GAAI,gDAAgD;YAC3I,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
package/dist/package.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "ajv-formats": "^3.0.1",
11
11
  "co-body": "^6.2.0",
12
12
  "jose": "^6.0.11",
13
+ "lodash.chunk": "^4.2.0",
13
14
  "lodash.clonedeep": "^4.5.0",
14
15
  "lodash.isequal": "^4.5.0",
15
16
  "lodash.omit": "^4.5.0",
@@ -17,13 +18,15 @@
17
18
  "mime-types": "^3.0.1",
18
19
  "p-limit": "^7.1.1",
19
20
  "rate-limiter-flexible": "^7.2.0",
20
- "uuid": "^11.1.0"
21
+ "uuid": "^11.1.0",
22
+ "redis": "^5.6.0",
23
+ "@google-cloud/firestore": "^7.11.1"
21
24
  },
22
25
  "files": [
23
26
  "dist"
24
27
  ],
25
- "main": "dist/index.js",
26
- "types": "dist/index.d.ts",
28
+ "main": "dist/cjs/index.js",
29
+ "types": "dist/types/index.d.ts",
27
30
  "publishConfig": {
28
31
  "access": "public"
29
32
  }
@@ -0,0 +1,51 @@
1
+ declare const schema: {
2
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
3
+ readonly title: "Asset";
4
+ readonly type: "object";
5
+ readonly additionalProperties: false;
6
+ readonly properties: {
7
+ readonly product_id: {
8
+ readonly type: "string";
9
+ };
10
+ readonly dash_id: {
11
+ readonly type: "string";
12
+ };
13
+ readonly dash_folder_path: {
14
+ readonly type: "string";
15
+ };
16
+ readonly source_url: {
17
+ readonly type: "string";
18
+ };
19
+ readonly created_at: {
20
+ readonly type: "string";
21
+ readonly format: "date-time";
22
+ };
23
+ readonly last_modified_at: {
24
+ readonly type: "string";
25
+ readonly format: "date-time";
26
+ };
27
+ readonly width: {
28
+ readonly type: "integer";
29
+ readonly minimum: 0;
30
+ };
31
+ readonly height: {
32
+ readonly type: "integer";
33
+ readonly minimum: 0;
34
+ };
35
+ readonly meta: {
36
+ readonly type: "object";
37
+ readonly additionalProperties: true;
38
+ };
39
+ readonly content_type: {
40
+ readonly type: "string";
41
+ readonly pattern: "^[a-z0-9-/]+$";
42
+ };
43
+ readonly file_name: {
44
+ readonly type: "string";
45
+ readonly pattern: "^[a-z0-9-.]+$";
46
+ };
47
+ };
48
+ readonly required: readonly ["source_url", "content_type", "last_modified_at"];
49
+ readonly $id: "https://shushed.example.com/asset.json";
50
+ };
51
+ export default schema;