@blazedpath/commons 0.2.2 → 0.3.1

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 (626) hide show
  1. package/README.md +4 -1
  2. package/dist/blz-base/health/index.d.ts +1 -0
  3. package/dist/blz-base/health/index.js +1 -0
  4. package/dist/blz-base/index.d.ts +108 -0
  5. package/dist/blz-base/index.js +1 -0
  6. package/dist/blz-cache/LruCache.d.ts +31 -0
  7. package/dist/blz-cache/LruCache.js +1 -0
  8. package/dist/blz-cache/index.d.ts +2 -0
  9. package/dist/blz-cache/index.js +1 -0
  10. package/dist/blz-config/index.d.ts +16 -0
  11. package/dist/blz-config/index.js +1 -0
  12. package/dist/blz-core/index.d.ts +32 -0
  13. package/dist/blz-core/index.js +1 -0
  14. package/dist/blz-cryptography/index.d.ts +2 -0
  15. package/dist/blz-cryptography/index.js +1 -0
  16. package/dist/blz-datetimes/index.d.ts +35 -0
  17. package/dist/blz-datetimes/index.js +1 -0
  18. package/dist/blz-file/fileService.d.ts +25 -0
  19. package/dist/blz-file/fileService.js +1 -0
  20. package/dist/blz-file/index.d.ts +2 -0
  21. package/dist/blz-file/index.js +1 -0
  22. package/dist/blz-file/index.test.js +1 -0
  23. package/dist/blz-file/lab.js +1 -0
  24. package/dist/blz-hazelcast/index.d.ts +25 -0
  25. package/dist/blz-hazelcast/index.js +1 -0
  26. package/dist/blz-hazelcast/lib/credentials.d.ts +10 -0
  27. package/dist/blz-hazelcast/lib/credentials.js +1 -0
  28. package/dist/blz-hazelcast/lib/credentialsFactory.d.ts +1 -0
  29. package/dist/blz-hazelcast/lib/credentialsFactory.js +1 -0
  30. package/dist/blz-hazelcast/lib/hazelcastCache.d.ts +27 -0
  31. package/dist/blz-hazelcast/lib/hazelcastCache.js +1 -0
  32. package/dist/blz-iterable/index.d.ts +49 -0
  33. package/dist/blz-iterable/index.js +1 -0
  34. package/dist/blz-json-schema/index.d.ts +1 -0
  35. package/dist/blz-json-schema/index.js +1 -0
  36. package/dist/blz-jwt/index.d.ts +12 -0
  37. package/dist/blz-jwt/index.js +1 -0
  38. package/dist/blz-kafka/index.d.ts +9 -0
  39. package/dist/blz-kafka/index.js +1 -0
  40. package/dist/blz-math/index.d.ts +22 -0
  41. package/dist/blz-math/index.js +1 -0
  42. package/dist/blz-mongodb/index.d.ts +28 -0
  43. package/dist/blz-mongodb/index.js +1 -0
  44. package/dist/blz-rds/__test__/scape.test.js +1 -0
  45. package/dist/blz-rds/blz-rds-executor.d.ts +4 -0
  46. package/dist/blz-rds/blz-rds-executor.js +1 -0
  47. package/dist/blz-rds/blz-rds-helper.d.ts +5 -0
  48. package/dist/blz-rds/blz-rds-helper.js +1 -0
  49. package/dist/blz-rds/commands/core/add.d.ts +2 -0
  50. package/dist/blz-rds/commands/core/add.js +1 -0
  51. package/dist/blz-rds/commands/core/and.d.ts +3 -0
  52. package/dist/blz-rds/commands/core/and.js +1 -0
  53. package/dist/blz-rds/commands/core/asc.d.ts +2 -0
  54. package/dist/blz-rds/commands/core/asc.js +1 -0
  55. package/dist/blz-rds/commands/core/avg.d.ts +2 -0
  56. package/dist/blz-rds/commands/core/avg.js +1 -0
  57. package/dist/blz-rds/commands/core/column-ref.d.ts +2 -0
  58. package/dist/blz-rds/commands/core/column-ref.js +1 -0
  59. package/dist/blz-rds/commands/core/count-distinct.d.ts +2 -0
  60. package/dist/blz-rds/commands/core/count-distinct.js +1 -0
  61. package/dist/blz-rds/commands/core/count.d.ts +2 -0
  62. package/dist/blz-rds/commands/core/count.js +1 -0
  63. package/dist/blz-rds/commands/core/decimal.d.ts +2 -0
  64. package/dist/blz-rds/commands/core/decimal.js +1 -0
  65. package/dist/blz-rds/commands/core/desc.d.ts +2 -0
  66. package/dist/blz-rds/commands/core/desc.js +1 -0
  67. package/dist/blz-rds/commands/core/distinct.d.ts +2 -0
  68. package/dist/blz-rds/commands/core/distinct.js +1 -0
  69. package/dist/blz-rds/commands/core/divide.d.ts +2 -0
  70. package/dist/blz-rds/commands/core/divide.js +1 -0
  71. package/dist/blz-rds/commands/core/embedded-exists.d.ts +3 -0
  72. package/dist/blz-rds/commands/core/embedded-exists.js +1 -0
  73. package/dist/blz-rds/commands/core/embedded-select.d.ts +2 -0
  74. package/dist/blz-rds/commands/core/embedded-select.js +1 -0
  75. package/dist/blz-rds/commands/core/equals.d.ts +3 -0
  76. package/dist/blz-rds/commands/core/equals.js +1 -0
  77. package/dist/blz-rds/commands/core/false.d.ts +2 -0
  78. package/dist/blz-rds/commands/core/false.js +1 -0
  79. package/dist/blz-rds/commands/core/greater-or-equal.d.ts +3 -0
  80. package/dist/blz-rds/commands/core/greater-or-equal.js +1 -0
  81. package/dist/blz-rds/commands/core/greater.d.ts +3 -0
  82. package/dist/blz-rds/commands/core/greater.js +1 -0
  83. package/dist/blz-rds/commands/core/in.d.ts +3 -0
  84. package/dist/blz-rds/commands/core/in.js +1 -0
  85. package/dist/blz-rds/commands/core/integer.d.ts +2 -0
  86. package/dist/blz-rds/commands/core/integer.js +1 -0
  87. package/dist/blz-rds/commands/core/is-not-null.d.ts +3 -0
  88. package/dist/blz-rds/commands/core/is-not-null.js +1 -0
  89. package/dist/blz-rds/commands/core/is-null-or-value.d.ts +3 -0
  90. package/dist/blz-rds/commands/core/is-null-or-value.js +1 -0
  91. package/dist/blz-rds/commands/core/is-null.d.ts +3 -0
  92. package/dist/blz-rds/commands/core/is-null.js +1 -0
  93. package/dist/blz-rds/commands/core/less-or-equal.d.ts +3 -0
  94. package/dist/blz-rds/commands/core/less-or-equal.js +1 -0
  95. package/dist/blz-rds/commands/core/less-unary.d.ts +2 -0
  96. package/dist/blz-rds/commands/core/less-unary.js +1 -0
  97. package/dist/blz-rds/commands/core/less.d.ts +3 -0
  98. package/dist/blz-rds/commands/core/less.js +1 -0
  99. package/dist/blz-rds/commands/core/like.d.ts +3 -0
  100. package/dist/blz-rds/commands/core/like.js +1 -0
  101. package/dist/blz-rds/commands/core/max.d.ts +2 -0
  102. package/dist/blz-rds/commands/core/max.js +1 -0
  103. package/dist/blz-rds/commands/core/min.d.ts +2 -0
  104. package/dist/blz-rds/commands/core/min.js +1 -0
  105. package/dist/blz-rds/commands/core/multiply.d.ts +2 -0
  106. package/dist/blz-rds/commands/core/multiply.js +1 -0
  107. package/dist/blz-rds/commands/core/not-equals.d.ts +3 -0
  108. package/dist/blz-rds/commands/core/not-equals.js +1 -0
  109. package/dist/blz-rds/commands/core/not-in.d.ts +3 -0
  110. package/dist/blz-rds/commands/core/not-in.js +1 -0
  111. package/dist/blz-rds/commands/core/not.d.ts +3 -0
  112. package/dist/blz-rds/commands/core/not.js +1 -0
  113. package/dist/blz-rds/commands/core/null.d.ts +2 -0
  114. package/dist/blz-rds/commands/core/null.js +1 -0
  115. package/dist/blz-rds/commands/core/nvl.d.ts +2 -0
  116. package/dist/blz-rds/commands/core/nvl.js +1 -0
  117. package/dist/blz-rds/commands/core/or.d.ts +3 -0
  118. package/dist/blz-rds/commands/core/or.js +1 -0
  119. package/dist/blz-rds/commands/core/parameter.d.ts +2 -0
  120. package/dist/blz-rds/commands/core/parameter.js +1 -0
  121. package/dist/blz-rds/commands/core/remainder.d.ts +2 -0
  122. package/dist/blz-rds/commands/core/remainder.js +1 -0
  123. package/dist/blz-rds/commands/core/string.d.ts +2 -0
  124. package/dist/blz-rds/commands/core/string.js +1 -0
  125. package/dist/blz-rds/commands/core/subtract.d.ts +2 -0
  126. package/dist/blz-rds/commands/core/subtract.js +1 -0
  127. package/dist/blz-rds/commands/core/sum.d.ts +2 -0
  128. package/dist/blz-rds/commands/core/sum.js +1 -0
  129. package/dist/blz-rds/commands/core/true.d.ts +2 -0
  130. package/dist/blz-rds/commands/core/true.js +1 -0
  131. package/dist/blz-rds/commands/core/tuple.d.ts +2 -0
  132. package/dist/blz-rds/commands/core/tuple.js +1 -0
  133. package/dist/blz-rds/commands/datetimes/add-days.d.ts +2 -0
  134. package/dist/blz-rds/commands/datetimes/add-days.js +1 -0
  135. package/dist/blz-rds/commands/datetimes/add-hours.d.ts +2 -0
  136. package/dist/blz-rds/commands/datetimes/add-hours.js +1 -0
  137. package/dist/blz-rds/commands/datetimes/add-milliseconds.d.ts +2 -0
  138. package/dist/blz-rds/commands/datetimes/add-milliseconds.js +1 -0
  139. package/dist/blz-rds/commands/datetimes/add-minutes.d.ts +2 -0
  140. package/dist/blz-rds/commands/datetimes/add-minutes.js +1 -0
  141. package/dist/blz-rds/commands/datetimes/add-months.d.ts +2 -0
  142. package/dist/blz-rds/commands/datetimes/add-months.js +1 -0
  143. package/dist/blz-rds/commands/datetimes/add-seconds.d.ts +2 -0
  144. package/dist/blz-rds/commands/datetimes/add-seconds.js +1 -0
  145. package/dist/blz-rds/commands/datetimes/add-years.d.ts +2 -0
  146. package/dist/blz-rds/commands/datetimes/add-years.js +1 -0
  147. package/dist/blz-rds/commands/datetimes/date-diff.d.ts +2 -0
  148. package/dist/blz-rds/commands/datetimes/date-diff.js +1 -0
  149. package/dist/blz-rds/commands/datetimes/date.d.ts +2 -0
  150. package/dist/blz-rds/commands/datetimes/date.js +1 -0
  151. package/dist/blz-rds/commands/datetimes/datetime-diff.d.ts +2 -0
  152. package/dist/blz-rds/commands/datetimes/datetime-diff.js +1 -0
  153. package/dist/blz-rds/commands/datetimes/datetime.d.ts +2 -0
  154. package/dist/blz-rds/commands/datetimes/datetime.js +1 -0
  155. package/dist/blz-rds/commands/datetimes/day.d.ts +2 -0
  156. package/dist/blz-rds/commands/datetimes/day.js +1 -0
  157. package/dist/blz-rds/commands/datetimes/hour.d.ts +2 -0
  158. package/dist/blz-rds/commands/datetimes/hour.js +1 -0
  159. package/dist/blz-rds/commands/datetimes/millisecond.d.ts +2 -0
  160. package/dist/blz-rds/commands/datetimes/millisecond.js +1 -0
  161. package/dist/blz-rds/commands/datetimes/minute.d.ts +2 -0
  162. package/dist/blz-rds/commands/datetimes/minute.js +1 -0
  163. package/dist/blz-rds/commands/datetimes/month-text.d.ts +2 -0
  164. package/dist/blz-rds/commands/datetimes/month-text.js +1 -0
  165. package/dist/blz-rds/commands/datetimes/month.d.ts +2 -0
  166. package/dist/blz-rds/commands/datetimes/month.js +1 -0
  167. package/dist/blz-rds/commands/datetimes/now.d.ts +2 -0
  168. package/dist/blz-rds/commands/datetimes/now.js +1 -0
  169. package/dist/blz-rds/commands/datetimes/second.d.ts +2 -0
  170. package/dist/blz-rds/commands/datetimes/second.js +1 -0
  171. package/dist/blz-rds/commands/datetimes/subtract-days.d.ts +2 -0
  172. package/dist/blz-rds/commands/datetimes/subtract-days.js +1 -0
  173. package/dist/blz-rds/commands/datetimes/subtract-hours.d.ts +2 -0
  174. package/dist/blz-rds/commands/datetimes/subtract-hours.js +1 -0
  175. package/dist/blz-rds/commands/datetimes/subtract-milliseconds.d.ts +2 -0
  176. package/dist/blz-rds/commands/datetimes/subtract-milliseconds.js +1 -0
  177. package/dist/blz-rds/commands/datetimes/subtract-minutes.d.ts +2 -0
  178. package/dist/blz-rds/commands/datetimes/subtract-minutes.js +1 -0
  179. package/dist/blz-rds/commands/datetimes/subtract-seconds.d.ts +2 -0
  180. package/dist/blz-rds/commands/datetimes/subtract-seconds.js +1 -0
  181. package/dist/blz-rds/commands/datetimes/time-diff.d.ts +2 -0
  182. package/dist/blz-rds/commands/datetimes/time-diff.js +1 -0
  183. package/dist/blz-rds/commands/datetimes/time.d.ts +2 -0
  184. package/dist/blz-rds/commands/datetimes/time.js +1 -0
  185. package/dist/blz-rds/commands/datetimes/today.d.ts +2 -0
  186. package/dist/blz-rds/commands/datetimes/today.js +1 -0
  187. package/dist/blz-rds/commands/datetimes/week-day-text.d.ts +2 -0
  188. package/dist/blz-rds/commands/datetimes/week-day-text.js +1 -0
  189. package/dist/blz-rds/commands/datetimes/week-day.d.ts +2 -0
  190. package/dist/blz-rds/commands/datetimes/week-day.js +1 -0
  191. package/dist/blz-rds/commands/datetimes/week.d.ts +2 -0
  192. package/dist/blz-rds/commands/datetimes/week.js +1 -0
  193. package/dist/blz-rds/commands/datetimes/year.d.ts +2 -0
  194. package/dist/blz-rds/commands/datetimes/year.js +1 -0
  195. package/dist/blz-rds/commands/math/abs.d.ts +2 -0
  196. package/dist/blz-rds/commands/math/abs.js +1 -0
  197. package/dist/blz-rds/commands/math/acos.d.ts +2 -0
  198. package/dist/blz-rds/commands/math/acos.js +1 -0
  199. package/dist/blz-rds/commands/math/asin.d.ts +2 -0
  200. package/dist/blz-rds/commands/math/asin.js +1 -0
  201. package/dist/blz-rds/commands/math/atan.d.ts +2 -0
  202. package/dist/blz-rds/commands/math/atan.js +1 -0
  203. package/dist/blz-rds/commands/math/atan2.d.ts +2 -0
  204. package/dist/blz-rds/commands/math/atan2.js +1 -0
  205. package/dist/blz-rds/commands/math/ceil.d.ts +2 -0
  206. package/dist/blz-rds/commands/math/ceil.js +1 -0
  207. package/dist/blz-rds/commands/math/cos.d.ts +2 -0
  208. package/dist/blz-rds/commands/math/cos.js +1 -0
  209. package/dist/blz-rds/commands/math/cosh.d.ts +2 -0
  210. package/dist/blz-rds/commands/math/cosh.js +1 -0
  211. package/dist/blz-rds/commands/math/exp.d.ts +2 -0
  212. package/dist/blz-rds/commands/math/exp.js +1 -0
  213. package/dist/blz-rds/commands/math/floor.d.ts +2 -0
  214. package/dist/blz-rds/commands/math/floor.js +1 -0
  215. package/dist/blz-rds/commands/math/log.d.ts +2 -0
  216. package/dist/blz-rds/commands/math/log.js +1 -0
  217. package/dist/blz-rds/commands/math/log10.d.ts +2 -0
  218. package/dist/blz-rds/commands/math/log10.js +1 -0
  219. package/dist/blz-rds/commands/math/pow.d.ts +2 -0
  220. package/dist/blz-rds/commands/math/pow.js +1 -0
  221. package/dist/blz-rds/commands/math/random.d.ts +2 -0
  222. package/dist/blz-rds/commands/math/random.js +1 -0
  223. package/dist/blz-rds/commands/math/round.d.ts +2 -0
  224. package/dist/blz-rds/commands/math/round.js +1 -0
  225. package/dist/blz-rds/commands/math/sign.d.ts +2 -0
  226. package/dist/blz-rds/commands/math/sign.js +1 -0
  227. package/dist/blz-rds/commands/math/sin.d.ts +2 -0
  228. package/dist/blz-rds/commands/math/sin.js +1 -0
  229. package/dist/blz-rds/commands/math/sinh.d.ts +2 -0
  230. package/dist/blz-rds/commands/math/sinh.js +1 -0
  231. package/dist/blz-rds/commands/math/sqrt.d.ts +2 -0
  232. package/dist/blz-rds/commands/math/sqrt.js +1 -0
  233. package/dist/blz-rds/commands/math/tan.d.ts +2 -0
  234. package/dist/blz-rds/commands/math/tan.js +1 -0
  235. package/dist/blz-rds/commands/math/tanh.d.ts +2 -0
  236. package/dist/blz-rds/commands/math/tanh.js +1 -0
  237. package/dist/blz-rds/commands/math/trunc.d.ts +2 -0
  238. package/dist/blz-rds/commands/math/trunc.js +1 -0
  239. package/dist/blz-rds/commands/strings/concat.d.ts +2 -0
  240. package/dist/blz-rds/commands/strings/concat.js +1 -0
  241. package/dist/blz-rds/commands/strings/contains.d.ts +3 -0
  242. package/dist/blz-rds/commands/strings/contains.js +1 -0
  243. package/dist/blz-rds/commands/strings/ends-with.d.ts +3 -0
  244. package/dist/blz-rds/commands/strings/ends-with.js +1 -0
  245. package/dist/blz-rds/commands/strings/index-of.d.ts +2 -0
  246. package/dist/blz-rds/commands/strings/index-of.js +1 -0
  247. package/dist/blz-rds/commands/strings/is-null-or-empty.d.ts +3 -0
  248. package/dist/blz-rds/commands/strings/is-null-or-empty.js +1 -0
  249. package/dist/blz-rds/commands/strings/is-null-or-white-space.d.ts +3 -0
  250. package/dist/blz-rds/commands/strings/is-null-or-white-space.js +1 -0
  251. package/dist/blz-rds/commands/strings/join.d.ts +2 -0
  252. package/dist/blz-rds/commands/strings/join.js +1 -0
  253. package/dist/blz-rds/commands/strings/last-index-of.d.ts +2 -0
  254. package/dist/blz-rds/commands/strings/last-index-of.js +1 -0
  255. package/dist/blz-rds/commands/strings/length.d.ts +2 -0
  256. package/dist/blz-rds/commands/strings/length.js +1 -0
  257. package/dist/blz-rds/commands/strings/pad-left.d.ts +2 -0
  258. package/dist/blz-rds/commands/strings/pad-left.js +1 -0
  259. package/dist/blz-rds/commands/strings/pad-right.d.ts +2 -0
  260. package/dist/blz-rds/commands/strings/pad-right.js +1 -0
  261. package/dist/blz-rds/commands/strings/replace.d.ts +2 -0
  262. package/dist/blz-rds/commands/strings/replace.js +1 -0
  263. package/dist/blz-rds/commands/strings/starts-with.d.ts +3 -0
  264. package/dist/blz-rds/commands/strings/starts-with.js +1 -0
  265. package/dist/blz-rds/commands/strings/substring.d.ts +2 -0
  266. package/dist/blz-rds/commands/strings/substring.js +1 -0
  267. package/dist/blz-rds/commands/strings/to-lower.d.ts +2 -0
  268. package/dist/blz-rds/commands/strings/to-lower.js +1 -0
  269. package/dist/blz-rds/commands/strings/to-upper.d.ts +2 -0
  270. package/dist/blz-rds/commands/strings/to-upper.js +1 -0
  271. package/dist/blz-rds/commands/strings/trim-end.d.ts +2 -0
  272. package/dist/blz-rds/commands/strings/trim-end.js +1 -0
  273. package/dist/blz-rds/commands/strings/trim-start.d.ts +2 -0
  274. package/dist/blz-rds/commands/strings/trim-start.js +1 -0
  275. package/dist/blz-rds/commands/strings/trim.d.ts +2 -0
  276. package/dist/blz-rds/commands/strings/trim.js +1 -0
  277. package/dist/blz-rds/index.d.ts +53 -0
  278. package/dist/blz-rds/index.js +1 -0
  279. package/dist/blz-rds-mysql/base.d.ts +83 -0
  280. package/dist/blz-rds-mysql/base.js +1 -0
  281. package/dist/blz-rds-mysql/connection-manager.d.ts +8 -0
  282. package/dist/blz-rds-mysql/connection-manager.js +1 -0
  283. package/dist/blz-rds-mysql/execute-bulk-insert.d.ts +2 -0
  284. package/dist/blz-rds-mysql/execute-bulk-insert.js +1 -0
  285. package/dist/blz-rds-mysql/execute-bulk-merge.d.ts +2 -0
  286. package/dist/blz-rds-mysql/execute-bulk-merge.js +1 -0
  287. package/dist/blz-rds-mysql/execute-non-query.d.ts +14 -0
  288. package/dist/blz-rds-mysql/execute-non-query.js +1 -0
  289. package/dist/blz-rds-mysql/execute-query.d.ts +11 -0
  290. package/dist/blz-rds-mysql/execute-query.js +1 -0
  291. package/dist/blz-rds-mysql/index.d.ts +9 -0
  292. package/dist/blz-rds-mysql/index.js +1 -0
  293. package/dist/blz-rds-mysql/stored-procedure.d.ts +19 -0
  294. package/dist/blz-rds-mysql/stored-procedure.js +1 -0
  295. package/dist/blz-rds-mysqlx/base.d.ts +83 -0
  296. package/dist/blz-rds-mysqlx/base.js +1 -0
  297. package/dist/blz-rds-mysqlx/connection-manager.d.ts +6 -0
  298. package/dist/blz-rds-mysqlx/connection-manager.js +1 -0
  299. package/dist/blz-rds-mysqlx/execute-bulk-insert.d.ts +2 -0
  300. package/dist/blz-rds-mysqlx/execute-bulk-insert.js +1 -0
  301. package/dist/blz-rds-mysqlx/execute-bulk-merge.d.ts +2 -0
  302. package/dist/blz-rds-mysqlx/execute-bulk-merge.js +1 -0
  303. package/dist/blz-rds-mysqlx/execute-non-query.d.ts +4 -0
  304. package/dist/blz-rds-mysqlx/execute-non-query.js +1 -0
  305. package/dist/blz-rds-mysqlx/execute-query.d.ts +7 -0
  306. package/dist/blz-rds-mysqlx/execute-query.js +1 -0
  307. package/dist/blz-rds-mysqlx/index.d.ts +9 -0
  308. package/dist/blz-rds-mysqlx/index.js +1 -0
  309. package/dist/blz-rds-mysqlx/stored-procedure.d.ts +20 -0
  310. package/dist/blz-rds-mysqlx/stored-procedure.js +1 -0
  311. package/dist/blz-rds-oracle/index.d.ts +25 -0
  312. package/dist/blz-rds-oracle/index.js +1 -0
  313. package/dist/blz-rds-postgres/base.d.ts +94 -0
  314. package/dist/blz-rds-postgres/base.js +1 -0
  315. package/dist/blz-rds-postgres/connection-manager.d.ts +6 -0
  316. package/dist/blz-rds-postgres/connection-manager.js +1 -0
  317. package/dist/blz-rds-postgres/execute-bulk-insert.d.ts +5 -0
  318. package/dist/blz-rds-postgres/execute-bulk-insert.js +1 -0
  319. package/dist/blz-rds-postgres/execute-bulk-merge.d.ts +4 -0
  320. package/dist/blz-rds-postgres/execute-bulk-merge.js +1 -0
  321. package/dist/blz-rds-postgres/execute-non-query.d.ts +12 -0
  322. package/dist/blz-rds-postgres/execute-non-query.js +1 -0
  323. package/dist/blz-rds-postgres/execute-query.d.ts +4 -0
  324. package/dist/blz-rds-postgres/execute-query.js +1 -0
  325. package/dist/blz-rds-postgres/index.d.ts +9 -0
  326. package/dist/blz-rds-postgres/index.js +1 -0
  327. package/dist/blz-rds-postgres/result-set.js +1 -0
  328. package/dist/blz-rds-postgres/stored-procedure.d.ts +19 -0
  329. package/dist/blz-rds-postgres/stored-procedure.js +1 -0
  330. package/dist/blz-redis/index.d.ts +31 -0
  331. package/dist/blz-redis/index.js +1 -0
  332. package/dist/blz-redis/lib/redisCache.d.ts +33 -0
  333. package/dist/blz-redis/lib/redisCache.js +1 -0
  334. package/dist/blz-regex/index.d.ts +3 -0
  335. package/dist/blz-regex/index.js +1 -0
  336. package/dist/blz-security/__test__/autorization.test.js +1 -0
  337. package/dist/blz-security/__test__/autorizationKpn.test.js +1 -0
  338. package/dist/blz-security/__test__/orderManagement.test.js +1 -0
  339. package/dist/blz-security/__test__/secureUrl.test.js +1 -0
  340. package/dist/blz-security/__test__/solveMergeRule.test.js +1 -0
  341. package/dist/blz-security/__test__/sqlInjectionGuard.test.js +1 -0
  342. package/dist/blz-security/__test__/xssGuard.test.js +1 -0
  343. package/dist/blz-security/authorizationService.d.ts +42 -0
  344. package/dist/blz-security/authorizationService.js +2 -0
  345. package/dist/blz-security/config/global.js +1 -0
  346. package/dist/blz-security/filescanner/index.d.ts +24 -0
  347. package/dist/blz-security/filescanner/index.js +1 -0
  348. package/dist/blz-security/helpers/consts.d.ts +28 -0
  349. package/dist/blz-security/helpers/consts.js +1 -0
  350. package/dist/blz-security/helpers/utils.d.ts +82 -0
  351. package/dist/blz-security/helpers/utils.js +1 -0
  352. package/dist/blz-security/implementations/cache.d.ts +58 -0
  353. package/dist/blz-security/implementations/cache.js +1 -0
  354. package/dist/blz-security/implementations/oidc.d.ts +100 -0
  355. package/dist/blz-security/implementations/oidc.js +1 -0
  356. package/dist/blz-security/implementations/pkceCacheStore.d.ts +2 -0
  357. package/dist/blz-security/implementations/pkceCacheStore.js +1 -0
  358. package/dist/blz-security/implementations/saml.js +1 -0
  359. package/dist/blz-security/implementations/uma.d.ts +31 -0
  360. package/dist/blz-security/implementations/uma.js +1 -0
  361. package/dist/blz-security/implementations/webAuthn.js +1 -0
  362. package/dist/blz-security/implementations/wstg.js +1 -0
  363. package/dist/blz-security/index.d.ts +4 -0
  364. package/dist/blz-security/index.js +2 -0
  365. package/dist/blz-security/lab/index.js +1 -0
  366. package/dist/blz-security/middleware/HapiServerAzureAd.d.ts +26 -0
  367. package/dist/blz-security/middleware/HapiServerAzureAd.js +1 -0
  368. package/dist/blz-security/middleware/HapiServerKeycloak.d.ts +47 -0
  369. package/dist/blz-security/middleware/HapiServerKeycloak.js +1 -0
  370. package/dist/blz-security/middleware/HapiServerSimToken.d.ts +13 -0
  371. package/dist/blz-security/middleware/HapiServerSimToken.js +1 -0
  372. package/dist/blz-security/middleware/hapi.d.ts +14 -0
  373. package/dist/blz-security/middleware/hapi.js +1 -0
  374. package/dist/blz-security/middleware/hapiServer.js +1 -0
  375. package/dist/blz-security/navigationMemoryRepository.d.ts +6 -0
  376. package/dist/blz-security/navigationMemoryRepository.js +1 -0
  377. package/dist/blz-security/navigationMongoDbRepository.d.ts +15 -0
  378. package/dist/blz-security/navigationMongoDbRepository.js +1 -0
  379. package/dist/blz-security/secureUrlService.d.ts +7 -0
  380. package/dist/blz-security/secureUrlService.js +1 -0
  381. package/dist/blz-security/securityService.d.ts +72 -0
  382. package/dist/blz-security/securityService.js +1 -0
  383. package/dist/blz-security/sqlInjectionGuard.d.ts +37 -0
  384. package/dist/blz-security/sqlInjectionGuard.js +1 -0
  385. package/dist/blz-security/xssGuard.d.ts +14 -0
  386. package/dist/blz-security/xssGuard.js +1 -0
  387. package/dist/blz-strings/index.d.ts +42 -0
  388. package/dist/blz-strings/index.js +1 -0
  389. package/dist/blz-uuid/index.d.ts +1 -0
  390. package/dist/blz-uuid/index.js +1 -0
  391. package/dist/blz-yaml/index.d.ts +2 -0
  392. package/dist/blz-yaml/index.js +1 -0
  393. package/dist/index.d.ts +34 -0
  394. package/dist/index.js +1 -0
  395. package/dist/process-managers/index.d.ts +25 -0
  396. package/dist/process-managers/index.js +1 -0
  397. package/package.json +52 -41
  398. package/blz-base/health/index.js +0 -215
  399. package/blz-base/index.js +0 -1466
  400. package/blz-cache/LruCache.js +0 -44
  401. package/blz-cache/index.js +0 -29
  402. package/blz-config/index.js +0 -434
  403. package/blz-core/index.js +0 -364
  404. package/blz-cryptography/index.js +0 -54
  405. package/blz-datetimes/index.js +0 -356
  406. package/blz-file/example.dat +0 -2545
  407. package/blz-file/fileService.js +0 -205
  408. package/blz-file/index.js +0 -94
  409. package/blz-file/index.test.js +0 -31
  410. package/blz-file/lab.js +0 -33
  411. package/blz-hazelcast/index.js +0 -189
  412. package/blz-hazelcast/lib/credentials.js +0 -25
  413. package/blz-hazelcast/lib/credentialsFactory.js +0 -12
  414. package/blz-hazelcast/lib/hazelcastCache.js +0 -234
  415. package/blz-iterable/index.js +0 -446
  416. package/blz-json-schema/index.js +0 -11
  417. package/blz-jwt/index.js +0 -121
  418. package/blz-kafka/index.js +0 -522
  419. package/blz-math/index.js +0 -131
  420. package/blz-mongodb/index.js +0 -326
  421. package/blz-rds/__test__/scape.test.js +0 -58
  422. package/blz-rds/blz-rds-executor.js +0 -578
  423. package/blz-rds/blz-rds-helper.js +0 -310
  424. package/blz-rds/commands/core/add.js +0 -13
  425. package/blz-rds/commands/core/and.js +0 -18
  426. package/blz-rds/commands/core/asc.js +0 -10
  427. package/blz-rds/commands/core/avg.js +0 -10
  428. package/blz-rds/commands/core/column-ref.js +0 -8
  429. package/blz-rds/commands/core/count-distinct.js +0 -10
  430. package/blz-rds/commands/core/count.js +0 -10
  431. package/blz-rds/commands/core/decimal.js +0 -8
  432. package/blz-rds/commands/core/desc.js +0 -10
  433. package/blz-rds/commands/core/distinct.js +0 -10
  434. package/blz-rds/commands/core/divide.js +0 -11
  435. package/blz-rds/commands/core/embedded-exists.js +0 -17
  436. package/blz-rds/commands/core/embedded-select.js +0 -17
  437. package/blz-rds/commands/core/equals.js +0 -9
  438. package/blz-rds/commands/core/false.js +0 -8
  439. package/blz-rds/commands/core/greater-or-equal.js +0 -9
  440. package/blz-rds/commands/core/greater.js +0 -9
  441. package/blz-rds/commands/core/in.js +0 -9
  442. package/blz-rds/commands/core/integer.js +0 -8
  443. package/blz-rds/commands/core/is-not-null.js +0 -11
  444. package/blz-rds/commands/core/is-null-or-value.js +0 -10
  445. package/blz-rds/commands/core/is-null.js +0 -11
  446. package/blz-rds/commands/core/less-or-equal.js +0 -9
  447. package/blz-rds/commands/core/less-unary.js +0 -12
  448. package/blz-rds/commands/core/less.js +0 -9
  449. package/blz-rds/commands/core/like.js +0 -12
  450. package/blz-rds/commands/core/max.js +0 -10
  451. package/blz-rds/commands/core/min.js +0 -10
  452. package/blz-rds/commands/core/multiply.js +0 -13
  453. package/blz-rds/commands/core/not-equals.js +0 -9
  454. package/blz-rds/commands/core/not-in.js +0 -9
  455. package/blz-rds/commands/core/not.js +0 -13
  456. package/blz-rds/commands/core/null.js +0 -8
  457. package/blz-rds/commands/core/nvl.js +0 -11
  458. package/blz-rds/commands/core/or.js +0 -13
  459. package/blz-rds/commands/core/parameter.js +0 -34
  460. package/blz-rds/commands/core/remainder.js +0 -16
  461. package/blz-rds/commands/core/string.js +0 -8
  462. package/blz-rds/commands/core/subtract.js +0 -13
  463. package/blz-rds/commands/core/sum.js +0 -10
  464. package/blz-rds/commands/core/true.js +0 -8
  465. package/blz-rds/commands/core/tuple.js +0 -13
  466. package/blz-rds/commands/datetimes/add-days.js +0 -11
  467. package/blz-rds/commands/datetimes/add-hours.js +0 -11
  468. package/blz-rds/commands/datetimes/add-milliseconds.js +0 -11
  469. package/blz-rds/commands/datetimes/add-minutes.js +0 -11
  470. package/blz-rds/commands/datetimes/add-months.js +0 -11
  471. package/blz-rds/commands/datetimes/add-seconds.js +0 -11
  472. package/blz-rds/commands/datetimes/add-years.js +0 -11
  473. package/blz-rds/commands/datetimes/date-diff.js +0 -11
  474. package/blz-rds/commands/datetimes/date.js +0 -12
  475. package/blz-rds/commands/datetimes/datetime-diff.js +0 -11
  476. package/blz-rds/commands/datetimes/datetime.js +0 -15
  477. package/blz-rds/commands/datetimes/day.js +0 -10
  478. package/blz-rds/commands/datetimes/hour.js +0 -10
  479. package/blz-rds/commands/datetimes/millisecond.js +0 -10
  480. package/blz-rds/commands/datetimes/minute.js +0 -10
  481. package/blz-rds/commands/datetimes/month-text.js +0 -10
  482. package/blz-rds/commands/datetimes/month.js +0 -10
  483. package/blz-rds/commands/datetimes/now.js +0 -9
  484. package/blz-rds/commands/datetimes/second.js +0 -10
  485. package/blz-rds/commands/datetimes/subtract-days.js +0 -11
  486. package/blz-rds/commands/datetimes/subtract-hours.js +0 -11
  487. package/blz-rds/commands/datetimes/subtract-milliseconds.js +0 -11
  488. package/blz-rds/commands/datetimes/subtract-minutes.js +0 -11
  489. package/blz-rds/commands/datetimes/subtract-seconds.js +0 -11
  490. package/blz-rds/commands/datetimes/time-diff.js +0 -11
  491. package/blz-rds/commands/datetimes/time.js +0 -13
  492. package/blz-rds/commands/datetimes/today.js +0 -9
  493. package/blz-rds/commands/datetimes/week-day-text.js +0 -10
  494. package/blz-rds/commands/datetimes/week-day.js +0 -10
  495. package/blz-rds/commands/datetimes/week.js +0 -10
  496. package/blz-rds/commands/datetimes/year.js +0 -10
  497. package/blz-rds/commands/math/abs.js +0 -10
  498. package/blz-rds/commands/math/acos.js +0 -10
  499. package/blz-rds/commands/math/asin.js +0 -10
  500. package/blz-rds/commands/math/atan.js +0 -10
  501. package/blz-rds/commands/math/atan2.js +0 -11
  502. package/blz-rds/commands/math/ceil.js +0 -10
  503. package/blz-rds/commands/math/cos.js +0 -10
  504. package/blz-rds/commands/math/cosh.js +0 -10
  505. package/blz-rds/commands/math/exp.js +0 -10
  506. package/blz-rds/commands/math/floor.js +0 -10
  507. package/blz-rds/commands/math/log.js +0 -18
  508. package/blz-rds/commands/math/log10.js +0 -10
  509. package/blz-rds/commands/math/pow.js +0 -11
  510. package/blz-rds/commands/math/random.js +0 -9
  511. package/blz-rds/commands/math/round.js +0 -18
  512. package/blz-rds/commands/math/sign.js +0 -10
  513. package/blz-rds/commands/math/sin.js +0 -10
  514. package/blz-rds/commands/math/sinh.js +0 -10
  515. package/blz-rds/commands/math/sqrt.js +0 -10
  516. package/blz-rds/commands/math/tan.js +0 -10
  517. package/blz-rds/commands/math/tanh.js +0 -10
  518. package/blz-rds/commands/math/trunc.js +0 -18
  519. package/blz-rds/commands/strings/concat.js +0 -20
  520. package/blz-rds/commands/strings/contains.js +0 -12
  521. package/blz-rds/commands/strings/ends-with.js +0 -12
  522. package/blz-rds/commands/strings/index-of.js +0 -11
  523. package/blz-rds/commands/strings/is-null-or-empty.js +0 -11
  524. package/blz-rds/commands/strings/is-null-or-white-space.js +0 -11
  525. package/blz-rds/commands/strings/join.js +0 -22
  526. package/blz-rds/commands/strings/last-index-of.js +0 -11
  527. package/blz-rds/commands/strings/length.js +0 -10
  528. package/blz-rds/commands/strings/pad-left.js +0 -20
  529. package/blz-rds/commands/strings/pad-right.js +0 -20
  530. package/blz-rds/commands/strings/replace.js +0 -12
  531. package/blz-rds/commands/strings/starts-with.js +0 -12
  532. package/blz-rds/commands/strings/substring.js +0 -12
  533. package/blz-rds/commands/strings/to-lower.js +0 -10
  534. package/blz-rds/commands/strings/to-upper.js +0 -10
  535. package/blz-rds/commands/strings/trim-end.js +0 -10
  536. package/blz-rds/commands/strings/trim-start.js +0 -10
  537. package/blz-rds/commands/strings/trim.js +0 -10
  538. package/blz-rds/index.js +0 -744
  539. package/blz-rds-mysql/base.js +0 -857
  540. package/blz-rds-mysql/connection-manager.js +0 -129
  541. package/blz-rds-mysql/execute-bulk-insert.js +0 -35
  542. package/blz-rds-mysql/execute-bulk-merge.js +0 -45
  543. package/blz-rds-mysql/execute-non-query.js +0 -34
  544. package/blz-rds-mysql/execute-query.js +0 -50
  545. package/blz-rds-mysql/index.js +0 -41
  546. package/blz-rds-mysql/stored-procedure.js +0 -207
  547. package/blz-rds-mysqlx/base.js +0 -846
  548. package/blz-rds-mysqlx/connection-manager.js +0 -141
  549. package/blz-rds-mysqlx/execute-bulk-insert.js +0 -35
  550. package/blz-rds-mysqlx/execute-bulk-merge.js +0 -45
  551. package/blz-rds-mysqlx/execute-non-query.js +0 -29
  552. package/blz-rds-mysqlx/execute-query.js +0 -39
  553. package/blz-rds-mysqlx/index.js +0 -41
  554. package/blz-rds-mysqlx/stored-procedure.js +0 -179
  555. package/blz-rds-oracle/index.js +0 -539
  556. package/blz-rds-postgres/base.js +0 -861
  557. package/blz-rds-postgres/connection-manager.js +0 -225
  558. package/blz-rds-postgres/execute-bulk-insert.js +0 -81
  559. package/blz-rds-postgres/execute-bulk-merge.js +0 -93
  560. package/blz-rds-postgres/execute-non-query.js +0 -23
  561. package/blz-rds-postgres/execute-query.js +0 -37
  562. package/blz-rds-postgres/index.js +0 -41
  563. package/blz-rds-postgres/result-set.js +0 -51
  564. package/blz-rds-postgres/stored-procedure.js +0 -116
  565. package/blz-redis/index.js +0 -217
  566. package/blz-redis/lib/redisCache.js +0 -265
  567. package/blz-regex/index.js +0 -25
  568. package/blz-security/.eslintrc.js +0 -15
  569. package/blz-security/__test__/AuthorizationKpn.yaml +0 -1149
  570. package/blz-security/__test__/FinancingSetting.yaml +0 -177
  571. package/blz-security/__test__/KpnConfigPortal.yaml +0 -330
  572. package/blz-security/__test__/OrderManagement.yaml +0 -5190
  573. package/blz-security/__test__/Security.yaml +0 -128
  574. package/blz-security/__test__/autorization.test.js +0 -105
  575. package/blz-security/__test__/autorizationKpn.test.js +0 -42
  576. package/blz-security/__test__/orderManagement.test.js +0 -26
  577. package/blz-security/__test__/secureUrl.test.js +0 -79
  578. package/blz-security/__test__/solveMergeRule.test.js +0 -109
  579. package/blz-security/__test__/sqlInjectionGuard.test.js +0 -203
  580. package/blz-security/__test__/xssGuard.test.js +0 -204
  581. package/blz-security/authorizationService.js +0 -537
  582. package/blz-security/config/global.js +0 -8
  583. package/blz-security/config/welcome +0 -8
  584. package/blz-security/doc/README.md +0 -75
  585. package/blz-security/filescanner/index.js +0 -46
  586. package/blz-security/helpers/consts.js +0 -229
  587. package/blz-security/helpers/utils.js +0 -267
  588. package/blz-security/implementations/cache.js +0 -90
  589. package/blz-security/implementations/oidc.js +0 -404
  590. package/blz-security/implementations/pkceCacheStore.js +0 -23
  591. package/blz-security/implementations/saml.js +0 -10
  592. package/blz-security/implementations/uma.js +0 -63
  593. package/blz-security/implementations/webAuthn.js +0 -9
  594. package/blz-security/implementations/wstg.js +0 -72
  595. package/blz-security/index.js +0 -77
  596. package/blz-security/lab/index.js +0 -43
  597. package/blz-security/middleware/HapiServerAzureAd.js +0 -681
  598. package/blz-security/middleware/HapiServerKeycloak.js +0 -876
  599. package/blz-security/middleware/HapiServerSimToken.js +0 -286
  600. package/blz-security/middleware/hapi.js +0 -555
  601. package/blz-security/middleware/hapiServer.js +0 -1008
  602. package/blz-security/navigationMemoryRepository.js +0 -15
  603. package/blz-security/navigationMongoDbRepository.js +0 -73
  604. package/blz-security/secureUrlService.js +0 -47
  605. package/blz-security/securityService.js +0 -413
  606. package/blz-security/sqlInjectionGuard.js +0 -162
  607. package/blz-security/templates/forbidden.html +0 -0
  608. package/blz-security/templates/session-iframe-azure-ad.html +0 -7
  609. package/blz-security/templates/session-iframe.html +0 -73
  610. package/blz-security/templates/unauthorized.html +0 -1
  611. package/blz-security/xssGuard.js +0 -87
  612. package/blz-strings/index.js +0 -167
  613. package/blz-uuid/index.js +0 -7
  614. package/blz-yaml/index.js +0 -19
  615. package/index.js +0 -84
  616. package/process-managers/index.js +0 -422
  617. /package/{blz-rds-mysql → dist/blz-rds-mysql}/syntaxis.json +0 -0
  618. /package/{blz-rds-mysqlx → dist/blz-rds-mysqlx}/syntaxis.json +0 -0
  619. /package/{blz-rds-oracle → dist/blz-rds-oracle}/syntaxis.json +0 -0
  620. /package/{blz-rds-postgres → dist/blz-rds-postgres}/syntaxis.json +0 -0
  621. /package/{blz-security → dist/blz-security}/lab/ConfigurationAdmin.agent.json +0 -0
  622. /package/{blz-security → dist/blz-security}/lab/frontend.json +0 -0
  623. /package/{blz-security → dist/blz-security}/lab/result.json +0 -0
  624. /package/{blz-security → dist/blz-security}/lab/resultOnWeb.json +0 -0
  625. /package/{blz-security → dist/blz-security}/lab/rules.json +0 -0
  626. /package/{blz-security → dist/blz-security}/lab/securityRules.json +0 -0
