@shushed/helpers 0.0.197 → 0.0.198-v2-20251104134625

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 (234) hide show
  1. package/dist/cjs/dist-dereferenced/asset.js +4 -0
  2. package/dist/cjs/dist-dereferenced/category.js +4 -0
  3. package/dist/cjs/dist-dereferenced/country.js +4 -0
  4. package/dist/cjs/dist-dereferenced/currency.js +4 -0
  5. package/dist/cjs/dist-dereferenced/customer-segment.js +4 -0
  6. package/dist/cjs/dist-dereferenced/development-colour.js +4 -0
  7. package/dist/cjs/dist-dereferenced/index.js +69 -0
  8. package/dist/cjs/dist-dereferenced/marketing-preferences.js +4 -0
  9. package/dist/cjs/dist-dereferenced/messages/ean-change.js +4 -0
  10. package/dist/cjs/dist-dereferenced/messages/index.js +50 -0
  11. package/dist/cjs/dist-dereferenced/messages/order/delivered.js +4 -0
  12. package/dist/cjs/dist-dereferenced/messages/order/index.js +18 -0
  13. package/dist/cjs/dist-dereferenced/messages/order/new.js +4 -0
  14. package/dist/cjs/dist-dereferenced/messages/order/processed.js +4 -0
  15. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +4 -0
  16. package/dist/cjs/dist-dereferenced/messages/order/returned.js +4 -0
  17. package/dist/cjs/dist-dereferenced/messages/order/shipped.js +4 -0
  18. package/dist/cjs/dist-dereferenced/messages/price-change.js +4 -0
  19. package/dist/cjs/dist-dereferenced/messages/product-category.js +4 -0
  20. package/dist/cjs/dist-dereferenced/messages/product-draft.js +4 -0
  21. package/dist/cjs/dist-dereferenced/messages/product.js +4 -0
  22. package/dist/cjs/dist-dereferenced/money.js +4 -0
  23. package/dist/cjs/dist-dereferenced/order/address.js +4 -0
  24. package/dist/cjs/dist-dereferenced/order/customer.js +4 -0
  25. package/dist/cjs/dist-dereferenced/order/index.js +51 -0
  26. package/dist/cjs/dist-dereferenced/order/item.js +4 -0
  27. package/dist/cjs/dist-dereferenced/order/orderMain.js +4 -0
  28. package/dist/cjs/dist-dereferenced/order/payment.js +4 -0
  29. package/dist/cjs/dist-dereferenced/order/shipment/index.js +45 -0
  30. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js +11 -0
  31. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +4 -0
  32. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +4 -0
  33. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js +13 -0
  34. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +4 -0
  35. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +4 -0
  36. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +4 -0
  37. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +4 -0
  38. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js +13 -0
  39. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +4 -0
  40. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +4 -0
  41. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +4 -0
  42. package/dist/cjs/dist-dereferenced/price.js +4 -0
  43. package/dist/cjs/dist-dereferenced/product-category.js +4 -0
  44. package/dist/cjs/dist-dereferenced/product-draft.js +4 -0
  45. package/dist/cjs/dist-dereferenced/product.js +4 -0
  46. package/dist/cjs/dist-dereferenced/stock.js +4 -0
  47. package/dist/cjs/dist-dereferenced/total.js +4 -0
  48. package/dist/cjs/dist-types/asset.js +2 -0
  49. package/dist/cjs/dist-types/category.js +2 -0
  50. package/dist/cjs/dist-types/country.js +2 -0
  51. package/dist/cjs/dist-types/currency.js +2 -0
  52. package/dist/cjs/dist-types/customer-segment.js +2 -0
  53. package/dist/cjs/dist-types/development-colour.js +2 -0
  54. package/dist/cjs/dist-types/index.js +38 -0
  55. package/dist/cjs/dist-types/marketing-preferences.js +2 -0
  56. package/dist/cjs/dist-types/messages/ean-change.js +2 -0
  57. package/dist/cjs/dist-types/messages/index.js +37 -0
  58. package/dist/cjs/dist-types/messages/order/delivered.js +2 -0
  59. package/dist/cjs/dist-types/messages/order/index.js +2 -0
  60. package/dist/cjs/dist-types/messages/order/new.js +2 -0
  61. package/dist/cjs/dist-types/messages/order/processed.js +2 -0
  62. package/dist/cjs/dist-types/messages/order/return-initiated.js +2 -0
  63. package/dist/cjs/dist-types/messages/order/returned.js +2 -0
  64. package/dist/cjs/dist-types/messages/order/shipped.js +2 -0
  65. package/dist/cjs/dist-types/messages/price-change.js +2 -0
  66. package/dist/cjs/dist-types/messages/product-category.js +2 -0
  67. package/dist/cjs/dist-types/messages/product-draft.js +2 -0
  68. package/dist/cjs/dist-types/messages/product.js +2 -0
  69. package/dist/cjs/dist-types/money.js +2 -0
  70. package/dist/cjs/dist-types/order/address.js +2 -0
  71. package/dist/cjs/dist-types/order/customer.js +2 -0
  72. package/dist/cjs/dist-types/order/index.js +37 -0
  73. package/dist/cjs/dist-types/order/item.js +2 -0
  74. package/dist/cjs/dist-types/order/orderMain.js +2 -0
  75. package/dist/cjs/dist-types/order/payment.js +2 -0
  76. package/dist/cjs/dist-types/order/shipment/index.js +39 -0
  77. package/dist/cjs/dist-types/order/shipment/item/index.js +2 -0
  78. package/dist/cjs/dist-types/order/shipment/item/itemMain.js +2 -0
  79. package/dist/cjs/dist-types/order/shipment/item/returned.js +2 -0
  80. package/dist/cjs/dist-types/order/shipment/pos/index.js +2 -0
  81. package/dist/cjs/dist-types/order/shipment/pos/outbound.js +2 -0
  82. package/dist/cjs/dist-types/order/shipment/pos/posMain.js +2 -0
  83. package/dist/cjs/dist-types/order/shipment/pos/return.js +2 -0
  84. package/dist/cjs/dist-types/order/shipment/shipmentMain.js +2 -0
  85. package/dist/cjs/dist-types/order/shipment/shipped/index.js +2 -0
  86. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js +2 -0
  87. package/dist/cjs/dist-types/order/shipment/shipped/return.js +2 -0
  88. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js +2 -0
  89. package/dist/cjs/dist-types/price.js +2 -0
  90. package/dist/cjs/dist-types/product-category.js +2 -0
  91. package/dist/cjs/dist-types/product-draft.js +2 -0
  92. package/dist/cjs/dist-types/product.js +2 -0
  93. package/dist/cjs/dist-types/stock.js +2 -0
  94. package/dist/cjs/dist-types/total.js +2 -0
  95. package/dist/cjs/index.js +39 -0
  96. package/dist/cjs/src-public/airtable.js +530 -0
  97. package/dist/cjs/src-public/bigquery.js +59 -0
  98. package/dist/cjs/src-public/cloudtasks.js +207 -0
  99. package/dist/cjs/src-public/dato.js +260 -0
  100. package/dist/cjs/src-public/env.js +901 -0
  101. package/dist/cjs/src-public/getEventTime.js +28 -0
  102. package/dist/cjs/src-public/index.js +50 -0
  103. package/dist/cjs/src-public/ipValidation.js +167 -0
  104. package/dist/cjs/src-public/jwks.js +108 -0
  105. package/dist/cjs/src-public/pubsub.js +446 -0
  106. package/dist/cjs/src-public/rateLimit.js +140 -0
  107. package/dist/cjs/src-public/redisClient.js +44 -0
  108. package/dist/cjs/src-public/runtime.js +119 -0
  109. package/dist/cjs/src-public/sanitize.js +25 -0
  110. package/dist/cjs/src-public/scheduler.js +247 -0
  111. package/dist/cjs/src-public/secret.js +16 -0
  112. package/dist/cjs/src-public/setHeaders.js +16 -0
  113. package/dist/cjs/src-public/types.js +2 -0
  114. package/dist/cjs/src-public/utils.js +286 -0
  115. package/dist/cjs/src-public/validate.js +40 -0
  116. package/dist/package.json +6 -3
  117. package/dist/types/dist-dereferenced/asset.d.ts +34 -0
  118. package/dist/types/dist-dereferenced/category.d.ts +58 -0
  119. package/dist/types/dist-dereferenced/country.d.ts +8 -0
  120. package/dist/types/dist-dereferenced/currency.d.ts +8 -0
  121. package/dist/types/dist-dereferenced/customer-segment.d.ts +26 -0
  122. package/dist/types/dist-dereferenced/development-colour.d.ts +97 -0
  123. package/dist/types/dist-dereferenced/index.d.ts +16 -0
  124. package/dist/types/dist-dereferenced/marketing-preferences.d.ts +31 -0
  125. package/dist/types/dist-dereferenced/messages/ean-change.d.ts +17 -0
  126. package/dist/types/dist-dereferenced/messages/index.d.ts +6 -0
  127. package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +3414 -0
  128. package/dist/types/dist-dereferenced/messages/order/index.d.ts +6 -0
  129. package/dist/types/dist-dereferenced/messages/order/new.d.ts +3414 -0
  130. package/dist/types/dist-dereferenced/messages/order/processed.d.ts +3408 -0
  131. package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +3414 -0
  132. package/dist/types/dist-dereferenced/messages/order/returned.d.ts +3413 -0
  133. package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +3412 -0
  134. package/dist/types/dist-dereferenced/messages/price-change.d.ts +58 -0
  135. package/dist/types/dist-dereferenced/messages/product-category.d.ts +33 -0
  136. package/dist/types/dist-dereferenced/messages/product-draft.d.ts +589 -0
  137. package/dist/types/dist-dereferenced/messages/product.d.ts +628 -0
  138. package/dist/types/dist-dereferenced/money.d.ts +41 -0
  139. package/dist/types/dist-dereferenced/order/address.d.ts +98 -0
  140. package/dist/types/dist-dereferenced/order/customer.d.ts +309 -0
  141. package/dist/types/dist-dereferenced/order/index.d.ts +3404 -0
  142. package/dist/types/dist-dereferenced/order/item.d.ts +336 -0
  143. package/dist/types/dist-dereferenced/order/orderMain.d.ts +3399 -0
  144. package/dist/types/dist-dereferenced/order/payment.d.ts +94 -0
  145. package/dist/types/dist-dereferenced/order/shipment/index.d.ts +253 -0
  146. package/dist/types/dist-dereferenced/order/shipment/item/index.d.ts +19 -0
  147. package/dist/types/dist-dereferenced/order/shipment/item/itemMain.d.ts +18 -0
  148. package/dist/types/dist-dereferenced/order/shipment/item/returned.d.ts +34 -0
  149. package/dist/types/dist-dereferenced/order/shipment/pos/index.d.ts +282 -0
  150. package/dist/types/dist-dereferenced/order/shipment/pos/outbound.d.ts +320 -0
  151. package/dist/types/dist-dereferenced/order/shipment/pos/posMain.d.ts +280 -0
  152. package/dist/types/dist-dereferenced/order/shipment/pos/return.d.ts +331 -0
  153. package/dist/types/dist-dereferenced/order/shipment/shipmentMain.d.ts +250 -0
  154. package/dist/types/dist-dereferenced/order/shipment/shipped/index.d.ts +288 -0
  155. package/dist/types/dist-dereferenced/order/shipment/shipped/outbound.d.ts +286 -0
  156. package/dist/types/dist-dereferenced/order/shipment/shipped/return.d.ts +287 -0
  157. package/dist/types/dist-dereferenced/order/shipment/shipped/shippedMain.d.ts +286 -0
  158. package/dist/types/dist-dereferenced/price.d.ts +49 -0
  159. package/dist/types/dist-dereferenced/product-category.d.ts +24 -0
  160. package/dist/types/dist-dereferenced/product-draft.d.ts +580 -0
  161. package/dist/types/dist-dereferenced/product.d.ts +619 -0
  162. package/dist/types/dist-dereferenced/stock.d.ts +74 -0
  163. package/dist/types/dist-dereferenced/total.d.ts +172 -0
  164. package/dist/types/dist-types/asset.d.ts +9 -0
  165. package/dist/types/dist-types/category.d.ts +20 -0
  166. package/dist/types/dist-types/country.d.ts +2 -0
  167. package/dist/types/dist-types/currency.d.ts +2 -0
  168. package/dist/types/dist-types/customer-segment.d.ts +6 -0
  169. package/dist/types/dist-types/development-colour.d.ts +24 -0
  170. package/dist/types/dist-types/index.d.ts +16 -0
  171. package/dist/types/dist-types/marketing-preferences.d.ts +9 -0
  172. package/dist/types/dist-types/messages/ean-change.d.ts +5 -0
  173. package/dist/types/dist-types/messages/index.d.ts +6 -0
  174. package/dist/types/dist-types/messages/order/delivered.d.ts +292 -0
  175. package/dist/types/dist-types/messages/order/index.d.ts +6 -0
  176. package/dist/types/dist-types/messages/order/new.d.ts +292 -0
  177. package/dist/types/dist-types/messages/order/processed.d.ts +292 -0
  178. package/dist/types/dist-types/messages/order/return-initiated.d.ts +292 -0
  179. package/dist/types/dist-types/messages/order/returned.d.ts +293 -0
  180. package/dist/types/dist-types/messages/order/shipped.d.ts +293 -0
  181. package/dist/types/dist-types/messages/price-change.d.ts +15 -0
  182. package/dist/types/dist-types/messages/product-category.d.ts +7 -0
  183. package/dist/types/dist-types/messages/product-draft.d.ts +136 -0
  184. package/dist/types/dist-types/messages/product.d.ts +144 -0
  185. package/dist/types/dist-types/money.d.ts +11 -0
  186. package/dist/types/dist-types/order/address.d.ts +27 -0
  187. package/dist/types/dist-types/order/customer.d.ts +81 -0
  188. package/dist/types/dist-types/order/index.d.ts +8 -0
  189. package/dist/types/dist-types/order/item.d.ts +85 -0
  190. package/dist/types/dist-types/order/orderMain.d.ts +289 -0
  191. package/dist/types/dist-types/order/payment.d.ts +26 -0
  192. package/dist/types/dist-types/order/shipment/index.d.ts +6 -0
  193. package/dist/types/dist-types/order/shipment/item/index.d.ts +4 -0
  194. package/dist/types/dist-types/order/shipment/item/itemMain.d.ts +6 -0
  195. package/dist/types/dist-types/order/shipment/item/returned.d.ts +11 -0
  196. package/dist/types/dist-types/order/shipment/pos/index.d.ts +5 -0
  197. package/dist/types/dist-types/order/shipment/pos/outbound.d.ts +76 -0
  198. package/dist/types/dist-types/order/shipment/pos/posMain.d.ts +71 -0
  199. package/dist/types/dist-types/order/shipment/pos/return.d.ts +75 -0
  200. package/dist/types/dist-types/order/shipment/shipmentMain.d.ts +62 -0
  201. package/dist/types/dist-types/order/shipment/shipped/index.d.ts +5 -0
  202. package/dist/types/dist-types/order/shipment/shipped/outbound.d.ts +68 -0
  203. package/dist/types/dist-types/order/shipment/shipped/return.d.ts +68 -0
  204. package/dist/types/dist-types/order/shipment/shipped/shippedMain.d.ts +69 -0
  205. package/dist/types/dist-types/price.d.ts +14 -0
  206. package/dist/types/dist-types/product-category.d.ts +6 -0
  207. package/dist/types/dist-types/product-draft.d.ts +135 -0
  208. package/dist/types/dist-types/product.d.ts +143 -0
  209. package/dist/types/dist-types/stock.d.ts +19 -0
  210. package/dist/types/dist-types/total.d.ts +44 -0
  211. package/dist/types/index.d.ts +3 -0
  212. package/dist/types/src-public/airtable.d.ts +211 -0
  213. package/dist/types/src-public/bigquery.d.ts +17 -0
  214. package/dist/types/src-public/cloudtasks.d.ts +74 -0
  215. package/dist/types/src-public/dato.d.ts +55 -0
  216. package/dist/types/src-public/env.d.ts +144 -0
  217. package/dist/types/src-public/getEventTime.d.ts +1 -0
  218. package/dist/types/src-public/index.d.ts +16 -0
  219. package/dist/types/src-public/ipValidation.d.ts +15 -0
  220. package/dist/types/src-public/jwks.d.ts +15 -0
  221. package/dist/types/src-public/pubsub.d.ts +93 -0
  222. package/dist/types/src-public/rateLimit.d.ts +21 -0
  223. package/dist/types/src-public/redisClient.d.ts +6 -0
  224. package/dist/types/src-public/runtime.d.ts +46 -0
  225. package/dist/types/src-public/sanitize.d.ts +4 -0
  226. package/dist/types/src-public/scheduler.d.ts +71 -0
  227. package/dist/types/src-public/secret.d.ts +6 -0
  228. package/dist/types/src-public/setHeaders.d.ts +13 -0
  229. package/dist/types/src-public/types.d.ts +263 -0
  230. package/dist/types/src-public/utils.d.ts +51 -0
  231. package/dist/types/src-public/validate.d.ts +9 -0
  232. package/package.json +7 -4
  233. package/dist/index.d.ts +0 -34842
  234. package/dist/index.js +0 -110556
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logging = void 0;
4
+ const DEFAULT_BRANCH = 'migratedprod';
5
+ const getCircularReplacer = () => {
6
+ const seen = new WeakSet();
7
+ return (key, value) => {
8
+ if (typeof value === "object" && value !== null) {
9
+ if (seen.has(value)) {
10
+ return;
11
+ }
12
+ seen.add(value);
13
+ }
14
+ return value;
15
+ };
16
+ };
17
+ class Logging {
18
+ workflowId;
19
+ triggerId;
20
+ systemEnvName;
21
+ metadata;
22
+ logFn;
23
+ errorFn;
24
+ constructor(workflowId, triggerId, systemEnvName) {
25
+ this.workflowId = workflowId;
26
+ this.triggerId = triggerId;
27
+ this.systemEnvName = systemEnvName;
28
+ this.metadata = {
29
+ resource: { type: 'cloud_run_revision' },
30
+ labels: {
31
+ project_id: process.env.GCLOUD_PROJECT,
32
+ }
33
+ };
34
+ this.logFn = (...args) => console.log(JSON.stringify(args, getCircularReplacer()));
35
+ this.errorFn = (...args) => console.error(JSON.stringify(args, getCircularReplacer()));
36
+ }
37
+ log(...args) {
38
+ this.logFn({
39
+ payload: args,
40
+ workflowId: this.workflowId,
41
+ wId: this.workflowId,
42
+ triggerId: this.triggerId,
43
+ tId: this.triggerId,
44
+ env: this.systemEnvName,
45
+ });
46
+ }
47
+ error(...args) {
48
+ this.errorFn({
49
+ payload: args,
50
+ workflowId: this.workflowId,
51
+ wId: this.workflowId,
52
+ triggerId: this.triggerId,
53
+ tId: this.triggerId,
54
+ env: this.systemEnvName,
55
+ });
56
+ }
57
+ }
58
+ exports.Logging = Logging;
59
+ class Runtime {
60
+ workflowId;
61
+ triggerId;
62
+ envName;
63
+ pubSubPrefix;
64
+ systemEnvName;
65
+ runtimeUrl;
66
+ logging;
67
+ constructor(opts) {
68
+ if (opts instanceof Runtime) {
69
+ this.workflowId = opts.workflowId;
70
+ this.triggerId = opts.triggerId;
71
+ this.systemEnvName = opts.systemEnvName;
72
+ this.runtimeUrl = opts.runtimeUrl;
73
+ this.pubSubPrefix = opts.pubSubPrefix;
74
+ this.envName = opts.envName;
75
+ this.logging = opts.logging || new Logging(this.workflowId, this.triggerId, this.systemEnvName);
76
+ }
77
+ else {
78
+ this.workflowId = opts.workflowId || opts.workflow?.id || '';
79
+ this.triggerId = opts.triggerId || opts.trigger?.id || '';
80
+ this.systemEnvName = this.getSystemEnvName(opts);
81
+ this.envName = this.systemEnvName === DEFAULT_BRANCH ? 'prod' : this.systemEnvName;
82
+ this.pubSubPrefix = this.envName === 'prod' ? '' : `${this.envName}---`;
83
+ this.runtimeUrl = this.getRuntimeUrl(opts);
84
+ this.logging = opts.logging || new Logging(this.workflowId, this.triggerId, this.systemEnvName);
85
+ }
86
+ }
87
+ getRuntimeUrl(options) {
88
+ const systemEnvName = this.getSystemEnvName(options);
89
+ const [_, ...idParts] = (process.env.GCLOUD_PROJECT || '').split('-');
90
+ if (process.env.RUNTIME_URL) {
91
+ return process.env.RUNTIME_URL;
92
+ }
93
+ return `https://${systemEnvName}-${idParts.join('-')}.buildship.run`;
94
+ }
95
+ getSystemEnvName(options) {
96
+ if (options instanceof Runtime) {
97
+ return options.systemEnvName;
98
+ }
99
+ if (options.runtimeEnv) {
100
+ return options.runtimeEnv;
101
+ }
102
+ if (process.env.runtime) {
103
+ return process.env.runtime;
104
+ }
105
+ let systemEnvName = null;
106
+ if (options.env?.triggerEnv) {
107
+ systemEnvName = options.env.triggerEnv.systemEnvName;
108
+ }
109
+ if (options.runtimeUrl || options.request?.host || options.url) {
110
+ const hostId = (options.runtimeUrl || options.request?.host || options.url || '').replace(/^(?:https?:)?\/\//i, '').split('/')[0].split('.')[0].toLowerCase();
111
+ if (hostId.includes('-')) {
112
+ systemEnvName = hostId.split('-')[0];
113
+ }
114
+ }
115
+ return systemEnvName || process.env.runtime || 'test-env';
116
+ }
117
+ }
118
+ exports.default = Runtime;
119
+ ;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitize = exports.sanitizeToString = void 0;
4
+ const deep_redact_1 = require("@hackylabs/deep-redact");
5
+ const blacklistedKeys = ['sensitive', 'password', /last[_-]?name/i, /sur[_-]?name/i, /first[_-]?name/i, /email/i, /phone/i, /address/i, /city/i, /state/i, /postcode/i, /zip/i];
6
+ const sanitizeToString = new deep_redact_1.DeepRedact({
7
+ blacklistedKeys,
8
+ retainStructure: true,
9
+ replacement: '*',
10
+ types: ['string', 'number'],
11
+ serialize: true,
12
+ remove: false,
13
+ replaceStringByLength: true
14
+ });
15
+ exports.sanitizeToString = sanitizeToString;
16
+ const sanitize = new deep_redact_1.DeepRedact({
17
+ blacklistedKeys,
18
+ retainStructure: true,
19
+ replacement: '*',
20
+ types: ['string', 'number'],
21
+ serialize: false,
22
+ remove: false,
23
+ replaceStringByLength: true
24
+ });
25
+ exports.sanitize = sanitize;
@@ -0,0 +1,247 @@
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
+ const env_1 = __importDefault(require("./env"));
7
+ class SchedulerHelper extends env_1.default {
8
+ pubSubTarget;
9
+ pubSubProjectId;
10
+ schedulerLocationId;
11
+ schedulerApiBase = 'https://cloudscheduler.googleapis.com/v1';
12
+ constructor(opts, settings) {
13
+ super(opts);
14
+ const optsWithSettings = opts;
15
+ const resolvedSettings = settings || optsWithSettings || {};
16
+ this.pubSubTarget = resolvedSettings.pubSubTarget ?? optsWithSettings?.pubSubTarget ?? null;
17
+ this.pubSubProjectId = this.pubSubTarget?.name?.split('/')[1] || null;
18
+ this.schedulerLocationId = resolvedSettings.schedulerLocationId ?? optsWithSettings?.schedulerLocationId ?? 'europe-west2';
19
+ }
20
+ get locationIds() {
21
+ return [
22
+ "asia-east1",
23
+ "asia-northeast1",
24
+ "asia-southeast1",
25
+ "europe-west1",
26
+ "us-central1",
27
+ "us-east1",
28
+ "us-east4",
29
+ "us-west1",
30
+ ];
31
+ }
32
+ getTarget(extraQuery = {}) {
33
+ extraQuery = Object.assign({}, extraQuery, {
34
+ 'created_by_wid': this.workflowId,
35
+ 'created_by_tid': this.triggerId,
36
+ 'created_by_sevn': this.systemEnvName,
37
+ 'cron': '1',
38
+ });
39
+ if (this.pubSubTarget) {
40
+ return {
41
+ pubsubTarget: {
42
+ topicName: this.pubSubTarget.name,
43
+ data: Buffer.from(JSON.stringify({
44
+ source: `${this.workflowId}/${this.triggerId}/${this.systemEnvName}`
45
+ }), 'utf-8'),
46
+ }
47
+ };
48
+ }
49
+ return {
50
+ httpTarget: {
51
+ uri: `${this.runtimeUrl}/executeWorkflow/${this.workflowId}/${this.triggerId}?${new URLSearchParams(extraQuery).toString()}`,
52
+ httpMethod: "POST",
53
+ headers: {
54
+ "Content-Type": "application/json",
55
+ },
56
+ oidcToken: {
57
+ serviceAccountEmail: `runtime@${process.env.GCLOUD_PROJECT}.iam.gserviceaccount.com`,
58
+ audience: process.env.GCLOUD_PROJECT + "/" + this.triggerId,
59
+ },
60
+ }
61
+ };
62
+ }
63
+ async create({ schedule, timezone, extraQuery = {} }) {
64
+ const { parent, name } = this.getSchedulerIdentifiers();
65
+ const target = this.getTarget(extraQuery);
66
+ try {
67
+ const job = await this.callScheduler(`${parent}/jobs`, {
68
+ method: 'POST',
69
+ body: {
70
+ name,
71
+ schedule,
72
+ timeZone: timezone,
73
+ ...target,
74
+ },
75
+ allowedStatuses: [200, 201],
76
+ });
77
+ return this.mapMutationJob(job);
78
+ }
79
+ catch (error) {
80
+ if (error.status === 409 || error.code === 409 || error.statusText === 'ALREADY_EXISTS') {
81
+ return this.update({ schedule, timezone: timezone, extraQuery });
82
+ }
83
+ else {
84
+ throw error;
85
+ }
86
+ }
87
+ }
88
+ ;
89
+ async retrieve() {
90
+ const { name } = this.getSchedulerIdentifiers();
91
+ try {
92
+ const job = await this.callScheduler(name, {
93
+ method: 'GET',
94
+ });
95
+ return this.mapRetrievedJob(job);
96
+ }
97
+ catch (err) {
98
+ this.logging.log('Failed to get job', err);
99
+ return null;
100
+ }
101
+ }
102
+ async update({ schedule, timezone, extraQuery = {} }) {
103
+ const { parent, name } = this.getSchedulerIdentifiers();
104
+ const target = this.getTarget(extraQuery);
105
+ const updateMaskFields = ['schedule', 'timeZone'];
106
+ if (target.httpTarget) {
107
+ updateMaskFields.push('httpTarget');
108
+ }
109
+ if (target.pubsubTarget) {
110
+ updateMaskFields.push('pubsubTarget');
111
+ }
112
+ try {
113
+ const job = await this.callScheduler(name, {
114
+ method: 'PATCH',
115
+ body: {
116
+ name,
117
+ schedule,
118
+ timeZone: timezone,
119
+ ...target,
120
+ },
121
+ query: {
122
+ updateMask: updateMaskFields.join(','),
123
+ },
124
+ });
125
+ return this.mapMutationJob(job);
126
+ }
127
+ catch {
128
+ const job = await this.callScheduler(`${parent}/jobs`, {
129
+ method: 'POST',
130
+ body: {
131
+ name,
132
+ schedule,
133
+ timeZone: timezone,
134
+ ...target,
135
+ },
136
+ allowedStatuses: [200, 201],
137
+ });
138
+ return this.mapMutationJob(job);
139
+ }
140
+ }
141
+ ;
142
+ async delete() {
143
+ const { name } = this.getSchedulerIdentifiers();
144
+ try {
145
+ await this.callScheduler(name, {
146
+ method: 'DELETE',
147
+ allowedStatuses: [200, 204],
148
+ });
149
+ }
150
+ catch (err) {
151
+ if (err.status === 404 || err.code === 404 || err.statusText === 'NOT_FOUND') {
152
+ return err.message;
153
+ }
154
+ throw err;
155
+ }
156
+ return 'deleted';
157
+ }
158
+ ;
159
+ getSchedulerIdentifiers() {
160
+ if (this.pubSubProjectId) {
161
+ const parent = `projects/${this.pubSubProjectId}/locations/${this.schedulerLocationId}`;
162
+ const name = `${parent}/jobs/buildship-workflow-${this.triggerId}-${this.systemEnvName}`;
163
+ return { parent, name };
164
+ }
165
+ let locationId = process.env.SERVICE_REGION;
166
+ locationId = this.locationIds.includes(locationId) ? locationId : 'us-central1';
167
+ const parent = `projects/${process.env.GCLOUD_PROJECT}/locations/${locationId}`;
168
+ const name = `${parent}/jobs/rowy-workflow-${this.triggerId}-${this.systemEnvName}`;
169
+ return { parent, name };
170
+ }
171
+ async callScheduler(path, options) {
172
+ return this.withGoogleAccessToken()(async (accessToken) => {
173
+ const url = new URL(`${this.schedulerApiBase}/${path.replace(/^\//, '')}`);
174
+ if (options.query) {
175
+ Object.entries(options.query)
176
+ .filter(([, value]) => typeof value !== 'undefined' && value !== null)
177
+ .forEach(([key, value]) => url.searchParams.set(key, value));
178
+ }
179
+ const headers = {
180
+ Authorization: `Bearer ${accessToken}`,
181
+ };
182
+ const method = options.method || 'GET';
183
+ const hasBody = typeof options.body !== 'undefined';
184
+ if (hasBody) {
185
+ headers['Content-Type'] = 'application/json';
186
+ }
187
+ const response = await fetch(url.toString(), {
188
+ method,
189
+ headers,
190
+ body: hasBody ? JSON.stringify(options.body) : undefined,
191
+ });
192
+ const allowedStatuses = options.allowedStatuses || [200];
193
+ if (!allowedStatuses.includes(response.status)) {
194
+ let errorPayload = null;
195
+ let rawText = '';
196
+ try {
197
+ rawText = await response.text();
198
+ errorPayload = rawText ? JSON.parse(rawText) : null;
199
+ }
200
+ catch {
201
+ errorPayload = rawText || null;
202
+ }
203
+ const message = typeof errorPayload === 'string' && errorPayload
204
+ ? errorPayload
205
+ : errorPayload?.error?.message || `Scheduler request failed with status ${response.status}`;
206
+ const error = new Error(message);
207
+ error.status = response.status;
208
+ error.code = errorPayload?.error?.code ?? response.status;
209
+ error.statusText = errorPayload?.error?.status;
210
+ error.details = errorPayload?.error;
211
+ throw error;
212
+ }
213
+ const text = await response.text();
214
+ if (!text) {
215
+ return undefined;
216
+ }
217
+ try {
218
+ return JSON.parse(text);
219
+ }
220
+ catch {
221
+ return text;
222
+ }
223
+ });
224
+ }
225
+ mapMutationJob(job) {
226
+ return {
227
+ status: job?.status,
228
+ state: job?.state,
229
+ name: job?.name,
230
+ httpTarget: job?.httpTarget,
231
+ pubsubTarget: job?.pubsubTarget,
232
+ };
233
+ }
234
+ mapRetrievedJob(job) {
235
+ if (!job) {
236
+ return null;
237
+ }
238
+ return {
239
+ state: job.state,
240
+ schedule: job.schedule,
241
+ timeZone: job.timeZone,
242
+ httpTarget: job.httpTarget,
243
+ pubsubTarget: job.pubsubTarget,
244
+ };
245
+ }
246
+ }
247
+ exports.default = SchedulerHelper;
@@ -0,0 +1,16 @@
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
+ const runtime_1 = __importDefault(require("./runtime"));
7
+ const utils_1 = require("./utils");
8
+ class Secrets extends runtime_1.default {
9
+ constructor(opts) {
10
+ super(opts);
11
+ }
12
+ async getSecret(name) {
13
+ return (0, utils_1.getSecret)(this, name, await (0, utils_1.getAccessToken)());
14
+ }
15
+ }
16
+ exports.default = Secrets;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = async ({ headerKey, headerValue, req }) => {
4
+ req.set(headerKey, headerValue);
5
+ let exposedHeaders = req.response.get("access-control-expose-headers");
6
+ if (exposedHeaders) {
7
+ exposedHeaders = exposedHeaders + ', ' + headerKey;
8
+ }
9
+ else {
10
+ exposedHeaders = headerKey;
11
+ }
12
+ req.set("access-control-expose-headers", exposedHeaders);
13
+ return {
14
+ [headerKey]: headerValue
15
+ };
16
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });