@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,67 @@
1
+ import should from "should";
2
+ import { expect as expect } from "chai";
3
+ import S4Formatter from "../ts/formatter/index.js";
4
+ describe("Formatter", function () {
5
+ let response;
6
+ describe("Sending legacy format []", function () {
7
+ before("Setup", function () {
8
+ const error = { status: 200, error: ["error1"] };
9
+ response = S4Formatter.formatError(error);
10
+ });
11
+ describe("Default values", function () {
12
+ it("should have a generic error", function () {
13
+ response.should.have.property("errors");
14
+ });
15
+ it("should have error code set correctly", function () {
16
+ response.should.have.property("status", 200);
17
+ });
18
+ });
19
+ });
20
+ describe("Support null error payloads", function () {
21
+ before("Setup", function () {
22
+ response = S4Formatter.formatError(null);
23
+ });
24
+ describe("Default values", function () {
25
+ it("Should have a default error level and blank errors", function () {
26
+ expect(response).to.have.property("status", 422);
27
+ expect(response).to.have.property("errors").to.be.empty;
28
+ });
29
+ });
30
+ });
31
+ describe("Should not fold in funky keys/values", function () {
32
+ before("Setup", function () {
33
+ response = S4Formatter.formatError({ randomKey: 123 });
34
+ });
35
+ describe("Default values", function () {
36
+ it("Should not funky key name folded in", function () {
37
+ response.should.not.have.property("randomKey", {});
38
+ });
39
+ });
40
+ });
41
+ describe("Support validator formats", function () {
42
+ before("Setup", function () {
43
+ let error = {
44
+ "status": 422,
45
+ "errors": {
46
+ "password": {
47
+ "location": "body",
48
+ "param": "password",
49
+ "value": "badPassw0rd",
50
+ "msg": "weak"
51
+ }
52
+ }
53
+ };
54
+ response = S4Formatter.formatError(error);
55
+ });
56
+ describe("Default values", function () {
57
+ it("Should have a default error level and blank errors", function () {
58
+ response.should.have.property("status", 422);
59
+ expect(response).to.be.an("object");
60
+ expect(response).to.have.property('errors');
61
+ expect(Object.keys(response['errors'])).to.have.lengthOf('1');
62
+ response.should.have.property("errors");
63
+ });
64
+ });
65
+ });
66
+ });
67
+ //# sourceMappingURL=s4-formatter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s4-formatter.spec.js","sourceRoot":"","sources":["../../test/s4-formatter.spec.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,170 @@
1
+ import should from "should";
2
+ import S4Pagination from "../ts/paginator/s4-pagination.js";
3
+ import http_mocks from "node-mocks-http";
4
+ import events from "events";
5
+ describe("Pagination", function () {
6
+ var paginator = null;
7
+ var request = null;
8
+ var response = null;
9
+ var next = null;
10
+ before("Setup", function () {
11
+ next = function () { };
12
+ response = http_mocks.createResponse({ eventEmitter: events.EventEmitter });
13
+ request = http_mocks.createRequest({
14
+ method: "GET",
15
+ url: "/"
16
+ });
17
+ paginator = S4Pagination.createPaginator(request, response, next);
18
+ });
19
+ describe("Parsing query parameters", function () {
20
+ describe("Default values", function () {
21
+ it("should have default page set to 1", function () {
22
+ paginator.should.have.property("page", 1);
23
+ });
24
+ it("should have default page size set to 5", function () {
25
+ paginator.should.have.property("page_size", 5);
26
+ });
27
+ });
28
+ describe("Page value set to 0", function () {
29
+ before("Setup", function () {
30
+ request = http_mocks.createRequest({
31
+ method: "GET",
32
+ url: "/?page=0"
33
+ });
34
+ paginator = S4Pagination.createPaginator(request, response, next);
35
+ });
36
+ it("should set page to 1", function () {
37
+ paginator.should.have.property("page", 1);
38
+ });
39
+ });
40
+ describe("Page value set to negative", function () {
41
+ before("Setup", function () {
42
+ request = http_mocks.createRequest({
43
+ method: "GET",
44
+ url: "/?page=-1"
45
+ });
46
+ paginator = S4Pagination.createPaginator(request, response, next);
47
+ });
48
+ it("should set page to 1", function () {
49
+ paginator.should.have.property("page", 1);
50
+ });
51
+ });
52
+ describe("Page value set to 2", function () {
53
+ before("Setup", function () {
54
+ request = http_mocks.createRequest({
55
+ method: "GET",
56
+ url: "/?page=2"
57
+ });
58
+ paginator = S4Pagination.createPaginator(request, response, next);
59
+ });
60
+ it("should set page to 2", function () {
61
+ paginator.should.have.property("page", 2);
62
+ });
63
+ });
64
+ describe("Page value set to 10", function () {
65
+ before("Setup", function () {
66
+ request = http_mocks.createRequest({
67
+ method: "GET",
68
+ url: "/?page=10"
69
+ });
70
+ paginator = S4Pagination.createPaginator(request, response, next);
71
+ });
72
+ it("should set page to 10", function () {
73
+ paginator.should.have.property("page", 10);
74
+ });
75
+ });
76
+ describe("Page value set to 100", function () {
77
+ before("Setup", function () {
78
+ request = http_mocks.createRequest({
79
+ method: "GET",
80
+ url: "/?page=100"
81
+ });
82
+ paginator = S4Pagination.createPaginator(request, response, next);
83
+ });
84
+ it("should set page to 100", function () {
85
+ paginator.should.have.property("page", 100);
86
+ });
87
+ });
88
+ describe("Page Size value set to 0", function () {
89
+ before("Setup", function () {
90
+ request = http_mocks.createRequest({
91
+ method: "GET",
92
+ url: "/?page_size=0"
93
+ });
94
+ paginator = S4Pagination.createPaginator(request, response, next);
95
+ });
96
+ it("should set page size to 5", function () {
97
+ paginator.should.have.property("page_size", 5);
98
+ });
99
+ });
100
+ describe("Page Size value set to negative", function () {
101
+ before("Setup", function () {
102
+ request = http_mocks.createRequest({
103
+ method: "GET",
104
+ url: "/?page_size=-1"
105
+ });
106
+ paginator = S4Pagination.createPaginator(request, response, next);
107
+ });
108
+ it("should set page size to 5", function () {
109
+ paginator.should.have.property("page_size", 5);
110
+ });
111
+ });
112
+ describe("Page Size value set to 2", function () {
113
+ before("Setup", function () {
114
+ request = http_mocks.createRequest({
115
+ method: "GET",
116
+ url: "/?page_size=2"
117
+ });
118
+ paginator = S4Pagination.createPaginator(request, response, next);
119
+ });
120
+ it("should set page size to 5", function () {
121
+ paginator.should.have.property("page_size", 5);
122
+ });
123
+ });
124
+ describe("Page Size value set to 10", function () {
125
+ before("Setup", function () {
126
+ request = http_mocks.createRequest({
127
+ method: "GET",
128
+ url: "/?page_size=10"
129
+ });
130
+ paginator = S4Pagination.createPaginator(request, response, next);
131
+ });
132
+ it("should set page size to 10", function () {
133
+ paginator.should.have.property("page_size", 10);
134
+ });
135
+ });
136
+ describe("Page Size value set to 100", function () {
137
+ before("Setup", function () {
138
+ request = http_mocks.createRequest({
139
+ method: "GET",
140
+ url: "/?page_size=100"
141
+ });
142
+ paginator = S4Pagination.createPaginator(request, response, next);
143
+ });
144
+ it("should set page size to 100", function () {
145
+ paginator.should.have.property("page_size", 100);
146
+ });
147
+ });
148
+ });
149
+ describe("Replying", function () {
150
+ beforeEach("Clear request", function () {
151
+ response = http_mocks.createResponse({ eventEmitter: events.EventEmitter });
152
+ paginator = S4Pagination.createPaginator(request, response, next);
153
+ });
154
+ it("should return 500 if data is null", function () {
155
+ paginator.reply(null);
156
+ response.statusCode.should.equal(500);
157
+ });
158
+ it("should return pagination data", function () {
159
+ const items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
160
+ const data = {
161
+ docs: items,
162
+ total: items.length,
163
+ };
164
+ paginator.reply(data);
165
+ response.statusCode.should.equal(200);
166
+ response._getHeaders().should.have.property("s4-pagination");
167
+ });
168
+ });
169
+ });
170
+ //# sourceMappingURL=s4-pagination.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s4-pagination.spec.js","sourceRoot":"","sources":["../../test/s4-pagination.spec.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,252 @@
1
+ import { expect } from "chai";
2
+ import sinon from "sinon";
3
+ import axios from "axios";
4
+ import { safeProxy } from "../ts/safe-proxy/index.js";
5
+ describe("SafeProxy", () => {
6
+ let axiosStub;
7
+ beforeEach(() => {
8
+ // Stub axios methods
9
+ axiosStub = {
10
+ post: sinon.stub(axios, 'post'),
11
+ delete: sinon.stub(axios, 'delete'),
12
+ get: sinon.stub(axios, 'get')
13
+ };
14
+ });
15
+ afterEach(() => {
16
+ sinon.restore();
17
+ });
18
+ describe("post", () => {
19
+ it("should make a POST request with proper headers", async () => {
20
+ const locals = {
21
+ account: { id: "acc123" },
22
+ tenant: { id: "tenant456" },
23
+ membership: { id: "mem789" }
24
+ };
25
+ const url = "https://api.example.com/test";
26
+ const options = {
27
+ headers: { "custom-header": "value" },
28
+ data: { test: "data" }
29
+ };
30
+ const expectedResponse = { data: "success" };
31
+ axiosStub.post.resolves(expectedResponse);
32
+ const result = await safeProxy.post(locals, url, options);
33
+ expect(axiosStub.post.calledOnce).to.be.true;
34
+ expect(axiosStub.post.firstCall.args[0]).to.equal(url);
35
+ expect(axiosStub.post.firstCall.args[1]).to.deep.equal({ test: "data" });
36
+ expect(axiosStub.post.firstCall.args[2].headers).to.include({
37
+ "tws-account-id": "acc123",
38
+ "tws-tenant-id": "tenant456",
39
+ "tws-membership-id": "mem789",
40
+ "tws-membership": JSON.stringify(locals.membership),
41
+ "custom-header": "value"
42
+ });
43
+ expect(result).to.equal(expectedResponse);
44
+ });
45
+ it("should handle missing optional fields in locals", async () => {
46
+ const locals = {
47
+ account: { id: "acc123" }
48
+ // Missing tenant and membership
49
+ };
50
+ const url = "https://api.example.com/test";
51
+ const expectedResponse = { data: "success" };
52
+ axiosStub.post.resolves(expectedResponse);
53
+ const result = await safeProxy.post(locals, url);
54
+ expect(axiosStub.post.calledOnce).to.be.true;
55
+ expect(axiosStub.post.firstCall.args[2].headers).to.include({
56
+ "tws-account-id": "acc123"
57
+ });
58
+ expect(axiosStub.post.firstCall.args[2].headers).to.not.have.property("tws-tenant-id");
59
+ expect(axiosStub.post.firstCall.args[2].headers).to.not.have.property("tws-membership-id");
60
+ expect(axiosStub.post.firstCall.args[2].headers).to.not.have.property("tws-membership");
61
+ expect(result).to.equal(expectedResponse);
62
+ });
63
+ it("should handle null membership", async () => {
64
+ const locals = {
65
+ account: { id: "acc123" },
66
+ tenant: { id: "tenant456" },
67
+ membership: null
68
+ };
69
+ const url = "https://api.example.com/test";
70
+ const expectedResponse = { data: "success" };
71
+ axiosStub.post.resolves(expectedResponse);
72
+ const result = await safeProxy.post(locals, url);
73
+ expect(axiosStub.post.calledOnce).to.be.true;
74
+ expect(axiosStub.post.firstCall.args[2].headers).to.include({
75
+ "tws-account-id": "acc123",
76
+ "tws-tenant-id": "tenant456"
77
+ });
78
+ expect(axiosStub.post.firstCall.args[2].headers).to.not.have.property("tws-membership-id");
79
+ expect(axiosStub.post.firstCall.args[2].headers).to.not.have.property("tws-membership");
80
+ expect(result).to.equal(expectedResponse);
81
+ });
82
+ it("should use default options when none provided", async () => {
83
+ const locals = {
84
+ account: { id: "acc123" }
85
+ };
86
+ const url = "https://api.example.com/test";
87
+ const expectedResponse = { data: "success" };
88
+ axiosStub.post.resolves(expectedResponse);
89
+ const result = await safeProxy.post(locals, url);
90
+ expect(axiosStub.post.calledOnce).to.be.true;
91
+ expect(axiosStub.post.firstCall.args[1]).to.deep.equal({});
92
+ expect(result).to.equal(expectedResponse);
93
+ });
94
+ });
95
+ describe("delete", () => {
96
+ it("should make a DELETE request with proper headers", async () => {
97
+ const locals = {
98
+ account: { id: "acc123" },
99
+ tenant: { id: "tenant456" },
100
+ membership: { id: "mem789" }
101
+ };
102
+ const url = "https://api.example.com/test";
103
+ const options = {
104
+ headers: { "custom-header": "value" },
105
+ data: { test: "data" }
106
+ };
107
+ const expectedResponse = { data: "deleted" };
108
+ axiosStub.delete.resolves(expectedResponse);
109
+ const result = await safeProxy.delete(locals, url, options);
110
+ expect(axiosStub.delete.calledOnce).to.be.true;
111
+ expect(axiosStub.delete.firstCall.args[0]).to.equal(url);
112
+ expect(axiosStub.delete.firstCall.args[1].data).to.deep.equal({ test: "data" });
113
+ expect(axiosStub.delete.firstCall.args[1].headers).to.include({
114
+ "tws-account-id": "acc123",
115
+ "tws-tenant-id": "tenant456",
116
+ "tws-membership-id": "mem789",
117
+ "tws-membership": JSON.stringify(locals.membership),
118
+ "custom-header": "value"
119
+ });
120
+ expect(result).to.equal(expectedResponse);
121
+ });
122
+ it("should handle missing optional fields in locals", async () => {
123
+ const locals = {
124
+ account: { id: "acc123" }
125
+ // Missing tenant and membership
126
+ };
127
+ const url = "https://api.example.com/test";
128
+ const expectedResponse = { data: "deleted" };
129
+ axiosStub.delete.resolves(expectedResponse);
130
+ const result = await safeProxy.delete(locals, url);
131
+ expect(axiosStub.delete.calledOnce).to.be.true;
132
+ expect(axiosStub.delete.firstCall.args[1].headers).to.include({
133
+ "tws-account-id": "acc123"
134
+ });
135
+ expect(axiosStub.delete.firstCall.args[1].headers).to.not.have.property("tws-tenant-id");
136
+ expect(axiosStub.delete.firstCall.args[1].headers).to.not.have.property("tws-membership-id");
137
+ expect(axiosStub.delete.firstCall.args[1].headers).to.not.have.property("tws-membership");
138
+ expect(result).to.equal(expectedResponse);
139
+ });
140
+ });
141
+ describe("private _proxyRequest method", () => {
142
+ it("should handle GET requests through public methods", async () => {
143
+ const locals = {
144
+ account: { id: "acc123" }
145
+ };
146
+ const url = "https://api.example.com/test";
147
+ const expectedResponse = { data: "get result" };
148
+ axiosStub.get.resolves(expectedResponse);
149
+ // Test through public interface - we'll test the private method indirectly
150
+ // by testing the header construction in public methods
151
+ const result = await safeProxy.post(locals, url);
152
+ expect(axiosStub.post.calledOnce).to.be.true;
153
+ expect(axiosStub.post.firstCall.args[2].headers).to.include({
154
+ "tws-account-id": "acc123"
155
+ });
156
+ });
157
+ it("should omit nil values from headers", async () => {
158
+ const locals = {
159
+ account: { id: "acc123" },
160
+ tenant: { id: undefined }, // This should be omitted
161
+ membership: null // This should be omitted
162
+ };
163
+ const url = "https://api.example.com/test";
164
+ const expectedResponse = { data: "success" };
165
+ axiosStub.post.resolves(expectedResponse);
166
+ await safeProxy.post(locals, url);
167
+ expect(axiosStub.post.calledOnce).to.be.true;
168
+ const headers = axiosStub.post.firstCall.args[2].headers;
169
+ expect(headers).to.include({
170
+ "tws-account-id": "acc123"
171
+ });
172
+ expect(headers).to.not.have.property("tws-tenant-id");
173
+ expect(headers).to.not.have.property("tws-membership-id");
174
+ expect(headers).to.not.have.property("tws-membership");
175
+ });
176
+ });
177
+ describe("error handling", () => {
178
+ it("should propagate axios errors", async () => {
179
+ const locals = {
180
+ account: { id: "acc123" }
181
+ };
182
+ const url = "https://api.example.com/test";
183
+ const error = new Error("Network error");
184
+ axiosStub.post.rejects(error);
185
+ try {
186
+ await safeProxy.post(locals, url);
187
+ expect.fail("Should have thrown an error");
188
+ }
189
+ catch (err) {
190
+ expect(err).to.equal(error);
191
+ }
192
+ });
193
+ it("should handle axios error responses", async () => {
194
+ const locals = {
195
+ account: { id: "acc123" }
196
+ };
197
+ const url = "https://api.example.com/test";
198
+ const errorResponse = {
199
+ response: {
200
+ status: 404,
201
+ data: "Not found"
202
+ }
203
+ };
204
+ axiosStub.post.rejects(errorResponse);
205
+ try {
206
+ await safeProxy.post(locals, url);
207
+ expect.fail("Should have thrown an error");
208
+ }
209
+ catch (err) {
210
+ expect(err).to.equal(errorResponse);
211
+ }
212
+ });
213
+ });
214
+ describe("header construction", () => {
215
+ it("should properly stringify membership object", async () => {
216
+ const membership = { id: "mem789", role: "admin" };
217
+ const locals = {
218
+ account: { id: "acc123" },
219
+ membership
220
+ };
221
+ const url = "https://api.example.com/test";
222
+ const expectedResponse = { data: "success" };
223
+ axiosStub.post.resolves(expectedResponse);
224
+ await safeProxy.post(locals, url);
225
+ expect(axiosStub.post.calledOnce).to.be.true;
226
+ expect(axiosStub.post.firstCall.args[2].headers["tws-membership"]).to.equal(JSON.stringify(membership));
227
+ });
228
+ it("should merge custom headers with authentication headers", async () => {
229
+ const locals = {
230
+ account: { id: "acc123" }
231
+ };
232
+ const url = "https://api.example.com/test";
233
+ const options = {
234
+ headers: {
235
+ "content-type": "application/json",
236
+ "authorization": "Bearer token123"
237
+ }
238
+ };
239
+ const expectedResponse = { data: "success" };
240
+ axiosStub.post.resolves(expectedResponse);
241
+ await safeProxy.post(locals, url, options);
242
+ expect(axiosStub.post.calledOnce).to.be.true;
243
+ const headers = axiosStub.post.firstCall.args[2].headers;
244
+ expect(headers).to.include({
245
+ "tws-account-id": "acc123",
246
+ "content-type": "application/json",
247
+ "authorization": "Bearer token123"
248
+ });
249
+ });
250
+ });
251
+ });
252
+ //# sourceMappingURL=safe-proxy.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-proxy.spec.js","sourceRoot":"","sources":["../../test/safe-proxy.spec.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,SAAS,CAAC;IAEd,UAAU,CAAC,GAAG,EAAE;QACd,qBAAqB;QACrB,SAAS,GAAG;YACV,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YACnC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAC3B,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC7B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAC3C,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;gBACrC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACvB,CAAC;YAEF,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAE1D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC1D,gBAAgB,EAAE,QAAQ;gBAC1B,eAAe,EAAE,WAAW;gBAC5B,mBAAmB,EAAE,QAAQ;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;gBACnD,eAAe,EAAE,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,gCAAgC;aACjC,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC1D,gBAAgB,EAAE,QAAQ;aAC3B,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACvF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC3F,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACxF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAC3B,UAAU,EAAE,IAAI;aACjB,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC1D,gBAAgB,EAAE,QAAQ;gBAC1B,eAAe,EAAE,WAAW;aAC7B,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC3F,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACxF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC1B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAC3B,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC7B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAC3C,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;gBACrC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACvB,CAAC;YAEF,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAE5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC5D,gBAAgB,EAAE,QAAQ;gBAC1B,eAAe,EAAE,WAAW;gBAC5B,mBAAmB,EAAE,QAAQ;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;gBACnD,eAAe,EAAE,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,gCAAgC;aACjC,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAEnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC5D,gBAAgB,EAAE,QAAQ;aAC3B,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACzF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC7F,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC1F,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC1B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YAChD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAEzC,2EAA2E;YAC3E,uDAAuD;YACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBAC1D,gBAAgB,EAAE,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,yBAAyB;gBACpD,UAAU,EAAE,IAAI,CAAC,yBAAyB;aAC3C,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAElC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBACzB,gBAAgB,EAAE,QAAQ;aAC3B,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC1B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAEzC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC1B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAC3C,MAAM,aAAa,GAAG;gBACpB,QAAQ,EAAE;oBACR,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,WAAW;iBAClB;aACF,CAAC;YAEF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAEtC,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACzB,UAAU;aACX,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAE3C,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAElC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC1B,CAAC;YACF,MAAM,GAAG,GAAG,8BAA8B,CAAC;YAC3C,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,iBAAiB;iBACnC;aACF,CAAC;YAEF,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAE3C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;gBACzB,gBAAgB,EAAE,QAAQ;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,iBAAiB;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { expect } from "chai";
2
+ import serializer from "../ts/serializer/index.js";
3
+ describe("Serializer", () => {
4
+ describe("Serialize", () => {
5
+ it("should not show Hidden/Removed fields", () => {
6
+ const model = { prototype: {} };
7
+ model.prototype.get = function () {
8
+ return {
9
+ name: "John",
10
+ hidden_prefs: "should be hidden",
11
+ password: "password",
12
+ password_salt: "password_salt",
13
+ mfa_totp_secret: "mfa_totp_secret",
14
+ };
15
+ };
16
+ const options = { hide: ["hidden_prefs"], remove: ["password", "password_salt", "mfa_totp_secret"] };
17
+ serializer.serialize(model, options);
18
+ const serialized = model.prototype.toJSON();
19
+ expect(serialized.name).to.eq("John");
20
+ expect(serialized.hidden_prefs).to.be.undefined;
21
+ expect(serialized.password).to.be.undefined;
22
+ expect(serialized.password_salt).to.be.undefined;
23
+ expect(serialized.mfa_totp_secret).to.be.undefined;
24
+ });
25
+ });
26
+ });
27
+ //# sourceMappingURL=serializer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.spec.js","sourceRoot":"","sources":["../../test/serializer.spec.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,UAAU,MAAM,2BAA2B,CAAC;AAEnD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAE1B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAEzB,EAAE,CAAE,uCAAuC,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;YAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;gBACpB,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,YAAY,EAAE,kBAAkB;oBAChC,QAAQ,EAAE,UAAU;oBACpB,aAAa,EAAE,eAAe;oBAC9B,eAAe,EAAE,iBAAiB;iBACnC,CAAA;YACH,CAAC,CAAA;YACD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,CAAA;YAEpG,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAErC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAE5C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjD,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACrD,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};