@shushed/helpers 0.0.202-v2-20251208085030 → 0.0.203-bug-erp-770-20251208112219

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 (236) hide show
  1. package/dist/index.d.ts +34970 -0
  2. package/dist/index.js +113321 -0
  3. package/dist/package.json +3 -6
  4. package/package.json +4 -7
  5. package/dist/cjs/dist-dereferenced/asset.js +0 -4
  6. package/dist/cjs/dist-dereferenced/category.js +0 -4
  7. package/dist/cjs/dist-dereferenced/country.js +0 -4
  8. package/dist/cjs/dist-dereferenced/currency.js +0 -4
  9. package/dist/cjs/dist-dereferenced/customer-segment.js +0 -4
  10. package/dist/cjs/dist-dereferenced/development-colour.js +0 -4
  11. package/dist/cjs/dist-dereferenced/index.js +0 -69
  12. package/dist/cjs/dist-dereferenced/marketing-preferences.js +0 -4
  13. package/dist/cjs/dist-dereferenced/messages/ean-change.js +0 -4
  14. package/dist/cjs/dist-dereferenced/messages/index.js +0 -50
  15. package/dist/cjs/dist-dereferenced/messages/order/delivered.js +0 -4
  16. package/dist/cjs/dist-dereferenced/messages/order/index.js +0 -18
  17. package/dist/cjs/dist-dereferenced/messages/order/new.js +0 -4
  18. package/dist/cjs/dist-dereferenced/messages/order/processed.js +0 -4
  19. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +0 -4
  20. package/dist/cjs/dist-dereferenced/messages/order/returned.js +0 -4
  21. package/dist/cjs/dist-dereferenced/messages/order/shipped.js +0 -4
  22. package/dist/cjs/dist-dereferenced/messages/price-change.js +0 -4
  23. package/dist/cjs/dist-dereferenced/messages/product-category.js +0 -4
  24. package/dist/cjs/dist-dereferenced/messages/product-draft.js +0 -4
  25. package/dist/cjs/dist-dereferenced/messages/product.js +0 -4
  26. package/dist/cjs/dist-dereferenced/money.js +0 -4
  27. package/dist/cjs/dist-dereferenced/order/address.js +0 -4
  28. package/dist/cjs/dist-dereferenced/order/customer.js +0 -4
  29. package/dist/cjs/dist-dereferenced/order/index.js +0 -51
  30. package/dist/cjs/dist-dereferenced/order/item.js +0 -4
  31. package/dist/cjs/dist-dereferenced/order/orderMain.js +0 -4
  32. package/dist/cjs/dist-dereferenced/order/payment.js +0 -4
  33. package/dist/cjs/dist-dereferenced/order/shipment/index.js +0 -45
  34. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js +0 -11
  35. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +0 -4
  36. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +0 -4
  37. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js +0 -13
  38. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +0 -4
  39. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +0 -4
  40. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +0 -4
  41. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +0 -4
  42. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js +0 -13
  43. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +0 -4
  44. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +0 -4
  45. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +0 -4
  46. package/dist/cjs/dist-dereferenced/price.js +0 -4
  47. package/dist/cjs/dist-dereferenced/product-category.js +0 -4
  48. package/dist/cjs/dist-dereferenced/product-draft.js +0 -4
  49. package/dist/cjs/dist-dereferenced/product.js +0 -4
  50. package/dist/cjs/dist-dereferenced/stock.js +0 -4
  51. package/dist/cjs/dist-dereferenced/total.js +0 -4
  52. package/dist/cjs/dist-types/asset.js +0 -2
  53. package/dist/cjs/dist-types/category.js +0 -2
  54. package/dist/cjs/dist-types/country.js +0 -2
  55. package/dist/cjs/dist-types/currency.js +0 -2
  56. package/dist/cjs/dist-types/customer-segment.js +0 -2
  57. package/dist/cjs/dist-types/development-colour.js +0 -2
  58. package/dist/cjs/dist-types/index.js +0 -38
  59. package/dist/cjs/dist-types/marketing-preferences.js +0 -2
  60. package/dist/cjs/dist-types/messages/ean-change.js +0 -2
  61. package/dist/cjs/dist-types/messages/index.js +0 -37
  62. package/dist/cjs/dist-types/messages/order/delivered.js +0 -2
  63. package/dist/cjs/dist-types/messages/order/index.js +0 -2
  64. package/dist/cjs/dist-types/messages/order/new.js +0 -2
  65. package/dist/cjs/dist-types/messages/order/processed.js +0 -2
  66. package/dist/cjs/dist-types/messages/order/return-initiated.js +0 -2
  67. package/dist/cjs/dist-types/messages/order/returned.js +0 -2
  68. package/dist/cjs/dist-types/messages/order/shipped.js +0 -2
  69. package/dist/cjs/dist-types/messages/price-change.js +0 -2
  70. package/dist/cjs/dist-types/messages/product-category.js +0 -2
  71. package/dist/cjs/dist-types/messages/product-draft.js +0 -2
  72. package/dist/cjs/dist-types/messages/product.js +0 -2
  73. package/dist/cjs/dist-types/money.js +0 -2
  74. package/dist/cjs/dist-types/order/address.js +0 -2
  75. package/dist/cjs/dist-types/order/customer.js +0 -2
  76. package/dist/cjs/dist-types/order/index.js +0 -37
  77. package/dist/cjs/dist-types/order/item.js +0 -2
  78. package/dist/cjs/dist-types/order/orderMain.js +0 -2
  79. package/dist/cjs/dist-types/order/payment.js +0 -2
  80. package/dist/cjs/dist-types/order/shipment/index.js +0 -39
  81. package/dist/cjs/dist-types/order/shipment/item/index.js +0 -2
  82. package/dist/cjs/dist-types/order/shipment/item/itemMain.js +0 -2
  83. package/dist/cjs/dist-types/order/shipment/item/returned.js +0 -2
  84. package/dist/cjs/dist-types/order/shipment/pos/index.js +0 -2
  85. package/dist/cjs/dist-types/order/shipment/pos/outbound.js +0 -2
  86. package/dist/cjs/dist-types/order/shipment/pos/posMain.js +0 -2
  87. package/dist/cjs/dist-types/order/shipment/pos/return.js +0 -2
  88. package/dist/cjs/dist-types/order/shipment/shipmentMain.js +0 -2
  89. package/dist/cjs/dist-types/order/shipment/shipped/index.js +0 -2
  90. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js +0 -2
  91. package/dist/cjs/dist-types/order/shipment/shipped/return.js +0 -2
  92. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js +0 -2
  93. package/dist/cjs/dist-types/price.js +0 -2
  94. package/dist/cjs/dist-types/product-category.js +0 -2
  95. package/dist/cjs/dist-types/product-draft.js +0 -2
  96. package/dist/cjs/dist-types/product.js +0 -2
  97. package/dist/cjs/dist-types/stock.js +0 -2
  98. package/dist/cjs/dist-types/total.js +0 -2
  99. package/dist/cjs/index.js +0 -39
  100. package/dist/cjs/src-public/airtable.js +0 -625
  101. package/dist/cjs/src-public/bigquery.js +0 -59
  102. package/dist/cjs/src-public/centra.js +0 -1053
  103. package/dist/cjs/src-public/cloudtasks.js +0 -207
  104. package/dist/cjs/src-public/dato.js +0 -680
  105. package/dist/cjs/src-public/env.js +0 -900
  106. package/dist/cjs/src-public/getEventTime.js +0 -28
  107. package/dist/cjs/src-public/index.js +0 -52
  108. package/dist/cjs/src-public/ipValidation.js +0 -167
  109. package/dist/cjs/src-public/jwks.js +0 -108
  110. package/dist/cjs/src-public/pubsub.js +0 -423
  111. package/dist/cjs/src-public/rateLimit.js +0 -140
  112. package/dist/cjs/src-public/redisClient.js +0 -44
  113. package/dist/cjs/src-public/runtime.js +0 -145
  114. package/dist/cjs/src-public/sanitize.js +0 -25
  115. package/dist/cjs/src-public/scheduler.js +0 -247
  116. package/dist/cjs/src-public/secret.js +0 -16
  117. package/dist/cjs/src-public/setHeaders.js +0 -16
  118. package/dist/cjs/src-public/types.js +0 -2
  119. package/dist/cjs/src-public/utils.js +0 -457
  120. package/dist/cjs/src-public/validate.js +0 -40
  121. package/dist/types/dist-dereferenced/asset.d.ts +0 -51
  122. package/dist/types/dist-dereferenced/category.d.ts +0 -58
  123. package/dist/types/dist-dereferenced/country.d.ts +0 -8
  124. package/dist/types/dist-dereferenced/currency.d.ts +0 -8
  125. package/dist/types/dist-dereferenced/customer-segment.d.ts +0 -26
  126. package/dist/types/dist-dereferenced/development-colour.d.ts +0 -114
  127. package/dist/types/dist-dereferenced/index.d.ts +0 -16
  128. package/dist/types/dist-dereferenced/marketing-preferences.d.ts +0 -31
  129. package/dist/types/dist-dereferenced/messages/ean-change.d.ts +0 -17
  130. package/dist/types/dist-dereferenced/messages/index.d.ts +0 -6
  131. package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +0 -3414
  132. package/dist/types/dist-dereferenced/messages/order/index.d.ts +0 -6
  133. package/dist/types/dist-dereferenced/messages/order/new.d.ts +0 -3414
  134. package/dist/types/dist-dereferenced/messages/order/processed.d.ts +0 -3408
  135. package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +0 -3414
  136. package/dist/types/dist-dereferenced/messages/order/returned.d.ts +0 -3413
  137. package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +0 -3412
  138. package/dist/types/dist-dereferenced/messages/price-change.d.ts +0 -67
  139. package/dist/types/dist-dereferenced/messages/product-category.d.ts +0 -33
  140. package/dist/types/dist-dereferenced/messages/product-draft.d.ts +0 -589
  141. package/dist/types/dist-dereferenced/messages/product.d.ts +0 -628
  142. package/dist/types/dist-dereferenced/money.d.ts +0 -41
  143. package/dist/types/dist-dereferenced/order/address.d.ts +0 -98
  144. package/dist/types/dist-dereferenced/order/customer.d.ts +0 -309
  145. package/dist/types/dist-dereferenced/order/index.d.ts +0 -3404
  146. package/dist/types/dist-dereferenced/order/item.d.ts +0 -336
  147. package/dist/types/dist-dereferenced/order/orderMain.d.ts +0 -3399
  148. package/dist/types/dist-dereferenced/order/payment.d.ts +0 -94
  149. package/dist/types/dist-dereferenced/order/shipment/index.d.ts +0 -253
  150. package/dist/types/dist-dereferenced/order/shipment/item/index.d.ts +0 -19
  151. package/dist/types/dist-dereferenced/order/shipment/item/itemMain.d.ts +0 -18
  152. package/dist/types/dist-dereferenced/order/shipment/item/returned.d.ts +0 -34
  153. package/dist/types/dist-dereferenced/order/shipment/pos/index.d.ts +0 -282
  154. package/dist/types/dist-dereferenced/order/shipment/pos/outbound.d.ts +0 -320
  155. package/dist/types/dist-dereferenced/order/shipment/pos/posMain.d.ts +0 -280
  156. package/dist/types/dist-dereferenced/order/shipment/pos/return.d.ts +0 -331
  157. package/dist/types/dist-dereferenced/order/shipment/shipmentMain.d.ts +0 -250
  158. package/dist/types/dist-dereferenced/order/shipment/shipped/index.d.ts +0 -288
  159. package/dist/types/dist-dereferenced/order/shipment/shipped/outbound.d.ts +0 -286
  160. package/dist/types/dist-dereferenced/order/shipment/shipped/return.d.ts +0 -287
  161. package/dist/types/dist-dereferenced/order/shipment/shipped/shippedMain.d.ts +0 -286
  162. package/dist/types/dist-dereferenced/price.d.ts +0 -58
  163. package/dist/types/dist-dereferenced/product-category.d.ts +0 -24
  164. package/dist/types/dist-dereferenced/product-draft.d.ts +0 -580
  165. package/dist/types/dist-dereferenced/product.d.ts +0 -619
  166. package/dist/types/dist-dereferenced/stock.d.ts +0 -74
  167. package/dist/types/dist-dereferenced/total.d.ts +0 -172
  168. package/dist/types/dist-types/asset.d.ts +0 -16
  169. package/dist/types/dist-types/category.d.ts +0 -20
  170. package/dist/types/dist-types/country.d.ts +0 -2
  171. package/dist/types/dist-types/currency.d.ts +0 -2
  172. package/dist/types/dist-types/customer-segment.d.ts +0 -6
  173. package/dist/types/dist-types/development-colour.d.ts +0 -31
  174. package/dist/types/dist-types/index.d.ts +0 -16
  175. package/dist/types/dist-types/marketing-preferences.d.ts +0 -9
  176. package/dist/types/dist-types/messages/ean-change.d.ts +0 -5
  177. package/dist/types/dist-types/messages/index.d.ts +0 -6
  178. package/dist/types/dist-types/messages/order/delivered.d.ts +0 -292
  179. package/dist/types/dist-types/messages/order/index.d.ts +0 -6
  180. package/dist/types/dist-types/messages/order/new.d.ts +0 -292
  181. package/dist/types/dist-types/messages/order/processed.d.ts +0 -292
  182. package/dist/types/dist-types/messages/order/return-initiated.d.ts +0 -292
  183. package/dist/types/dist-types/messages/order/returned.d.ts +0 -293
  184. package/dist/types/dist-types/messages/order/shipped.d.ts +0 -293
  185. package/dist/types/dist-types/messages/price-change.d.ts +0 -16
  186. package/dist/types/dist-types/messages/product-category.d.ts +0 -7
  187. package/dist/types/dist-types/messages/product-draft.d.ts +0 -136
  188. package/dist/types/dist-types/messages/product.d.ts +0 -144
  189. package/dist/types/dist-types/money.d.ts +0 -11
  190. package/dist/types/dist-types/order/address.d.ts +0 -27
  191. package/dist/types/dist-types/order/customer.d.ts +0 -81
  192. package/dist/types/dist-types/order/index.d.ts +0 -8
  193. package/dist/types/dist-types/order/item.d.ts +0 -85
  194. package/dist/types/dist-types/order/orderMain.d.ts +0 -289
  195. package/dist/types/dist-types/order/payment.d.ts +0 -26
  196. package/dist/types/dist-types/order/shipment/index.d.ts +0 -6
  197. package/dist/types/dist-types/order/shipment/item/index.d.ts +0 -4
  198. package/dist/types/dist-types/order/shipment/item/itemMain.d.ts +0 -6
  199. package/dist/types/dist-types/order/shipment/item/returned.d.ts +0 -11
  200. package/dist/types/dist-types/order/shipment/pos/index.d.ts +0 -5
  201. package/dist/types/dist-types/order/shipment/pos/outbound.d.ts +0 -76
  202. package/dist/types/dist-types/order/shipment/pos/posMain.d.ts +0 -71
  203. package/dist/types/dist-types/order/shipment/pos/return.d.ts +0 -75
  204. package/dist/types/dist-types/order/shipment/shipmentMain.d.ts +0 -62
  205. package/dist/types/dist-types/order/shipment/shipped/index.d.ts +0 -5
  206. package/dist/types/dist-types/order/shipment/shipped/outbound.d.ts +0 -68
  207. package/dist/types/dist-types/order/shipment/shipped/return.d.ts +0 -68
  208. package/dist/types/dist-types/order/shipment/shipped/shippedMain.d.ts +0 -69
  209. package/dist/types/dist-types/price.d.ts +0 -15
  210. package/dist/types/dist-types/product-category.d.ts +0 -6
  211. package/dist/types/dist-types/product-draft.d.ts +0 -135
  212. package/dist/types/dist-types/product.d.ts +0 -143
  213. package/dist/types/dist-types/stock.d.ts +0 -19
  214. package/dist/types/dist-types/total.d.ts +0 -44
  215. package/dist/types/index.d.ts +0 -3
  216. package/dist/types/src-public/airtable.d.ts +0 -227
  217. package/dist/types/src-public/bigquery.d.ts +0 -17
  218. package/dist/types/src-public/centra.d.ts +0 -176
  219. package/dist/types/src-public/cloudtasks.d.ts +0 -74
  220. package/dist/types/src-public/dato.d.ts +0 -95
  221. package/dist/types/src-public/env.d.ts +0 -144
  222. package/dist/types/src-public/getEventTime.d.ts +0 -1
  223. package/dist/types/src-public/index.d.ts +0 -18
  224. package/dist/types/src-public/ipValidation.d.ts +0 -15
  225. package/dist/types/src-public/jwks.d.ts +0 -15
  226. package/dist/types/src-public/pubsub.d.ts +0 -95
  227. package/dist/types/src-public/rateLimit.d.ts +0 -21
  228. package/dist/types/src-public/redisClient.d.ts +0 -6
  229. package/dist/types/src-public/runtime.d.ts +0 -58
  230. package/dist/types/src-public/sanitize.d.ts +0 -4
  231. package/dist/types/src-public/scheduler.d.ts +0 -71
  232. package/dist/types/src-public/secret.d.ts +0 -6
  233. package/dist/types/src-public/setHeaders.d.ts +0 -13
  234. package/dist/types/src-public/types.d.ts +0 -264
  235. package/dist/types/src-public/utils.d.ts +0 -101
  236. package/dist/types/src-public/validate.d.ts +0 -9
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = getEventTime;
4
- function getEventTime(x, defaultValue) {
5
- const possibleKeys = [
6
- 'last_modified_date_time',
7
- 'last_modified_date',
8
- 'last_modified_datetime',
9
- 'last_modified_date_time',
10
- 'lastModifiedAt',
11
- 'last_modified_at',
12
- 'SystemModifiedAt',
13
- 'system_modified_at',
14
- 'lastUpdatedAt',
15
- 'modified_at',
16
- 'last_updated_at',
17
- 'modifiedAt'
18
- ];
19
- for (let i = 0; i < possibleKeys.length; i++) {
20
- if (x[possibleKeys[i]]) {
21
- const possibleDateTime = new Date(x[possibleKeys[i]]);
22
- if (!isNaN(possibleDateTime.getTime())) {
23
- return possibleDateTime;
24
- }
25
- }
26
- }
27
- return defaultValue;
28
- }
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.RedisConnectionError = exports.RateLimit = exports.setHeaders = exports.DatoHelper = exports.AirtableHelper = exports.CentraHelper = exports.BigQueryHelper = exports.JWKSHelper = exports.CloudTasksHelper = exports.Secrets = exports.SchedulerHelper = exports.Logging = exports.Runtime = exports.PubSubHelper = exports.EnvEngine = exports.validate = void 0;
21
- var validate_1 = require("./validate");
22
- Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return __importDefault(validate_1).default; } });
23
- __exportStar(require("./sanitize"), exports);
24
- __exportStar(require("./utils"), exports);
25
- var env_1 = require("./env");
26
- Object.defineProperty(exports, "EnvEngine", { enumerable: true, get: function () { return __importDefault(env_1).default; } });
27
- var pubsub_1 = require("./pubsub");
28
- Object.defineProperty(exports, "PubSubHelper", { enumerable: true, get: function () { return __importDefault(pubsub_1).default; } });
29
- var runtime_1 = require("./runtime");
30
- Object.defineProperty(exports, "Runtime", { enumerable: true, get: function () { return __importDefault(runtime_1).default; } });
31
- Object.defineProperty(exports, "Logging", { enumerable: true, get: function () { return runtime_1.Logging; } });
32
- var scheduler_1 = require("./scheduler");
33
- Object.defineProperty(exports, "SchedulerHelper", { enumerable: true, get: function () { return __importDefault(scheduler_1).default; } });
34
- var secret_1 = require("./secret");
35
- Object.defineProperty(exports, "Secrets", { enumerable: true, get: function () { return __importDefault(secret_1).default; } });
36
- var cloudtasks_1 = require("./cloudtasks");
37
- Object.defineProperty(exports, "CloudTasksHelper", { enumerable: true, get: function () { return __importDefault(cloudtasks_1).default; } });
38
- var jwks_1 = require("./jwks");
39
- Object.defineProperty(exports, "JWKSHelper", { enumerable: true, get: function () { return __importDefault(jwks_1).default; } });
40
- var bigquery_1 = require("./bigquery");
41
- Object.defineProperty(exports, "BigQueryHelper", { enumerable: true, get: function () { return __importDefault(bigquery_1).default; } });
42
- var centra_1 = require("./centra");
43
- Object.defineProperty(exports, "CentraHelper", { enumerable: true, get: function () { return __importDefault(centra_1).default; } });
44
- var airtable_1 = require("./airtable");
45
- Object.defineProperty(exports, "AirtableHelper", { enumerable: true, get: function () { return __importDefault(airtable_1).default; } });
46
- var dato_1 = require("./dato");
47
- Object.defineProperty(exports, "DatoHelper", { enumerable: true, get: function () { return __importDefault(dato_1).default; } });
48
- var setHeaders_1 = require("./setHeaders");
49
- Object.defineProperty(exports, "setHeaders", { enumerable: true, get: function () { return __importDefault(setHeaders_1).default; } });
50
- var rateLimit_1 = require("./rateLimit");
51
- Object.defineProperty(exports, "RateLimit", { enumerable: true, get: function () { return __importDefault(rateLimit_1).default; } });
52
- Object.defineProperty(exports, "RedisConnectionError", { enumerable: true, get: function () { return rateLimit_1.RedisConnectionError; } });
@@ -1,167 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidIp = isValidIp;
4
- exports.isValidCidr = isValidCidr;
5
- exports.validateIpOrCidr = validateIpOrCidr;
6
- exports.isIpInCidr = isIpInCidr;
7
- exports.isIpInCidrs = isIpInCidrs;
8
- exports.getClientIp = getClientIp;
9
- const net_1 = require("net");
10
- function isValidIp(value) {
11
- if (!value)
12
- return false;
13
- return (0, net_1.isIP)(value.trim()) !== 0;
14
- }
15
- function isValidCidr(value) {
16
- if (!value)
17
- return false;
18
- const trimmed = value.trim();
19
- const parts = trimmed.split('/');
20
- if (parts.length !== 2)
21
- return false;
22
- const [ip, maskStr] = parts;
23
- const ipVersion = (0, net_1.isIP)(ip);
24
- if (ipVersion === 0)
25
- return false;
26
- if (!/^[0-9]{1,3}$/.test(maskStr))
27
- return false;
28
- const mask = Number(maskStr);
29
- if (!Number.isInteger(mask))
30
- return false;
31
- if (ipVersion === 4)
32
- return mask >= 0 && mask <= 32;
33
- return mask >= 0 && mask <= 128;
34
- }
35
- function validateIpOrCidr(value) {
36
- if (!value)
37
- return false;
38
- const trimmed = value.trim();
39
- return trimmed.includes('/') ? isValidCidr(trimmed) : isValidIp(trimmed);
40
- }
41
- function ipv4ToInt(ip) {
42
- const parts = ip.split('.');
43
- if (parts.length !== 4)
44
- return null;
45
- let val = 0 >>> 0;
46
- for (let i = 0; i < 4; i++) {
47
- const n = Number(parts[i]);
48
- if (!Number.isInteger(n) || n < 0 || n > 255)
49
- return null;
50
- val = ((val << 8) | n) >>> 0;
51
- }
52
- return val >>> 0;
53
- }
54
- function ipv6ToBigInt(ip) {
55
- const hasIpv4Tail = ip.includes('.');
56
- let head = ip;
57
- let tailHextets = [];
58
- if (hasIpv4Tail) {
59
- const lastColon = ip.lastIndexOf(':');
60
- const ipv4 = ip.slice(lastColon + 1);
61
- const ipv4Num = ipv4ToInt(ipv4);
62
- if (ipv4Num == null)
63
- return null;
64
- const hi = ((ipv4Num >>> 16) & 0xffff) >>> 0;
65
- const lo = (ipv4Num & 0xffff) >>> 0;
66
- tailHextets = [hi.toString(16), lo.toString(16)];
67
- head = ip.slice(0, lastColon);
68
- }
69
- const doubleColon = head.indexOf('::');
70
- let groups = [];
71
- if (doubleColon !== -1) {
72
- const left = head.slice(0, doubleColon).split(':').filter(Boolean);
73
- const right = head.slice(doubleColon + 2).split(':').filter(Boolean);
74
- const missing = Math.max(0, 8 - (left.length + right.length + tailHextets.length));
75
- groups = [...left, ...new Array(missing).fill('0'), ...right];
76
- }
77
- else {
78
- groups = head.split(':').filter(Boolean);
79
- }
80
- if (groups.length + tailHextets.length !== 8) {
81
- if (groups.length + tailHextets.length < 8) {
82
- const missing = 8 - (groups.length + tailHextets.length);
83
- groups = [...groups, ...new Array(missing).fill('0')];
84
- }
85
- else {
86
- return null;
87
- }
88
- }
89
- if (tailHextets.length) {
90
- groups = [...groups.slice(0, 6), ...tailHextets];
91
- }
92
- if (groups.length !== 8)
93
- return null;
94
- let result = 0n;
95
- for (let i = 0; i < 8; i++) {
96
- const part = groups[i];
97
- if (!/^[0-9a-fA-F]{1,4}$/.test(part))
98
- return null;
99
- const n = BigInt(parseInt(part, 16));
100
- result = (result << 16n) | n;
101
- }
102
- return result;
103
- }
104
- function ipv4CidrContains(ip, cidr) {
105
- const [base, maskStr] = cidr.split('/');
106
- const ipInt = ipv4ToInt(ip);
107
- const baseInt = ipv4ToInt(base);
108
- if (ipInt == null || baseInt == null)
109
- return false;
110
- const maskBits = Number(maskStr);
111
- if (!Number.isInteger(maskBits) || maskBits < 0 || maskBits > 32)
112
- return false;
113
- const mask = maskBits === 0 ? 0 : (~0 << (32 - maskBits)) >>> 0;
114
- return ((ipInt & mask) >>> 0) === ((baseInt & mask) >>> 0);
115
- }
116
- function ipv6CidrContains(ip, cidr) {
117
- const [base, maskStr] = cidr.split('/');
118
- const ipBig = ipv6ToBigInt(ip);
119
- const baseBig = ipv6ToBigInt(base);
120
- if (ipBig == null || baseBig == null)
121
- return false;
122
- const maskBits = Number(maskStr);
123
- if (!Number.isInteger(maskBits) || maskBits < 0 || maskBits > 128)
124
- return false;
125
- const prefix = BigInt(maskBits);
126
- const mask = prefix === 0n ? 0n : ((1n << prefix) - 1n) << (128n - prefix);
127
- return (ipBig & mask) === (baseBig & mask);
128
- }
129
- function isIpInCidr(ip, cidr) {
130
- const version = (0, net_1.isIP)(ip.trim());
131
- if (version === 0)
132
- return false;
133
- if (!isValidCidr(cidr))
134
- return false;
135
- const cidrIpVersion = (0, net_1.isIP)(cidr.split('/')[0]);
136
- if (cidrIpVersion !== version)
137
- return false;
138
- return version === 4 ? ipv4CidrContains(ip, cidr) : ipv6CidrContains(ip, cidr);
139
- }
140
- function isIpInCidrs(ip, cidrs) {
141
- if (!Array.isArray(cidrs) || cidrs.length === 0)
142
- return false;
143
- for (let i = 0; i < cidrs.length; i++) {
144
- const c = cidrs[i];
145
- if (typeof c !== 'string')
146
- continue;
147
- if (isIpInCidr(ip, c.trim()))
148
- return true;
149
- }
150
- return false;
151
- }
152
- function getClientIp(req) {
153
- const xForwardedFor = req.headers["x-forwarded-for"];
154
- if (typeof xForwardedFor === "string" && xForwardedFor.length > 0) {
155
- const clientIp = xForwardedFor.split(",")[0].trim();
156
- if (clientIp)
157
- return clientIp;
158
- }
159
- return req.socket.remoteAddress ?? undefined;
160
- }
161
- exports.default = {
162
- isValidIp,
163
- isValidCidr,
164
- validateIpOrCidr,
165
- isIpInCidr,
166
- isIpInCidrs,
167
- };
@@ -1,108 +0,0 @@
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.CACHE_TABLE = void 0;
7
- const jose_1 = require("jose");
8
- const runtime_1 = __importDefault(require("./runtime"));
9
- exports.CACHE_TABLE = 'cache-global';
10
- class JWKSHelper extends runtime_1.default {
11
- firestore;
12
- constructor(opts, firestore) {
13
- super(opts);
14
- this.firestore = firestore;
15
- }
16
- async validateAuthorizationHeader(authorizationHeader, expectedServiceAccount = null) {
17
- const splitted = authorizationHeader.split(".");
18
- const keyMeta = JSON.parse(Buffer.from(splitted[0], "base64").toString('utf-8')) || {};
19
- const meta = JSON.parse(Buffer.from(splitted[1], "base64").toString('utf-8')) || {};
20
- if (!meta.email_verified) {
21
- throw new Error("Authorization header - Email not verified");
22
- }
23
- if (expectedServiceAccount !== false) {
24
- if (expectedServiceAccount === null) {
25
- expectedServiceAccount = `runtime@${process.env.GCLOUD_PROJECT}.iam.gserviceaccount.com`;
26
- }
27
- if (meta.email !== expectedServiceAccount) {
28
- throw new Error(`Authorization header - Wrong service account, got ${meta?.email}, expected ${expectedServiceAccount}`);
29
- }
30
- }
31
- if (!keyMeta.kid || !keyMeta.alg) {
32
- throw new Error("Malformed Authorization Header. KID is missing");
33
- }
34
- const key = await this.getKey(keyMeta.kid);
35
- if (!key) {
36
- throw new Error("Incorrect Authorization Header. The key has not been found in the Google JWKS set");
37
- }
38
- const importedKey = await (0, jose_1.importJWK)(key, keyMeta.alg);
39
- let validationCorrect = true;
40
- try {
41
- await (0, jose_1.jwtVerify)(authorizationHeader, importedKey, {
42
- issuer: ['https://accounts.google.com', 'accounts.google.com'],
43
- clockTolerance: 0,
44
- audience: process.env.GCLOUD_PROJECT + "/" + this.triggerId,
45
- });
46
- }
47
- catch (err) {
48
- validationCorrect = false;
49
- }
50
- if (!validationCorrect) {
51
- throw new Error("Incorrect Authorization Header. The JWT is not valid");
52
- }
53
- return {
54
- email: meta.email,
55
- };
56
- }
57
- async getKey(keyId) {
58
- const jwks = typeof global.jwks !== 'undefined' ? global.jwks : null;
59
- let parsedJwks = null;
60
- if (jwks) {
61
- try {
62
- parsedJwks = JSON.parse(jwks);
63
- }
64
- catch (err) {
65
- err.message.toString();
66
- }
67
- }
68
- let keyData = parsedJwks?.keys?.find((x) => x.kid === keyId);
69
- let cachedItem;
70
- if (!keyData) {
71
- cachedItem = await this.firestore.collection(exports.CACHE_TABLE).doc('google-jwks').get();
72
- if (cachedItem.exists && cachedItem.data()?.expires_at.toDate() > new Date()) {
73
- keyData = cachedItem.data()?.value;
74
- }
75
- }
76
- keyData = parsedJwks?.keys.find((x) => x.kid === keyId);
77
- if (!keyData) {
78
- const result = (await this.fetchJWKS());
79
- parsedJwks = result.jwks;
80
- if (cachedItem) {
81
- cachedItem.ref.set({
82
- value: parsedJwks,
83
- expires_at: result.expiresAt
84
- }, { merge: true });
85
- }
86
- keyData = parsedJwks?.keys.find((x) => x.kid === keyId);
87
- }
88
- if (parsedJwks && cachedItem) {
89
- global.jwks = JSON.stringify(parsedJwks);
90
- }
91
- return keyData;
92
- }
93
- async fetchJWKS() {
94
- const date = new Date();
95
- let expiresAt = new Date(Date.now() + 1000 * 60 * 60);
96
- const response = await fetch("https://www.googleapis.com/oauth2/v3/certs");
97
- const maxAgePair = response.headers.get("Cache-Control")?.split(',').map(x => x.trim().split('=')).find(x => x[0] === 'max-age');
98
- if (maxAgePair && maxAgePair.length === 2) {
99
- expiresAt = new Date(date.getTime() + parseInt(maxAgePair[1], 10) * 1000);
100
- }
101
- const jwks = await response.json();
102
- return {
103
- expiresAt,
104
- jwks: jwks
105
- };
106
- }
107
- }
108
- exports.default = JWKSHelper;