@@ -1,681 +0,0 @@
1
- /**
2
- * @author Blazedpath Team
3
- * @implements Protecting all resources through hapi middleware
4
- * @description Hapi.js (derived from Http-API) is an open-source Node.js
5
- * framework used to build powerful and scalable web applications.
6
- * @see https://hapi.dev/api/
7
- */
8
- const Uma = require('../implementations/uma.js')
9
- const Jsonwebtoken = require('jsonwebtoken') // Implementations of JSON Web Tokens.
10
- const {
11
- Exception,
12
- getFullUrl,
13
- getHost,
14
- getProtocol,
15
- getPathname,
16
- getTemplate,
17
- getTokenTolerance,
18
- trace,
19
- errorResponse
20
- } = require('../helpers/utils.js')
21
- // HapiServer Modules
22
- const hapiYar = require('@hapi/yar');
23
- const hapiJwt = require('@hapi/jwt');
24
- const hapiCookie = require('@hapi/cookie')
25
-
26
- // Azure AD rotates keys, so we jwk used to routinly fetch them
27
- const jwksClient = require('jwks-rsa') // Retrieve RSA public keys from a JWKS.
28
- // MS authenticator library
29
- const {
30
- ConfidentialClientApplication
31
- } = require('@azure/msal-node');
32
- const crypto = require("crypto"); // FOR PKCE in msal
33
- const { saveVerifier, getVerifier } = require('../implementations/pkceCacheStore.js');
34
-
35
- let securityService = null
36
-
37
- // This class is defined to work with Azure AD.
38
- class HapiServerAzureAd {
39
- constructor(openIdConnect, cookiesName, cache) {
40
- this.openIdConnect = openIdConnect
41
- this.COOKIE_NAMES = cookiesName
42
- this.activateTraceApiMethod = false
43
- this.queryStringLimit = null;
44
- this.securityLoginTokenExpToleranceSeconds = 3600 * 5; // Default 5 hours
45
- this.authServerConfig = null;
46
- this.authServerFullLoginUrl = null;
47
- // This cache stores locally the jwt token set for refresh and logout.
48
- this.cache = cache;
49
- // To terminate sessions
50
- // This client keeps a refresh of the rotating keys
51
- this.clientJwk = null;
52
- this.publicKeyFetch = null;
53
- }
54
-
55
- async connect(_securityService, hapiServer, config) {
56
- this.authServerConfig = config;
57
- securityService = _securityService
58
- const {
59
- authServer,
60
- activateTraceApiMethod
61
- } = config
62
- if (activateTraceApiMethod) {
63
- this.activateTraceApiMethod = activateTraceApiMethod
64
- }
65
- const stateOption = {
66
- clearInvalid: true,
67
- encoding: 'base64',
68
- isSecure: true,
69
- isHttpOnly: true,
70
- isSameSite: 'Lax',
71
- path: '/',
72
- strictHeader: true
73
- }
74
- try {
75
- if (authServer.sessionCookiesDomain) {
76
- stateOption.domain = authServer.sessionCookiesDomain
77
- }
78
- stateOption.isHttpOnly = authServer.isHttpOnlyForSessionState ?? false;
79
- hapiServer.state(this.COOKIE_NAMES.SESSION_STATE, stateOption);
80
- if (!authServer.scope || !authServer.scope.split(' ').some((reg) => reg === 'openid')) {
81
- authServer.scope = `openid ${authServer.scope || ''}`
82
- }
83
- if (authServer.tokenEndpoint && !authServer.tokenEndpoint.match(/https.*/)) {
84
- hapiServer.states.cookies[this.COOKIE_NAMES.SID].isSecure = false
85
- hapiServer.states.cookies[this.COOKIE_NAMES.SESSION_STATE].isSecure = false
86
- }
87
- } catch (err) {
88
- console.error('ERROR', `Exception ${err.message}`, err)
89
- trace('ERROR', err.stack)
90
- }
91
-
92
- // Add Plugins
93
- this.configurePlugins(hapiServer);
94
- // onPreAuth: Here we check if the jwtToken is stored in the yar, refresh, and recompose the authorization header before hapi jwt module auth.
95
- // Http protocol does not redirect all headers on a 3XX code.
96
- hapiServer.ext('onPreAuth', async (request, h) => {
97
- // Retrieve the token from the yar storage
98
- let tokenInfo = request.yar.get('jwtToken');
99
- if (tokenInfo) {
100
- // check if token is about to be expired, if expired, update
101
- let aboutToExpire = await me.tokenAboutToExpire(tokenInfo.token, 10);
102
- if (aboutToExpire) {
103
- // To refresh the tokens, Azure uses a silent re authentication
104
- const silentRereshTokenResponse = await me.authServerConfig.authServer.msalClient.acquireTokenSilent({
105
- account: tokenInfo.account, // If token exists in yar. Account should always exist
106
- scopes: me.authServerConfig.authServer.scope.split(" ") ?? ["user.read"],
107
- });
108
- const obtainedTokens = {};
109
- // Check if the silent refresh token was successful
110
- if (silentRereshTokenResponse && silentRereshTokenResponse.idToken) {
111
- obtainedTokens.tokenType = 'Bearer';
112
- obtainedTokens.token = silentRereshTokenResponse.idToken;
113
- obtainedTokens.tokenSubType = 'id_token';
114
- obtainedTokens.account = silentRereshTokenResponse.account;
115
- request.yar.set('jwtToken', obtainedTokens);
116
- await request.yar.commit(h);
117
- } else {
118
- // no valid set of tokens has returned, clear the yar storage and continue
119
- request.yar.set('userRelog', true);
120
- obtainedTokens.account = tokenInfo.account;
121
- request.yar.set('jwtToken', obtainedTokens);
122
- await request.yar.commit(h);
123
- delete request.headers.authorization; // Remove the authorization header
124
- return h.continue;
125
- }
126
- }
127
- switch (tokenInfo.tokenType) {
128
- case 'Bearer':
129
- case 'bearer': {
130
- request.headers.authorization = `Bearer ${tokenInfo.token}`;
131
- break;
132
- }
133
- default:
134
- break;
135
- }
136
- }
137
- return h.continue;
138
- });
139
- hapiServer.ext('onPreResponse', async (request, h) => {
140
- const response = request.response;
141
- // Seek to redirect to login on unauthorize
142
- if (response.isBoom && response.output.statusCode === 401 && !request.path.startsWith('/auth/callback')) {
143
- function base64URLEncode(buffer) {
144
- return buffer.toString("base64")
145
- .replace(/=/g, "")
146
- .replace(/\+/g, "-")
147
- .replace(/\//g, "_");
148
- }
149
- function createPKCECodes() {
150
- const verifier = base64URLEncode(crypto.randomBytes(32));
151
- const challenge = base64URLEncode(crypto.createHash("sha256").update(verifier).digest());
152
- return { verifier, challenge };
153
- }
154
- const pkce = createPKCECodes();
155
- // This state id helps keep yar storage for code verifier across responseMode: form_post requests
156
- const stateId = crypto.randomBytes(16).toString('hex');
157
- saveVerifier(stateId, pkce.verifier);
158
-
159
- const authUrl = await this.authServerConfig.authServer.msalClient.getAuthCodeUrl({
160
- redirectUri: me.getRedirectUri(request, 'auth/callback'),
161
- scopes: me.authServerConfig.authServer.scope.split(" ") ?? ["user.read"],
162
- codeChallenge: pkce.challenge,
163
- codeChallengeMethod: "S256",
164
- responseMode: 'form_post',
165
- state: stateId
166
- });
167
-
168
- let userRelog = request.yar.get('userRelog');
169
- request.yar.set('pkv', pkce.verifier)
170
- request.yar.commit(h);
171
- if (userRelog && request.path !== '/') {
172
- return h.redirect('/');
173
- } else {
174
- return h.redirect(authUrl);
175
- }
176
- }
177
- return h.continue;
178
- });
179
- // GET /auth/callback: Resolves the jwt token on a callback after the login (keycloak/azure)
180
- hapiServer.route({
181
- method: 'GET',
182
- path: '/auth/callback',
183
- options: {
184
- auth: false, // Disable authentication for this route
185
- },
186
- handler: async (request, h) => {
187
- const authCode = request.query.code;
188
- if (!authCode) {
189
- return h.response('Authorization code missing').code(400);
190
- }
191
- try {
192
- let pkceverifier = request.yar.get('pkv');
193
- const tokenResponse = await me.authServerConfig.authServer.msalClient.acquireTokenByCode({
194
- code: authCode,
195
- redirectUri: me.getRedirectUri(request, 'auth/callback'),
196
- scopes: me.authServerConfig.authServer.scope.split(" ") ?? ["user.read"],
197
- codeVerifier: pkceverifier,
198
- });
199
- let obtainedTokens = {
200
- tokenType: 'Bearer',
201
- token: tokenResponse.idToken,
202
- tokenSubType: 'id_token',
203
- account: tokenResponse.account
204
- };
205
- request.yar.set('jwtToken', obtainedTokens);
206
- let originalUrlPathName = request.yar.get('originalUrlPathName') ?? '/'
207
- // Set session state
208
- const sessionState = request.query.session_state;
209
- h.state(this.COOKIE_NAMES.SESSION_STATE, sessionState);
210
-
211
- // already reloged
212
- request.yar.clear('userRelog');
213
- // Store the JWT token in the `Authorization` header or a cookie
214
- switch (obtainedTokens.tokenType) {
215
- case 'Bearer':
216
- case 'bearer': {
217
- request.yar.set('jwtToken', obtainedTokens);
218
- await request.yar.commit(h);
219
- return h.redirect(originalUrlPathName);
220
- }
221
- default: {
222
- break;
223
- }
224
- }
225
- await request.yar.commit(h);
226
- return h.redirect('/'); // Continue in case no token_type -> no auth header configured
227
- } catch (error) {
228
- request.yar.reset();
229
- await request.yar.commit(h);
230
- delete request.headers.authorization; // Remove the authorization header
231
- console.error('Failed to obtain jwt token: ', error.response?.data ?? error.message);
232
- return h.response('Failed to authenticate').code(500).takeover();
233
- }
234
- },
235
- });
236
- // POST /auth/callback: Resolves the jwt token on a callback after the login (keycloak/azure)
237
- hapiServer.route({
238
- method: 'POST',
239
- path: '/auth/callback',
240
- options: {
241
- auth: false, // Disable authentication for this route
242
- },
243
- handler: async (request, h) => {
244
- const authCode = request.payload.code;
245
- if (!authCode) {
246
- return h.response('Authorization code missing').code(400);
247
- }
248
- try {
249
- //let pkceverifier = request.yar.get('pkv');
250
- const stateId = request.payload.state;
251
- //const pkceverifier = request.yar.get(`pkce:${stateId}`);
252
- const pkceverifier = getVerifier(stateId)
253
- const tokenResponse = await me.authServerConfig.authServer.msalClient.acquireTokenByCode({
254
- code: authCode,
255
- redirectUri: me.getRedirectUri(request, 'auth/callback'),
256
- scopes: me.authServerConfig.authServer.scope.split(" ") ?? ["user.read"],
257
- codeVerifier: pkceverifier,
258
- responseMode: 'form_post'
259
- });
260
- let obtainedTokens = {
261
- tokenType: 'Bearer',
262
- token: tokenResponse.idToken,
263
- tokenSubType: 'id_token',
264
- account: tokenResponse.account
265
- };
266
- request.yar.set('jwtToken', obtainedTokens);
267
- let originalUrlPathName = request.yar.get('originalUrlPathName') ?? '/'
268
- // Set session state
269
- const sessionState = request.payload.session_state;
270
- if (!sessionState) {
271
- return h.response('Session State missing').code(400);
272
- }
273
- h.state(this.COOKIE_NAMES.SESSION_STATE, sessionState);
274
-
275
-
276
- // already reloged
277
- request.yar.clear('userRelog');
278
- // Store the JWT token in the `Authorization` header or a cookie
279
- switch (obtainedTokens.tokenType) {
280
- case 'Bearer':
281
- case 'bearer': {
282
- request.yar.set('jwtToken', obtainedTokens);
283
- await request.yar.commit(h);
284
- return h.redirect(originalUrlPathName);
285
- }
286
- default: {
287
- break;
288
- }
289
- }
290
- await request.yar.commit(h);
291
- return h.redirect('/'); // Continue in case no token_type -> no auth header configured
292
- } catch (error) {
293
- request.yar.reset();
294
- await request.yar.commit(h);
295
- delete request.headers.authorization; // Remove the authorization header
296
- console.error('Failed to obtain jwt token: ', error.response?.data ?? error.message);
297
- return h.response('Failed to authenticate').code(500).takeover();
298
- }
299
- },
300
- });
301
- const me = this
302
- // /get-authorization
303
- hapiServer.route({
304
- method: 'GET',
305
- path: '/get-authorization',
306
- handler: async (request, h) => {
307
- try {
308
- const {
309
- session_state: ckSessionState
310
- } = request.state
311
- if (!ckSessionState) {
312
- throw new Exception("Azure get-authorization: Session cookie doesn't exist.", 'CookiesError', 404)
313
- }
314
- const tokenSet = await me.openIdConnect.tokenSet()
315
- const tokens = await tokenSet.tokens(ckSessionState)
316
- const uma = await Uma.permission()
317
- const token = await uma.ticket({
318
- tokenUrl: authServer.tokenEndpoint || authServer.tokenUrl,
319
- token: tokens.access_token,
320
- audience: authServer.clientId
321
- })
322
- const sourceData = Jsonwebtoken.decode(token.access_token)
323
- return h.response(JSON.stringify(sourceData.authorization)).takeover()
324
- } catch (err) {
325
- return errorResponse(h, err, 401)
326
- }
327
- }
328
- })
329
- // /get-security-rules
330
- hapiServer.route({
331
- method: 'GET',
332
- path: '/get-security-rules',
333
- handler: async (request, h) => {
334
- try {
335
- const securityRules = await securityService.getFrontendSecurityRules(request)
336
- return h.response(JSON.stringify(securityRules)).takeover()
337
- } catch (err) {
338
- return errorResponse(h, err, 401)
339
- }
340
- }
341
- })
342
- // /get-permissions
343
- hapiServer.route({
344
- method: 'GET',
345
- path: '/get-permissions',
346
- handler: async (request, h) => {
347
- try {
348
- const permissions = await securityService.getPermissions()
349
- return h.response(JSON.stringify(permissions)).takeover()
350
- } catch (err) {
351
- return errorResponse(h, err, 401)
352
- }
353
- }
354
- })
355
-
356
- hapiServer.route({
357
- method: 'GET',
358
- path: '/check-authorize',
359
- handler: async (request, h) => {
360
- try {
361
- const resourcePath = request.query.path;
362
- const action = request.query.action;
363
- const roles = request.query.roles;
364
- const domains = request.query.domains;
365
- let parsedRoles;
366
- if (Array.isArray(roles)) {
367
- parsedRoles = roles;
368
- } else if (typeof roles === 'string') {
369
- parsedRoles = roles.split(',').map(r => r.trim());
370
- } else {
371
- parsedRoles = [];
372
- }
373
- let parsedDomains;
374
- if (Array.isArray(domains)) {
375
- parsedDomains = domains;
376
- } else if (typeof domains === 'string') {
377
- parsedDomains = domains.split(',').map(d => d.trim());
378
- } else {
379
- parsedDomains = [];
380
- }
381
- const result = await securityService.checkAuthorize(
382
- resourcePath,
383
- action,
384
- parsedRoles,
385
- parsedDomains
386
- );
387
- return h.response(JSON.stringify(result)).takeover()
388
- } catch (err) {
389
- return errorResponse(h, err, 401)
390
- }
391
- }
392
- })
393
-
394
- // /get-user-info
395
- hapiServer.route({
396
- method: 'GET',
397
- path: '/get-user-info',
398
- handler: async (request, h) => {
399
- try {
400
- const userInfo = await securityService.getUserInfo(request)
401
- return h
402
- .response(JSON.stringify(userInfo))
403
- .takeover()
404
- } catch (err) {
405
- return errorResponse(h, err, 500)
406
- }
407
- }
408
- })
409
- // /logout
410
- hapiServer.route({
411
- path: '/logout',
412
- method: 'GET',
413
- options: {
414
- auth: false
415
- }, // No auth required for logout
416
- handler: async (request, h) => {
417
- try {
418
- // Get the post-logout redirect URI (where the user will go after logout)
419
- const postLogoutRedirectUri = encodeURIComponent(me.getBaseUrl(request));
420
- // Construct the logout URL for Azure AD
421
- const logoutUrl = `https://login.microsoftonline.com/${me.authServerConfig.authServer.tenantId}/oauth2/v2.0/logout?post_logout_redirect_uri=${postLogoutRedirectUri}`;
422
-
423
- // Clear session
424
- request.yar.clear('jwtToken');
425
- request.yar.clear('userRelog');
426
-
427
- return h.redirect(logoutUrl); // Redirect to Azure AD logout
428
- } catch (error) {
429
- console.error('Error logging out:', error);
430
- return h.response('Logout failed').code(500);
431
- }
432
- },
433
- });
434
- // /check-session-iframe.html
435
- // This method returns the htlm code for the iframe
436
- hapiServer.route({
437
- path: '/check-session-iframe.html',
438
- method: 'GET',
439
- options: {
440
- auth: false
441
- },
442
- handler: async (request, h) => {
443
- try {
444
- let content = getTemplate('session-iframe-azure-ad', {
445
- checkSessionUrl: me.getBaseUrl(request) + 'check-session'
446
- })
447
- return h.response(content)
448
- .header('Content-Type', 'text/html')
449
- } catch (err) {
450
- return errorResponse(h, err, 500)
451
- }
452
- }
453
- });
454
- // /check-session
455
- hapiServer.route({
456
- path: '/check-session',
457
- options: {
458
- auth: false
459
- },
460
- method: 'GET',
461
- handler: async (request, h) => {
462
- let tokenInfo = request.yar.get('jwtToken');
463
- let tokenIsExpired = { expired: false }
464
- if (tokenInfo) {
465
- // check if token is about to be expired
466
- tokenIsExpired.expired = await me.tokenAboutToExpire(tokenInfo.token, 0.5);
467
- if (tokenIsExpired.expired) {
468
- let params = {
469
- redirectUri: me.getRedirectUri(request, 'auth/callback'),
470
- scopes: me.authServerConfig.authServer.scope.split(" "),
471
- }
472
- tokenIsExpired.redirectUrl = await me.authServerConfig.authServer.msalClient.getAuthCodeUrl(params);
473
- request.yar.clear('jwtToken');
474
- request.yar.clear('userRelog');
475
- }
476
- }
477
- return h.response(tokenIsExpired);
478
- }
479
- })
480
- }
481
- getRedirectUri(request, redirectPath) {
482
- const baseUrl = this.authServerConfig.url ?? this.getBaseUrl(request);
483
- const path = (redirectPath) ?? this.getPathname(request);
484
- let url = new URL(path, baseUrl);
485
-
486
- // If the hostname is not localhost, force HTTPS
487
- if (url.hostname !== 'localhost' && url.hostname !== '127.0.0.1') {
488
- url.protocol = 'https:';
489
- }
490
- return url.toString();
491
- }
492
- getFullUrl(request) {
493
- return `${getProtocol(request)}://${getHost(request)}${getPathname(request)}`
494
- }
495
- getBaseUrl(request) {
496
- return `${getProtocol(request)}://${getHost(request)}/`
497
- }
498
- async authenticate(h, scope) {
499
- const {
500
- request
501
- } = h
502
- const pkceCode = await this.openIdConnect.pkceCode()
503
- const requestUrl = getFullUrl(request)
504
- let oidcMetadata = await this.openIdConnect.oidcMetadata()
505
- if (!oidcMetadata || !oidcMetadata.openid_configuration) {
506
- oidcMetadata = await this.configuration(this.authServerConfig.authServer)
507
- }
508
- if (requestUrl.match(new RegExp(/^(https?:\/{2}.*):?(\d*)/.source + getHost(request) + /\/?$/.source))) {
509
- const authorizationUrl = await this.openIdConnect.authorizationUrl({
510
- scope,
511
- redirectUri: this.getRedirectUri(request),
512
- pkceCode
513
- })
514
- trace('INFO', `Authenticate redirecting to ${authorizationUrl}`)
515
- return h
516
- .response()
517
- .state(this.COOKIE_NAMES.SID, pkceCode)
518
- .redirect(authorizationUrl)
519
- .takeover()
520
- } else if (getPathname(request) === '/logout') {
521
- return h.continue
522
- } else {
523
- const tokenSet = await this.openIdConnect.tokenSet()
524
- const {
525
- state
526
- } = request
527
- if (tokenSet && state && state[this.COOKIE_NAMES.SESSION_STATE]) {
528
- const tokens = await tokenSet.tokens(state[this.COOKIE_NAMES.SESSION_STATE])
529
- if (!tokens || tokens.refresh_expires_in <= getTokenTolerance(0)) {
530
- throw new Exception('Error when getting token', 'ExpirationError', 403)
531
- }
532
- return h.continue
533
- } else {
534
- return h
535
- .response()
536
- .code(401)
537
- .takeover()
538
- }
539
- }
540
- }
541
-
542
- async configurePlugins(server) {
543
- // Add Yar to save info in the cookies across session calls
544
- const hapiYarPassword = process.env.blz_hapiYarPassword || 'your-super-secure-yar-atleast-32-bytes-password';
545
- await server.register({
546
- plugin: hapiYar,
547
- options: {
548
- name: 'yar_state',
549
- cookieOptions: {
550
- password: hapiYarPassword,
551
- isSecure: true, // Use true in production
552
- isHttpOnly: true,
553
- isSameSite: 'Lax', // 'Strict', 'Lax', or 'None'
554
- clearInvalid: true,
555
- ignoreErrors: true
556
- },
557
- storeBlank: false, // Prevent saving blank sessions
558
- maxCookieSize: 0 // Use server-side storage for larger payloads
559
- }
560
- });
561
- // Register @hapi/jwt plugin
562
- await server.register(hapiJwt);
563
-
564
- // Check for static certificate or rotating.
565
- let keysFetch = true;
566
- // Azure rotating certificates, prepare for the hapi jwt module
567
- this.startupJwksClient();
568
- // set up the function in this.publickKeyFetch
569
- this.startupPublickKeyFetch();
570
- keysFetch = this.publicKeyFetch;
571
- const tenant_id = this.authServerConfig.authServer.issuer.match(/login\.microsoftonline\.com\/([^/]+)/)?.[1];
572
- this.authServerConfig.authServer.tenantId = tenant_id;
573
- this.authServerConfig.authServer.msalConfig = {
574
- auth: {
575
- clientId: this.authServerConfig.authServer.clientId,
576
- authority: `https://login.microsoftonline.com/${tenant_id}`,
577
- clientSecret: this.authServerConfig.authServer.clientSecret
578
- },
579
- };
580
- const msalClient = new ConfidentialClientApplication(this.authServerConfig.authServer.msalConfig);
581
- this.authServerConfig.authServer.msalClient = msalClient;
582
-
583
- // Define the auth strategy
584
- server.auth.strategy('jwtAuth', 'jwt', {
585
- keys: keysFetch,
586
- verify: {
587
- aud: this.authServerConfig.authServer.clientId,
588
- iss: this.authServerConfig.authServer.issuer,
589
- exp: true, // validate expiration
590
- sub: false
591
- },
592
- validate: false
593
- });
594
-
595
- // Register the @hapi/cookie plugin
596
- await server.register(hapiCookie);
597
-
598
- const hapiCookiePassword = process.env.blz_hapiCookiePassword || 'supersecretpasswordmustbeatleast32characterslong';
599
- // Define the cookie-based auth strategy
600
- server.auth.strategy('cookieAuth', 'cookie', {
601
- cookie: {
602
- name: 'sid', // Primary session cookie
603
- password: hapiCookiePassword, // Encryption key
604
- isSecure: true, // Should be true in production
605
- isHttpOnly: true, // Prevents client-side JavaScript access
606
- isSameSite: 'Lax', // Protects against CSRF
607
- },
608
- keepAlive: true,
609
- redirectTo: false,
610
- });
611
- // Set default auth strategy to try both JWT and cookies
612
- server.auth.default({
613
- strategies: ['jwtAuth', 'cookieAuth'], // Try JWT first, then Cookie
614
- });
615
- }
616
-
617
- async decodeJwtToken(token) {
618
- const decodedToken = hapiJwt.token.decode(token);
619
- return decodedToken;
620
- }
621
- async tokenAboutToExpire(token, minutesBeforeExpiration = 0) {
622
- if (!token)
623
- return true;
624
- const decodedToken = hapiJwt.token.decode(token);
625
- const expirationTime = decodedToken.decoded.payload.exp * 1000; // Convert to milliseconds
626
- const currentTime = Date.now();
627
- const expirationThreshold = minutesBeforeExpiration * 60 * 1000; // Convert minutes to milliseconds
628
-
629
- // Check if the token is expired or about to expire within the specified minutes
630
- const isAboutToExpire = expirationTime - currentTime <= expirationThreshold;
631
- return isAboutToExpire;
632
- }
633
- async isRefreshTokenExpired(refreshToken) {
634
- try {
635
- // Decode the token without verifying its signature.
636
- const decodedRefreshToken = hapiJwt.token.decode(refreshToken);
637
- // Get the current timestamp (in seconds).
638
- const currentTimestamp = Math.floor(Date.now() / 1000);
639
-
640
- if (decodedRefreshToken && decodedRefreshToken.decoded && decodedRefreshToken.decoded.payload && decodedRefreshToken.decoded.payload.exp) {
641
- return (decodedRefreshToken.decoded.payload.exp < currentTimestamp)
642
- } else
643
- return true;
644
- } catch (error) {
645
- // if there is an error treat as if expired, so a re-login is prompted
646
- console.error('Failed to decode the token: Invalid Refresh token format', error);
647
- return true;
648
- }
649
- }
650
- async startupJwksClient() {
651
- // Azure rotating certificates, prepare for the hapi jwt module
652
- this.clientJwk = jwksClient({
653
- jwksUri: this.authServerConfig.authServer.jwksUri,
654
- cache: true, // Cache signing keys to avoid frequent network calls
655
- rateLimit: true, // Rate limit the number of requests to the JWKS URI
656
- jwksRequestsPerMinute: 10, // Limit to 10 requests per minute
657
- });
658
- }
659
- async startupPublickKeyFetch() {
660
- // Function to get the signing key
661
- const getKey = async (kid) => {
662
- return new Promise((resolve, reject) => {
663
- this.clientJwk.getSigningKey(kid, (err, key) => {
664
- if (err) {
665
- return reject(err);
666
- }
667
- const signingKey = key.getPublicKey(); // Public key for signature verification
668
- resolve(signingKey);
669
- });
670
- });
671
- };
672
- this.publicKeyFetch = async (artifacts) => {
673
- const kid = artifacts.decoded.header.kid; // Extract 'kid' from JWT header
674
- return getKey(kid); // Fetch the corresponding public key
675
- }
676
- }
677
- }
678
-
679
- module.exports = {
680
- HapiServerAzureAd
681
- }