@sera4/essentia 1.1.65 → 1.1.66-rc.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 (245) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/configurations/index.html +116 -0
  4. package/coverage/configurations/server-config.ts.html +94 -0
  5. package/coverage/dns/DnsCache.ts.html +598 -0
  6. package/coverage/dns/index.html +131 -0
  7. package/coverage/dns/index.ts.html +94 -0
  8. package/coverage/favicon.png +0 -0
  9. package/coverage/health/index.html +116 -0
  10. package/coverage/health/index.ts.html +778 -0
  11. package/coverage/index.html +161 -0
  12. package/coverage/lcov-report/base.css +224 -0
  13. package/coverage/lcov-report/block-navigation.js +87 -0
  14. package/coverage/lcov-report/configurations/index.html +116 -0
  15. package/coverage/lcov-report/configurations/server-config.ts.html +94 -0
  16. package/coverage/lcov-report/dns/DnsCache.ts.html +598 -0
  17. package/coverage/lcov-report/dns/index.html +131 -0
  18. package/coverage/lcov-report/dns/index.ts.html +94 -0
  19. package/coverage/lcov-report/favicon.png +0 -0
  20. package/coverage/lcov-report/health/index.html +116 -0
  21. package/coverage/lcov-report/health/index.ts.html +778 -0
  22. package/coverage/lcov-report/index.html +161 -0
  23. package/coverage/lcov-report/logger/index.html +131 -0
  24. package/coverage/lcov-report/logger/index.ts.html +94 -0
  25. package/coverage/lcov-report/logger/s4-logger.ts.html +514 -0
  26. package/coverage/lcov-report/prettify.css +1 -0
  27. package/coverage/lcov-report/prettify.js +2 -0
  28. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  29. package/coverage/lcov-report/sorter.js +196 -0
  30. package/coverage/lcov.info +747 -0
  31. package/coverage/logger/index.html +131 -0
  32. package/coverage/logger/index.ts.html +94 -0
  33. package/coverage/logger/s4-logger.ts.html +514 -0
  34. package/coverage/prettify.css +1 -0
  35. package/coverage/prettify.js +2 -0
  36. package/coverage/sort-arrow-sprite.png +0 -0
  37. package/coverage/sorter.js +196 -0
  38. package/coverage/tmp/coverage-24302-1746472691313-0.json +1 -0
  39. package/coverage/tmp/coverage-24302-1746472691366-1.json +1 -0
  40. package/dist/cache/index.d.ts +22 -0
  41. package/dist/cache/index.js +166 -0
  42. package/dist/cache/index.js.map +1 -0
  43. package/dist/constants/index.d.ts +6 -0
  44. package/dist/constants/index.js +9 -0
  45. package/dist/constants/index.js.map +1 -0
  46. package/dist/coverage/block-navigation.d.ts +1 -0
  47. package/dist/coverage/block-navigation.js +70 -0
  48. package/dist/coverage/block-navigation.js.map +1 -0
  49. package/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
  50. package/dist/coverage/lcov-report/block-navigation.js +70 -0
  51. package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  52. package/dist/coverage/lcov-report/prettify.d.ts +0 -0
  53. package/dist/coverage/lcov-report/prettify.js +477 -0
  54. package/dist/coverage/lcov-report/prettify.js.map +1 -0
  55. package/dist/coverage/lcov-report/sorter.d.ts +1 -0
  56. package/dist/coverage/lcov-report/sorter.js +163 -0
  57. package/dist/coverage/lcov-report/sorter.js.map +1 -0
  58. package/dist/coverage/prettify.d.ts +0 -0
  59. package/dist/coverage/prettify.js +477 -0
  60. package/dist/coverage/prettify.js.map +1 -0
  61. package/dist/coverage/sorter.d.ts +1 -0
  62. package/dist/coverage/sorter.js +163 -0
  63. package/dist/coverage/sorter.js.map +1 -0
  64. package/dist/formatter/index.d.ts +37 -0
  65. package/dist/formatter/index.js +75 -0
  66. package/dist/formatter/index.js.map +1 -0
  67. package/dist/hal/index.d.ts +5 -0
  68. package/dist/hal/index.js +69 -0
  69. package/dist/hal/index.js.map +1 -0
  70. package/dist/health/health-logger.d.ts +9 -0
  71. package/dist/health/health-logger.js +34 -0
  72. package/dist/health/health-logger.js.map +1 -0
  73. package/dist/health/index.d.ts +19 -0
  74. package/dist/health/index.js +175 -0
  75. package/dist/health/index.js.map +1 -0
  76. package/dist/helpers/index.d.ts +1 -0
  77. package/dist/helpers/index.js +2 -0
  78. package/dist/helpers/index.js.map +1 -0
  79. package/dist/helpers/test-server-wrapper.d.ts +120 -0
  80. package/dist/helpers/test-server-wrapper.js +165 -0
  81. package/dist/helpers/test-server-wrapper.js.map +1 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.js +17 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/last-commit.d.ts +1 -0
  86. package/dist/last-commit.js +12 -0
  87. package/dist/last-commit.js.map +1 -0
  88. package/dist/last_commit/index.d.ts +7 -0
  89. package/dist/last_commit/index.js +83 -0
  90. package/dist/last_commit/index.js.map +1 -0
  91. package/dist/paginator/s4-pagination.d.ts +9 -0
  92. package/dist/paginator/s4-pagination.js +49 -0
  93. package/dist/paginator/s4-pagination.js.map +1 -0
  94. package/dist/paginator/sql-pagination.d.ts +27 -0
  95. package/dist/paginator/sql-pagination.js +166 -0
  96. package/dist/paginator/sql-pagination.js.map +1 -0
  97. package/dist/paper-trail/helpers.d.ts +11 -0
  98. package/dist/paper-trail/helpers.js +74 -0
  99. package/dist/paper-trail/helpers.js.map +1 -0
  100. package/dist/paper-trail/index.d.ts +13 -0
  101. package/dist/paper-trail/index.js +662 -0
  102. package/dist/paper-trail/index.js.map +1 -0
  103. package/dist/prompts/index.d.ts +14 -0
  104. package/dist/prompts/index.js +63 -0
  105. package/dist/prompts/index.js.map +1 -0
  106. package/dist/queue/index.d.ts +166 -0
  107. package/dist/queue/index.js +371 -0
  108. package/dist/queue/index.js.map +1 -0
  109. package/dist/queue/publisher.d.ts +31 -0
  110. package/dist/queue/publisher.js +84 -0
  111. package/dist/queue/publisher.js.map +1 -0
  112. package/dist/queue/queue-logger.d.ts +9 -0
  113. package/dist/queue/queue-logger.js +35 -0
  114. package/dist/queue/queue-logger.js.map +1 -0
  115. package/dist/queue/subscriber.d.ts +39 -0
  116. package/dist/queue/subscriber.js +97 -0
  117. package/dist/queue/subscriber.js.map +1 -0
  118. package/dist/safe_proxy/index.d.ts +13 -0
  119. package/dist/safe_proxy/index.js +54 -0
  120. package/dist/safe_proxy/index.js.map +1 -0
  121. package/dist/serializer/index.d.ts +5 -0
  122. package/dist/serializer/index.js +83 -0
  123. package/dist/serializer/index.js.map +1 -0
  124. package/dist/test/debug-array.d.ts +0 -0
  125. package/dist/test/debug-array.js +1 -0
  126. package/dist/test/debug-array.js.map +1 -0
  127. package/dist/test/debug-setJSONB.d.ts +0 -0
  128. package/dist/test/debug-setJSONB.js +1 -0
  129. package/dist/test/debug-setJSONB.js.map +1 -0
  130. package/dist/test/prompt.test.d.ts +1 -0
  131. package/dist/test/prompt.test.js +74 -0
  132. package/dist/test/prompt.test.js.map +1 -0
  133. package/dist/test/s4-formatter.spec.d.ts +1 -0
  134. package/dist/test/s4-formatter.spec.js +67 -0
  135. package/dist/test/s4-formatter.spec.js.map +1 -0
  136. package/dist/test/s4-pagination.spec.d.ts +1 -0
  137. package/dist/test/s4-pagination.spec.js +170 -0
  138. package/dist/test/s4-pagination.spec.js.map +1 -0
  139. package/dist/test/safe-proxy.spec.d.ts +1 -0
  140. package/dist/test/safe-proxy.spec.js +252 -0
  141. package/dist/test/safe-proxy.spec.js.map +1 -0
  142. package/dist/test/serializer.spec.d.ts +1 -0
  143. package/dist/test/serializer.spec.js +27 -0
  144. package/dist/test/serializer.spec.js.map +1 -0
  145. package/dist/test/utils.spec.d.ts +1 -0
  146. package/dist/test/utils.spec.js +446 -0
  147. package/dist/test/utils.spec.js.map +1 -0
  148. package/dist/ts/cache/index.d.ts +33 -0
  149. package/dist/ts/cache/index.js +171 -0
  150. package/dist/ts/cache/index.js.map +1 -0
  151. package/dist/ts/configurations/server-config.d.ts +4 -0
  152. package/dist/ts/configurations/server-config.js +2 -0
  153. package/dist/ts/configurations/server-config.js.map +1 -0
  154. package/dist/ts/constants/index.d.ts +7 -0
  155. package/dist/ts/constants/index.js +8 -0
  156. package/dist/ts/constants/index.js.map +1 -0
  157. package/dist/ts/cycle/index.d.ts +53 -0
  158. package/dist/ts/cycle/index.js +169 -0
  159. package/dist/ts/cycle/index.js.map +1 -0
  160. package/dist/ts/dns/DnsCache.d.ts +50 -0
  161. package/dist/ts/dns/DnsCache.js +137 -0
  162. package/dist/ts/dns/DnsCache.js.map +1 -0
  163. package/dist/ts/dns/index.d.ts +4 -0
  164. package/dist/ts/dns/index.js +4 -0
  165. package/dist/ts/dns/index.js.map +1 -0
  166. package/dist/ts/formatter/index.d.ts +44 -0
  167. package/dist/ts/formatter/index.js +76 -0
  168. package/dist/ts/formatter/index.js.map +1 -0
  169. package/dist/ts/hal/index.d.ts +26 -0
  170. package/dist/ts/hal/index.js +70 -0
  171. package/dist/ts/hal/index.js.map +1 -0
  172. package/dist/ts/health/index.d.ts +53 -0
  173. package/dist/ts/health/index.js +165 -0
  174. package/dist/ts/health/index.js.map +1 -0
  175. package/dist/ts/helpers/index.d.ts +1 -0
  176. package/dist/ts/helpers/index.js +2 -0
  177. package/dist/ts/helpers/index.js.map +1 -0
  178. package/dist/ts/helpers/test-server-wrapper.d.ts +56 -0
  179. package/dist/ts/helpers/test-server-wrapper.js +144 -0
  180. package/dist/ts/helpers/test-server-wrapper.js.map +1 -0
  181. package/dist/ts/index.d.ts +22 -0
  182. package/dist/ts/index.js +27 -0
  183. package/dist/ts/index.js.map +1 -0
  184. package/dist/ts/last-commit/index.d.ts +12 -0
  185. package/dist/ts/last-commit/index.js +82 -0
  186. package/dist/ts/last-commit/index.js.map +1 -0
  187. package/dist/ts/logger/index.d.ts +3 -0
  188. package/dist/ts/logger/index.js +4 -0
  189. package/dist/ts/logger/index.js.map +1 -0
  190. package/dist/ts/logger/s4-logger.d.ts +23 -0
  191. package/dist/ts/logger/s4-logger.js +105 -0
  192. package/dist/ts/logger/s4-logger.js.map +1 -0
  193. package/dist/ts/paginator/index.d.ts +2 -0
  194. package/dist/ts/paginator/index.js +3 -0
  195. package/dist/ts/paginator/index.js.map +1 -0
  196. package/dist/ts/paginator/s4-pagination.d.ts +26 -0
  197. package/dist/ts/paginator/s4-pagination.js +49 -0
  198. package/dist/ts/paginator/s4-pagination.js.map +1 -0
  199. package/dist/ts/paginator/sql-pagination.d.ts +52 -0
  200. package/dist/ts/paginator/sql-pagination.js +157 -0
  201. package/dist/ts/paginator/sql-pagination.js.map +1 -0
  202. package/dist/ts/paper-trail/helpers.d.ts +14 -0
  203. package/dist/ts/paper-trail/helpers.js +74 -0
  204. package/dist/ts/paper-trail/helpers.js.map +1 -0
  205. package/dist/ts/paper-trail/index.d.ts +54 -0
  206. package/dist/ts/paper-trail/index.js +236 -0
  207. package/dist/ts/paper-trail/index.js.map +1 -0
  208. package/dist/ts/prompts/index.d.ts +21 -0
  209. package/dist/ts/prompts/index.js +68 -0
  210. package/dist/ts/prompts/index.js.map +1 -0
  211. package/dist/ts/queue/index.d.ts +232 -0
  212. package/dist/ts/queue/index.js +440 -0
  213. package/dist/ts/queue/index.js.map +1 -0
  214. package/dist/ts/queue/publisher.d.ts +41 -0
  215. package/dist/ts/queue/publisher.js +84 -0
  216. package/dist/ts/queue/publisher.js.map +1 -0
  217. package/dist/ts/queue/queue-logger.d.ts +10 -0
  218. package/dist/ts/queue/queue-logger.js +35 -0
  219. package/dist/ts/queue/queue-logger.js.map +1 -0
  220. package/dist/ts/queue/subscriber.d.ts +55 -0
  221. package/dist/ts/queue/subscriber.js +98 -0
  222. package/dist/ts/queue/subscriber.js.map +1 -0
  223. package/dist/ts/safe-proxy/index.d.ts +35 -0
  224. package/dist/ts/safe-proxy/index.js +54 -0
  225. package/dist/ts/safe-proxy/index.js.map +1 -0
  226. package/dist/ts/serializer/index.d.ts +52 -0
  227. package/dist/ts/serializer/index.js +83 -0
  228. package/dist/ts/serializer/index.js.map +1 -0
  229. package/dist/ts/task-scheduler/index.d.ts +130 -0
  230. package/dist/ts/task-scheduler/index.js +259 -0
  231. package/dist/ts/task-scheduler/index.js.map +1 -0
  232. package/dist/ts/utils/index.d.ts +49 -0
  233. package/dist/ts/utils/index.js +157 -0
  234. package/dist/ts/utils/index.js.map +1 -0
  235. package/package.json +10 -8
  236. package/paper-trail/index.js +2 -1
  237. package/queue/index.js +57 -69
  238. package/scripts/publish.sh +46 -0
  239. package/test/health.spec.js +213 -0
  240. package/test/prompt.test.js +91 -0
  241. package/test/s4-formatter.spec.js +80 -0
  242. package/test/s4-pagination.spec.js +196 -0
  243. package/test/serializer.spec.js +34 -0
  244. package/test/utils.spec.js +145 -0
  245. package/package.tar.gz +0 -0
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ import pathHelper from "path";
3
+ import logger from "./health-logger.js";
4
+ import morgan from "morgan";
5
+ class HealthCheckError extends Error {
6
+ }
7
+ /* Health Checking router + controller for use in all of our modules
8
+ * Example use: Place the following code in your routes file
9
+ *
10
+ * import { healthCheck } from "@sera4/essentia";
11
+ * const router = require('express').Router();
12
+ *
13
+ * ....
14
+ *
15
+ * const checkRedis = async () => { await cache.ping(); }
16
+ * hc.setupCheck({ name: "redis", checkResult: false, critical: true, healthFunction: checkRedis });
17
+ * app.use(hc.defaultPath(serverConfigs.api_prefix), hc.routes(router));
18
+ *
19
+ */
20
+ class HealthCheck {
21
+ constructor(appendData = {}, enableLogging = true) {
22
+ logger.setEnabled(enableLogging);
23
+ this.defaultResponse = {
24
+ ...appendData,
25
+ status: 200,
26
+ errors: {}
27
+ };
28
+ this.defaultPathRoute = `health_check\(.*\)?`;
29
+ this.suppressLogs = false;
30
+ this.lastCallId = 0; // default start point/integer
31
+ this.pathPrefix = "";
32
+ this.healthChecks = [];
33
+ }
34
+ /* Deprecated and replaced by setupCheck
35
+ * call this with an async function, must support wait capability
36
+ *
37
+ * const dbCheck = async () => {
38
+ * return { name: "db", "result": "success", critical: false };
39
+ * }
40
+ */
41
+ addCheck(fcn) {
42
+ this.healthChecks.push(fcn);
43
+ }
44
+ setPrefix(prefix) {
45
+ this.pathPrefix = prefix;
46
+ }
47
+ defaultPath(prefix = "") {
48
+ if (prefix === "") {
49
+ prefix = this.pathPrefix; // maybe setup manually
50
+ }
51
+ return `${prefix}/${this.defaultPathRoute}`;
52
+ }
53
+ routes(router) {
54
+ if (!router) {
55
+ throw new HealthCheckError("missing_express_router");
56
+ }
57
+ /* definition of all routes, rooted at defaultPath */
58
+ router.get('/', (req, res) => {
59
+ this.checkHealth(req, res);
60
+ });
61
+ return router;
62
+ }
63
+ suppressHealthCheckLog(app) {
64
+ // Custom morgan skip function to ignore health check logging
65
+ console.log("skip: ", this.defaultPath());
66
+ app.use(morgan('combined', {
67
+ skip: (req) => req.path === defaultPath()
68
+ }));
69
+ }
70
+ // v2 version of health check, replaced addCheck
71
+ // example:
72
+ // const checkRedisFcn = async () => { await cache.ping().then(() => true) }
73
+ // setupCheck({ name: "redis", checkResult: false, critical: false, healthFunction: checkRedisFcn });
74
+ setupCheck(config) {
75
+ this.healthChecks.push(config);
76
+ }
77
+ /* performs health checks and returns 200 if true and 500 if not */
78
+ async checkHealth(req, res) {
79
+ const checkFormat = pathHelper.extname(req.baseUrl);
80
+ const result = await Promise.all(this.healthChecks.map(async (hc) => {
81
+ if (typeof (hc) === "function") {
82
+ try {
83
+ return await hc();
84
+ }
85
+ catch (e) {
86
+ return { name: "unknown", result: 'fail', status: e.status };
87
+ }
88
+ }
89
+ else {
90
+ let res = { name: hc.name, critical: hc.critical };
91
+ try {
92
+ const result = await hc.healthFunction();
93
+ if (typeof (result) === "boolean") {
94
+ if (result === false) {
95
+ res = { "result": "fail", ...res };
96
+ }
97
+ else {
98
+ res = { "result": "success", ...res };
99
+ }
100
+ }
101
+ else {
102
+ res = { "result": "success", ...res };
103
+ }
104
+ return res;
105
+ }
106
+ catch (e) {
107
+ const appendStatus = e.status ? ` (${e.status})` : "";
108
+ logger.warn(`${hc.name} service failed${appendStatus}`);
109
+ return { ...res, "result": "fail", status: e.status };
110
+ }
111
+ }
112
+ }));
113
+ try {
114
+ let callId = ++this.lastCallId;
115
+ // start the counter over
116
+ if ((callId % (1 << 30)) === 0) {
117
+ callId = this.lastCallId = 1;
118
+ }
119
+ let status = this.defaultResponse.status;
120
+ let nonCriticalFail = false;
121
+ let criticalFail = false;
122
+ result.some(e => {
123
+ if (e.result.match(/fail/)) {
124
+ if (e.critical === false) {
125
+ nonCriticalFail = true;
126
+ }
127
+ else {
128
+ criticalFail = true;
129
+ status = 500;
130
+ return true; // break
131
+ }
132
+ }
133
+ });
134
+ // set this in the header no matter what
135
+ res.setHeader('check', callId);
136
+ if (checkFormat === ".json") {
137
+ const payload = { "check": callId, healthy: "true", message: "success" };
138
+ if (criticalFail) {
139
+ res.status(status).json({
140
+ ...payload,
141
+ "healthy": false,
142
+ "message": "fail",
143
+ "services": result
144
+ });
145
+ }
146
+ else if (nonCriticalFail) {
147
+ res.status(status).json({
148
+ ...payload,
149
+ "message": "fail",
150
+ "services": result
151
+ });
152
+ }
153
+ else if (status === 200) {
154
+ res.status(status).json(payload);
155
+ }
156
+ }
157
+ else {
158
+ let status_message;
159
+ if (criticalFail) {
160
+ status_message = "fail";
161
+ }
162
+ else if ((status === 200) || nonCriticalFail) {
163
+ status_message = "success";
164
+ }
165
+ res.status(status).send(status_message);
166
+ }
167
+ }
168
+ catch (error) {
169
+ console.warn("error: ", error);
170
+ res.status(500).send();
171
+ }
172
+ }
173
+ }
174
+ export { HealthCheck };
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../health/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./test-server-wrapper.js";
@@ -0,0 +1,2 @@
1
+ export * from "./test-server-wrapper.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../helpers/index.js"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * A small wrapper around an express js server
3
+ * meant to be used in unit tests
4
+ */
5
+ export class TestServerWrapper {
6
+ constructor(apiPrefix: any, expressServer: any, defaultHeaders: any, oldAuthToken: any, routePrinter: any, chai: any, factory: any);
7
+ server: any;
8
+ defaultHeaders: any;
9
+ apiPrefix: any;
10
+ routePrinter: any;
11
+ chai: any;
12
+ mobileDomain: string;
13
+ webDomain: string;
14
+ factory: any;
15
+ v1: {
16
+ get: (url: any) => any;
17
+ post: (url: any) => any;
18
+ put: (url: any) => any;
19
+ delete: (url: any) => any;
20
+ };
21
+ /**
22
+ * Adds a leading slash to the url if missing
23
+ * @param {String} url the url to sanitize
24
+ * @returns sanitized url
25
+ */
26
+ sanitizeUrl(url: string): string;
27
+ /**
28
+ * Apply given headers to the request object
29
+ * @param {Object} request
30
+ * @param {Object} headers
31
+ */
32
+ applyHeaders(request: any, headers: any): void;
33
+ get(url: any, options: any): any;
34
+ getWithPrefix(prefix: any, url: any, options: any): any;
35
+ post(url: any, options: any): any;
36
+ postWithPrefix(prefix: any, url: any, options: any): any;
37
+ put(url: any, options: any): any;
38
+ putWithPrefix(prefix: any, url: any, options: any): any;
39
+ delete(url: any, options: any): any;
40
+ deleteWithPrefix(prefix: any, url: any, options: any): any;
41
+ upload(url: any, fields: any, file: any, options: any): any;
42
+ uploadWithPrefix(prefix: any, url: any, fields: any, file: any, options: any): any;
43
+ stop(): void;
44
+ allRoutes(): any;
45
+ withHeaders(headers: any): {
46
+ get: (url: any, options: any) => any;
47
+ post: (url: any, options: any) => any;
48
+ put: (url: any, options: any) => any;
49
+ delete: (url: any, options: any) => any;
50
+ upload: (url: any, fields: any, file: any, options: any) => any;
51
+ stop: () => void;
52
+ allRoutes: () => any;
53
+ v1: {
54
+ get: (url: any) => any;
55
+ post: (url: any) => any;
56
+ put: (url: any) => any;
57
+ delete: (url: any) => any;
58
+ };
59
+ };
60
+ setMembership(membership: any, addlHeaders: any): Promise<{
61
+ get: (url: any, options: any) => any;
62
+ post: (url: any, options: any) => any;
63
+ put: (url: any, options: any) => any;
64
+ delete: (url: any, options: any) => any;
65
+ upload: (url: any, fields: any, file: any, options: any) => any;
66
+ stop: () => void;
67
+ allRoutes: () => any;
68
+ v1: {
69
+ get: (url: any) => any;
70
+ post: (url: any) => any;
71
+ put: (url: any) => any;
72
+ delete: (url: any) => any;
73
+ };
74
+ }>;
75
+ withMembership(m: any): {
76
+ get: (url: any, options: any) => any;
77
+ post: (url: any, options: any) => any;
78
+ put: (url: any, options: any) => any;
79
+ delete: (url: any, options: any) => any;
80
+ upload: (url: any, fields: any, file: any, options: any) => any;
81
+ stop: () => void;
82
+ allRoutes: () => any;
83
+ v1: {
84
+ get: (url: any) => any;
85
+ post: (url: any) => any;
86
+ put: (url: any) => any;
87
+ delete: (url: any) => any;
88
+ };
89
+ };
90
+ withS4(): {
91
+ get: (url: any, options: any) => any;
92
+ post: (url: any, options: any) => any;
93
+ put: (url: any, options: any) => any;
94
+ delete: (url: any, options: any) => any;
95
+ upload: (url: any, fields: any, file: any, options: any) => any;
96
+ stop: () => void;
97
+ allRoutes: () => any;
98
+ v1: {
99
+ get: (url: any) => any;
100
+ post: (url: any) => any;
101
+ put: (url: any) => any;
102
+ delete: (url: any) => any;
103
+ };
104
+ };
105
+ withTap(): {
106
+ get: (url: any, options: any) => any;
107
+ post: (url: any, options: any) => any;
108
+ put: (url: any, options: any) => any;
109
+ delete: (url: any, options: any) => any;
110
+ upload: (url: any, fields: any, file: any, options: any) => any;
111
+ stop: () => void;
112
+ allRoutes: () => any;
113
+ v1: {
114
+ get: (url: any) => any;
115
+ post: (url: any) => any;
116
+ put: (url: any) => any;
117
+ delete: (url: any) => any;
118
+ };
119
+ };
120
+ }
@@ -0,0 +1,165 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import fs from "fs";
3
+ const s4Domain = "sera4.com";
4
+ const mobileDomain = "tws-mob." + s4Domain;
5
+ const webDomain = "tws-web." + s4Domain;
6
+ /**
7
+ * A small wrapper around an express js server
8
+ * meant to be used in unit tests
9
+ */
10
+ export class TestServerWrapper {
11
+ constructor(apiPrefix, expressServer, defaultHeaders, oldAuthToken, routePrinter, chai, factory) {
12
+ this.server = expressServer;
13
+ this.defaultHeaders = defaultHeaders;
14
+ this.apiPrefix = apiPrefix;
15
+ this.routePrinter = routePrinter;
16
+ this.chai = chai;
17
+ this.mobileDomain = mobileDomain;
18
+ this.webDomain = webDomain;
19
+ this.factory = factory;
20
+ // Support for older/deprecated apis
21
+ const oldAuthHeaders = { headers: { "Authorization": `Token organization_token=${oldAuthToken}` } };
22
+ this.v1 = {
23
+ get: (url) => this.getWithPrefix("/v1", url, oldAuthHeaders),
24
+ post: (url) => this.postWithPrefix("/v1", url, oldAuthHeaders),
25
+ put: (url) => this.putWithPrefix("/v1", url, oldAuthHeaders),
26
+ delete: (url) => this.deleteWithPrefix("/v1", url, oldAuthHeaders)
27
+ };
28
+ }
29
+ /**
30
+ * Adds a leading slash to the url if missing
31
+ * @param {String} url the url to sanitize
32
+ * @returns sanitized url
33
+ */
34
+ sanitizeUrl(url) {
35
+ // add leading slash if missing
36
+ if (!url.startsWith("/")) {
37
+ return "/" + url;
38
+ }
39
+ else {
40
+ return url;
41
+ }
42
+ }
43
+ /**
44
+ * Apply given headers to the request object
45
+ * @param {Object} request
46
+ * @param {Object} headers
47
+ */
48
+ applyHeaders(request, headers) {
49
+ Object.keys(headers).map(k => {
50
+ request.set(k, headers[k]);
51
+ });
52
+ }
53
+ get(url, options) {
54
+ return this.getWithPrefix(this.apiPrefix, url, options);
55
+ }
56
+ getWithPrefix(prefix, url, options) {
57
+ const sanitizedUrl = this.sanitizeUrl(url);
58
+ const request = this.chai.request(this.server).get(`${prefix}${sanitizedUrl}`);
59
+ this.applyHeaders(request, this.defaultHeaders);
60
+ if (options?.headers) {
61
+ this.applyHeaders(request, options.headers);
62
+ }
63
+ if (options?.body) {
64
+ request.send(options.body);
65
+ }
66
+ return request;
67
+ }
68
+ post(url, options) {
69
+ return this.postWithPrefix(this.apiPrefix, url, options);
70
+ }
71
+ postWithPrefix(prefix, url, options) {
72
+ const sanitizedUrl = this.sanitizeUrl(url);
73
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
74
+ this.applyHeaders(request, this.defaultHeaders);
75
+ if (options?.headers) {
76
+ this.applyHeaders(request, options.headers);
77
+ }
78
+ return request;
79
+ }
80
+ put(url, options) {
81
+ return this.putWithPrefix(this.apiPrefix, url, options);
82
+ }
83
+ putWithPrefix(prefix, url, options) {
84
+ const sanitizedUrl = this.sanitizeUrl(url);
85
+ const request = this.chai.request(this.server).put(`${prefix}${sanitizedUrl}`);
86
+ this.applyHeaders(request, this.defaultHeaders);
87
+ if (options?.headers) {
88
+ this.applyHeaders(request, options.headers);
89
+ }
90
+ return request;
91
+ }
92
+ delete(url, options) {
93
+ return this.deleteWithPrefix(this.apiPrefix, url, options);
94
+ }
95
+ deleteWithPrefix(prefix, url, options) {
96
+ const sanitizedUrl = this.sanitizeUrl(url);
97
+ const request = this.chai.request(this.server).delete(`${prefix}${sanitizedUrl}`);
98
+ this.applyHeaders(request, this.defaultHeaders);
99
+ if (options?.headers) {
100
+ this.applyHeaders(request, options.headers);
101
+ }
102
+ return request;
103
+ }
104
+ upload(url, fields, file, options) {
105
+ return this.uploadWithPrefix(this.apiPrefix, url, fields, file, options);
106
+ }
107
+ uploadWithPrefix(prefix, url, fields, file, options) {
108
+ const sanitizedUrl = this.sanitizeUrl(url);
109
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
110
+ this.applyHeaders(request, this.defaultHeaders);
111
+ if (options?.headers) {
112
+ this.applyHeaders(request, options.headers);
113
+ }
114
+ request.attach("data", fs.readFileSync(file), { filename: "data" });
115
+ const keys = Object.keys(fields);
116
+ keys.forEach(k => {
117
+ request.field(k, fields[k]);
118
+ });
119
+ return request;
120
+ }
121
+ stop() {
122
+ this.server.close();
123
+ }
124
+ allRoutes() {
125
+ return this.routePrinter.getAll();
126
+ }
127
+ withHeaders(headers) {
128
+ return {
129
+ get: (url, options) => this.get(url, { headers, ...options }),
130
+ post: (url, options) => this.post(url, { headers, ...options }),
131
+ put: (url, options) => this.put(url, { headers, ...options }),
132
+ delete: (url, options) => this.delete(url, { headers, ...options }),
133
+ upload: (url, fields, file, options) => this.upload(url, fields, file, { headers, ...options }),
134
+ stop: this.stop,
135
+ allRoutes: this.allRoutes,
136
+ v1: this.v1
137
+ };
138
+ }
139
+ // setup
140
+ async setMembership(membership, addlHeaders) {
141
+ let headers;
142
+ if (membership) {
143
+ headers = { "tws-account-id": membership.account_id, "tws-membership-id": membership.id, "tws-tenant-id": membership.tenant_id };
144
+ }
145
+ else {
146
+ // auto create an s4 user
147
+ const m = await this.factory.create("membership", { s4Admin: true });
148
+ headers = { "tws-account-id": m.account_id, "tws-membership-id": m.id, "tws-tenant-id": m.tenant_id };
149
+ }
150
+ headers = { ...headers, "tws-request-host": this.webDomain, ...addlHeaders };
151
+ return this.withHeaders(headers);
152
+ }
153
+ ;
154
+ withMembership(m) {
155
+ const h = { "tws-membership": JSON.stringify(m) };
156
+ return this.withHeaders(h);
157
+ }
158
+ withS4() {
159
+ return this.withMembership({ s4_role: 1, id: uuidv4(), account_id: uuidv4(), tenant_id: uuidv4() });
160
+ }
161
+ withTap() {
162
+ return this.withMembership({ s4_role: 2, id: uuidv4(), account_id: uuidv4(), tenant_id: uuidv4() });
163
+ }
164
+ }
165
+ //# sourceMappingURL=test-server-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-server-wrapper.js","sourceRoot":"","sources":["../../helpers/test-server-wrapper.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+ export * from "./constants/index.js";
3
+ export { default as paginator } from "./paginator/s4-pagination.js";
4
+ export { default as sqlPaginator } from "./paginator/sql-pagination.js";
5
+ export { default as logger } from "./logger/s4-logger.js";
6
+ export { default as lastCommit } from "./last_commit/index.js";
7
+ export { default as halDecorator } from "./hal/index.js";
8
+ export { default as formatter } from "./formatter/index.js";
9
+ export { HealthCheck as healthCheck } from "./health/index.js";
10
+ export { default as queue } from "./queue/index.js";
11
+ export { default as paperTrail } from "./paper-trail/index.js";
12
+ export { default as serializer } from "./serializer/index.js";
13
+ export * from "./utils/index.js";
14
+ export * from "./safe_proxy/index.js";
15
+ export * from "./helpers/index.js";
16
+ export * from "./prompts/index.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ import lastCommit from "./last_commit/index.js";
3
+ lastCommit.writeLastCommit()
4
+ .then(c => {
5
+ console.debug("Last commit written");
6
+ console.debug(c);
7
+ })
8
+ .catch(e => {
9
+ console.error("Failed to write last commit");
10
+ console.error(e);
11
+ });
12
+ //# sourceMappingURL=last-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"last-commit.js","sourceRoot":"","sources":["../last-commit.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAE/C,UAAU,CAAC,eAAe,EAAE;KAC3B,IAAI,CAAC,CAAC,CAAC,EAAE;IACR,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,CAAC,EAAE;IACT,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export default lastCommit;
2
+ declare namespace lastCommit {
3
+ function parseLastCommit(): Promise<any>;
4
+ function getLastCommit(): Promise<any>;
5
+ function getLastCommitSync(): any;
6
+ function writeLastCommit(): Promise<any>;
7
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ import git from "git-rev";
3
+ import fs from "fs";
4
+ import async from "async";
5
+ import { dirname } from 'path';
6
+ import { fileURLToPath } from 'url';
7
+ const appDir = dirname(fileURLToPath(import.meta.url));
8
+ const commitFile = `${appDir}/last-commit.json`;
9
+ const lastCommit = {
10
+ parseLastCommit() {
11
+ return new Promise((resolve, reject) => {
12
+ async.waterfall([
13
+ (next) => {
14
+ var commit = {};
15
+ git.branch((str) => {
16
+ commit["branch"] = str;
17
+ next(null, commit);
18
+ });
19
+ },
20
+ (commit, next) => {
21
+ git.long((str) => {
22
+ commit["commmit"] = str;
23
+ next(null, commit);
24
+ });
25
+ }
26
+ ], (err, commit) => {
27
+ if (err) {
28
+ reject(err);
29
+ }
30
+ else {
31
+ resolve(commit);
32
+ }
33
+ });
34
+ });
35
+ },
36
+ getLastCommit() {
37
+ return new Promise((resolve, reject) => {
38
+ fs.readFile(commitFile, 'utf8', (err, data) => {
39
+ if (err) {
40
+ reject(err);
41
+ }
42
+ else {
43
+ try {
44
+ var commit = JSON.parse(data);
45
+ resolve(commit);
46
+ }
47
+ catch (e) {
48
+ reject(e);
49
+ }
50
+ }
51
+ });
52
+ });
53
+ },
54
+ getLastCommitSync() {
55
+ var data = fs.readFileSync(commitFile, 'utf8');
56
+ return JSON.parse(data);
57
+ },
58
+ writeLastCommit() {
59
+ return new Promise((resolve, reject) => {
60
+ async.waterfall([
61
+ (next) => {
62
+ this.parseLastCommit()
63
+ .then((commit) => next(null, commit))
64
+ .catch(e => next(e));
65
+ },
66
+ (commit, next) => {
67
+ fs.writeFile(commitFile, JSON.stringify(commit, null, 2), 'utf8', (err) => {
68
+ next(err, commit);
69
+ });
70
+ }
71
+ ], (err, commit) => {
72
+ if (err) {
73
+ reject(err);
74
+ }
75
+ else {
76
+ resolve(commit);
77
+ }
78
+ });
79
+ });
80
+ }
81
+ };
82
+ export default lastCommit;
83
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../last_commit/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export default paginator;
2
+ declare const paginator: S4Pagination;
3
+ declare class S4Pagination {
4
+ createPaginator(req: any, res: any, next: any): {
5
+ page: any;
6
+ page_size: any;
7
+ reply: (data: any) => void;
8
+ };
9
+ }