softkave-node-utils 0.1.0

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 (203) hide show
  1. package/README.md +3 -0
  2. package/build/src/contexts/SessionContext.d.ts +15 -0
  3. package/build/src/contexts/SessionContext.js +70 -0
  4. package/build/src/contexts/SessionContext.js.map +1 -0
  5. package/build/src/contexts/asyncLocalStorage.d.ts +27 -0
  6. package/build/src/contexts/asyncLocalStorage.js +115 -0
  7. package/build/src/contexts/asyncLocalStorage.js.map +1 -0
  8. package/build/src/contexts/config.d.ts +49 -0
  9. package/build/src/contexts/config.js +25 -0
  10. package/build/src/contexts/config.js.map +1 -0
  11. package/build/src/contexts/data/BaseMongoDataProvider.d.ts +21 -0
  12. package/build/src/contexts/data/BaseMongoDataProvider.js +157 -0
  13. package/build/src/contexts/data/BaseMongoDataProvider.js.map +1 -0
  14. package/build/src/contexts/data/MongoDataProviderUtils.d.ts +6 -0
  15. package/build/src/contexts/data/MongoDataProviderUtils.js +35 -0
  16. package/build/src/contexts/data/MongoDataProviderUtils.js.map +1 -0
  17. package/build/src/contexts/data/dataQueryToMongoQuery.d.ts +3 -0
  18. package/build/src/contexts/data/dataQueryToMongoQuery.js +85 -0
  19. package/build/src/contexts/data/dataQueryToMongoQuery.js.map +1 -0
  20. package/build/src/contexts/data/types.d.ts +114 -0
  21. package/build/src/contexts/data/types.js +15 -0
  22. package/build/src/contexts/data/types.js.map +1 -0
  23. package/build/src/contexts/data/utils.d.ts +2 -0
  24. package/build/src/contexts/data/utils.js +24 -0
  25. package/build/src/contexts/data/utils.js.map +1 -0
  26. package/build/src/contexts/email/SESEmailProviderContext.d.ts +9 -0
  27. package/build/src/contexts/email/SESEmailProviderContext.js +49 -0
  28. package/build/src/contexts/email/SESEmailProviderContext.js.map +1 -0
  29. package/build/src/contexts/email/types.d.ts +13 -0
  30. package/build/src/contexts/email/types.js +3 -0
  31. package/build/src/contexts/email/types.js.map +1 -0
  32. package/build/src/contexts/encryption/AWSSecretsManagerProvider.d.ts +12 -0
  33. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js +51 -0
  34. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js.map +1 -0
  35. package/build/src/contexts/encryption/MemorySecretsManagerProvider.d.ts +12 -0
  36. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js +35 -0
  37. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js.map +1 -0
  38. package/build/src/contexts/encryption/types.d.ts +29 -0
  39. package/build/src/contexts/encryption/types.js +3 -0
  40. package/build/src/contexts/encryption/types.js.map +1 -0
  41. package/build/src/contexts/globalUtils.d.ts +2 -0
  42. package/build/src/contexts/globalUtils.js +17 -0
  43. package/build/src/contexts/globalUtils.js.map +1 -0
  44. package/build/src/contexts/injection/injectables.d.ts +56 -0
  45. package/build/src/contexts/injection/injectables.js +26 -0
  46. package/build/src/contexts/injection/injectables.js.map +1 -0
  47. package/build/src/contexts/injection/keys.d.ts +22 -0
  48. package/build/src/contexts/injection/keys.js +33 -0
  49. package/build/src/contexts/injection/keys.js.map +1 -0
  50. package/build/src/contexts/injection/register.d.ts +33 -0
  51. package/build/src/contexts/injection/register.js +107 -0
  52. package/build/src/contexts/injection/register.js.map +1 -0
  53. package/build/src/contexts/logger/noop.d.ts +5 -0
  54. package/build/src/contexts/logger/noop.js +12 -0
  55. package/build/src/contexts/logger/noop.js.map +1 -0
  56. package/build/src/contexts/logger/types.d.ts +11 -0
  57. package/build/src/contexts/logger/types.js +8 -0
  58. package/build/src/contexts/logger/types.js.map +1 -0
  59. package/build/src/contexts/logger/utils.d.ts +2 -0
  60. package/build/src/contexts/logger/utils.js +15 -0
  61. package/build/src/contexts/logger/utils.js.map +1 -0
  62. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.d.ts +28 -0
  63. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js +115 -0
  64. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js.map +1 -0
  65. package/build/src/contexts/semantic/types.d.ts +48 -0
  66. package/build/src/contexts/semantic/types.js +3 -0
  67. package/build/src/contexts/semantic/types.js.map +1 -0
  68. package/build/src/contexts/semantic/utils.d.ts +16 -0
  69. package/build/src/contexts/semantic/utils.js +68 -0
  70. package/build/src/contexts/semantic/utils.js.map +1 -0
  71. package/build/src/contexts/types.d.ts +6 -0
  72. package/build/src/contexts/types.js +3 -0
  73. package/build/src/contexts/types.js.map +1 -0
  74. package/build/src/definitions/agent.d.ts +10 -0
  75. package/build/src/definitions/agent.js +3 -0
  76. package/build/src/definitions/agent.js.map +1 -0
  77. package/build/src/definitions/resource.d.ts +17 -0
  78. package/build/src/definitions/resource.js +3 -0
  79. package/build/src/definitions/resource.js.map +1 -0
  80. package/build/src/definitions/resourceTypes.d.ts +10 -0
  81. package/build/src/definitions/resourceTypes.js +19 -0
  82. package/build/src/definitions/resourceTypes.js.map +1 -0
  83. package/build/src/definitions/token.d.ts +17 -0
  84. package/build/src/definitions/token.js +10 -0
  85. package/build/src/definitions/token.js.map +1 -0
  86. package/build/src/endpoints/RequestData.d.ts +20 -0
  87. package/build/src/endpoints/RequestData.js +52 -0
  88. package/build/src/endpoints/RequestData.js.map +1 -0
  89. package/build/src/endpoints/constants.d.ts +20 -0
  90. package/build/src/endpoints/constants.js +24 -0
  91. package/build/src/endpoints/constants.js.map +1 -0
  92. package/build/src/endpoints/endpoints.d.ts +7 -0
  93. package/build/src/endpoints/endpoints.js +33 -0
  94. package/build/src/endpoints/endpoints.js.map +1 -0
  95. package/build/src/endpoints/endpoints.mddoc.d.ts +62 -0
  96. package/build/src/endpoints/endpoints.mddoc.js +437 -0
  97. package/build/src/endpoints/endpoints.mddoc.js.map +1 -0
  98. package/build/src/endpoints/extractors.d.ts +9 -0
  99. package/build/src/endpoints/extractors.js +24 -0
  100. package/build/src/endpoints/extractors.js.map +1 -0
  101. package/build/src/endpoints/jobs/types.d.ts +6 -0
  102. package/build/src/endpoints/jobs/types.js +3 -0
  103. package/build/src/endpoints/jobs/types.js.map +1 -0
  104. package/build/src/endpoints/pagination.d.ts +3 -0
  105. package/build/src/endpoints/pagination.js +27 -0
  106. package/build/src/endpoints/pagination.js.map +1 -0
  107. package/build/src/endpoints/types.d.ts +68 -0
  108. package/build/src/endpoints/types.js +13 -0
  109. package/build/src/endpoints/types.js.map +1 -0
  110. package/build/src/endpoints/utils.d.ts +23 -0
  111. package/build/src/endpoints/utils.js +131 -0
  112. package/build/src/endpoints/utils.js.map +1 -0
  113. package/build/src/endpoints/validation.d.ts +47 -0
  114. package/build/src/endpoints/validation.js +73 -0
  115. package/build/src/endpoints/validation.js.map +1 -0
  116. package/build/src/errors/OperationError.d.ts +20 -0
  117. package/build/src/errors/OperationError.js +38 -0
  118. package/build/src/errors/OperationError.js.map +1 -0
  119. package/build/src/errors/commonErrors.d.ts +24 -0
  120. package/build/src/errors/commonErrors.js +72 -0
  121. package/build/src/errors/commonErrors.js.map +1 -0
  122. package/build/src/errors/endpointErrors.d.ts +31 -0
  123. package/build/src/errors/endpointErrors.js +83 -0
  124. package/build/src/errors/endpointErrors.js.map +1 -0
  125. package/build/src/errors/messages.d.ts +11 -0
  126. package/build/src/errors/messages.js +27 -0
  127. package/build/src/errors/messages.js.map +1 -0
  128. package/build/src/errors/reusableErrors.d.ts +12 -0
  129. package/build/src/errors/reusableErrors.js +25 -0
  130. package/build/src/errors/reusableErrors.js.map +1 -0
  131. package/build/src/errors/sessionErrors.d.ts +18 -0
  132. package/build/src/errors/sessionErrors.js +60 -0
  133. package/build/src/errors/sessionErrors.js.map +1 -0
  134. package/build/src/index.d.ts +0 -0
  135. package/build/src/index.js +2 -0
  136. package/build/src/index.js.map +1 -0
  137. package/build/src/mddoc/jsSdkCodeGen.d.ts +7 -0
  138. package/build/src/mddoc/jsSdkCodeGen.js +546 -0
  139. package/build/src/mddoc/jsSdkCodeGen.js.map +1 -0
  140. package/build/src/mddoc/mddoc.d.ts +206 -0
  141. package/build/src/mddoc/mddoc.js +142 -0
  142. package/build/src/mddoc/mddoc.js.map +1 -0
  143. package/build/src/mddoc/restApiEndpointsInfoGen.d.ts +10 -0
  144. package/build/src/mddoc/restApiEndpointsInfoGen.js +92 -0
  145. package/build/src/mddoc/restApiEndpointsInfoGen.js.map +1 -0
  146. package/build/src/mddoc/restApiTableOfContentGen.d.ts +2 -0
  147. package/build/src/mddoc/restApiTableOfContentGen.js +51 -0
  148. package/build/src/mddoc/restApiTableOfContentGen.js.map +1 -0
  149. package/build/src/mongodb/connection.d.ts +26 -0
  150. package/build/src/mongodb/connection.js +50 -0
  151. package/build/src/mongodb/connection.js.map +1 -0
  152. package/build/src/mongodb/constants.d.ts +4 -0
  153. package/build/src/mongodb/constants.js +7 -0
  154. package/build/src/mongodb/constants.js.map +1 -0
  155. package/build/src/mongodb/utils.d.ts +20 -0
  156. package/build/src/mongodb/utils.js +26 -0
  157. package/build/src/mongodb/utils.js.map +1 -0
  158. package/build/src/testUtils/context/email/MockTestEmailProviderContext.d.ts +6 -0
  159. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js +10 -0
  160. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js.map +1 -0
  161. package/build/src/testUtils/context/email/NoopEmailProviderContext.d.ts +6 -0
  162. package/build/src/testUtils/context/email/NoopEmailProviderContext.js +11 -0
  163. package/build/src/testUtils/context/email/NoopEmailProviderContext.js.map +1 -0
  164. package/build/src/testUtils/context/email/TestSESEmailProviderContext.d.ts +8 -0
  165. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js +14 -0
  166. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js.map +1 -0
  167. package/build/src/testUtils/context/types.d.ts +9 -0
  168. package/build/src/testUtils/context/types.js +3 -0
  169. package/build/src/testUtils/context/types.js.map +1 -0
  170. package/build/src/testUtils/generate/utils.d.ts +37 -0
  171. package/build/src/testUtils/generate/utils.js +79 -0
  172. package/build/src/testUtils/generate/utils.js.map +1 -0
  173. package/build/src/testUtils/helpers/assertion.d.ts +25 -0
  174. package/build/src/testUtils/helpers/assertion.js +63 -0
  175. package/build/src/testUtils/helpers/assertion.js.map +1 -0
  176. package/build/src/testUtils/helpers/binary.d.ts +4 -0
  177. package/build/src/testUtils/helpers/binary.js +19 -0
  178. package/build/src/testUtils/helpers/binary.js.map +1 -0
  179. package/build/src/testUtils/helpers/error.d.ts +3 -0
  180. package/build/src/testUtils/helpers/error.js +43 -0
  181. package/build/src/testUtils/helpers/error.js.map +1 -0
  182. package/build/src/testUtils/helpers/mock.d.ts +2 -0
  183. package/build/src/testUtils/helpers/mock.js +15 -0
  184. package/build/src/testUtils/helpers/mock.js.map +1 -0
  185. package/build/src/testUtils/helpers/mongodb.d.ts +3 -0
  186. package/build/src/testUtils/helpers/mongodb.js +17 -0
  187. package/build/src/testUtils/helpers/mongodb.js.map +1 -0
  188. package/build/src/testUtils/helpers/testFns.d.ts +30 -0
  189. package/build/src/testUtils/helpers/testFns.js +96 -0
  190. package/build/src/testUtils/helpers/testFns.js.map +1 -0
  191. package/build/src/testUtils/testUtils.d.ts +13 -0
  192. package/build/src/testUtils/testUtils.js +50 -0
  193. package/build/src/testUtils/testUtils.js.map +1 -0
  194. package/build/src/utils/assertion.d.ts +2 -0
  195. package/build/src/utils/assertion.js +31 -0
  196. package/build/src/utils/assertion.js.map +1 -0
  197. package/build/src/utils/aws.d.ts +5 -0
  198. package/build/src/utils/aws.js +3 -0
  199. package/build/src/utils/aws.js.map +1 -0
  200. package/build/src/utils/streamToBuffer.d.ts +4 -0
  201. package/build/src/utils/streamToBuffer.js +19 -0
  202. package/build/src/utils/streamToBuffer.js.map +1 -0
  203. package/package.json +72 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataQueryToMongoQuery = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const assertion_1 = require("../../utils/assertion");
6
+ function dataQueryToMongoQuery(query) {
7
+ const mongoQuery = {};
8
+ for (const k00 in query) {
9
+ const v00 = query[k00];
10
+ if ((0, lodash_1.isUndefined)(v00)) {
11
+ continue;
12
+ }
13
+ if (typeof v00 !== 'object' || v00 === null) {
14
+ mongoQuery[k00] = v00;
15
+ continue;
16
+ }
17
+ if (k00 === '$and' || k00 === '$nor' || k00 === '$or') {
18
+ (0, assertion_1.appAssert)((0, lodash_1.isArray)(v00));
19
+ const qList = v00.map((v01) => dataQueryToMongoQuery(v01));
20
+ mongoQuery[k00] = qList;
21
+ continue;
22
+ }
23
+ Object.entries(v00).forEach(([k01, v01]) => {
24
+ switch (k01) {
25
+ case '$objMatch': {
26
+ (0, assertion_1.appAssert)((0, lodash_1.isObject)(v01));
27
+ const q01 = dataQueryToMongoQuery(v01);
28
+ Object.entries(q01).forEach(([k02, v02]) => {
29
+ const k03 = `${k00}.${k02}`;
30
+ mongoQuery[k03] = v02;
31
+ });
32
+ break;
33
+ }
34
+ case '$all': {
35
+ (0, assertion_1.appAssert)((0, lodash_1.isArray)(v01));
36
+ const v0100 = (0, lodash_1.first)(v01);
37
+ if ((0, lodash_1.isObjectLike)(v0100) && v0100.$elemMatch) {
38
+ const expQueryList = v01.map(v01Next => ({
39
+ $elemMatch: dataQueryToMongoQuery(v01Next.$elemMatch),
40
+ }));
41
+ const k02 = [k00, '$all'];
42
+ (0, lodash_1.set)(mongoQuery, k02, expQueryList);
43
+ }
44
+ else {
45
+ const k02 = [k00, '$all'];
46
+ (0, lodash_1.set)(mongoQuery, k02, v01);
47
+ }
48
+ break;
49
+ }
50
+ case '$elemMatch': {
51
+ (0, assertion_1.appAssert)((0, lodash_1.isObject)(v01));
52
+ const q01 = dataQueryToMongoQuery(v01);
53
+ const k02 = [k00, '$elemMatch'];
54
+ (0, lodash_1.set)(mongoQuery, k02, q01);
55
+ break;
56
+ }
57
+ case '$not': {
58
+ (0, assertion_1.appAssert)((0, lodash_1.isObject)(v01));
59
+ if (v01.$objMatch) {
60
+ const objMatch = v01.$objMatch;
61
+ (0, assertion_1.appAssert)((0, lodash_1.isObject)(objMatch));
62
+ const q01 = dataQueryToMongoQuery(objMatch);
63
+ Object.entries(q01).forEach(([k02, v02]) => {
64
+ const k03 = `${k00}.${k02}`;
65
+ mongoQuery[k03] = (0, lodash_1.merge)(mongoQuery[k03] || {}, { $not: v02 });
66
+ });
67
+ }
68
+ else {
69
+ const q01 = dataQueryToMongoQuery(v01);
70
+ const k02 = [k00, '$not'];
71
+ (0, lodash_1.set)(mongoQuery, k02, q01);
72
+ }
73
+ break;
74
+ }
75
+ default: {
76
+ const k02 = [k00, k01];
77
+ (0, lodash_1.set)(mongoQuery, k02, v01);
78
+ }
79
+ }
80
+ });
81
+ }
82
+ return mongoQuery;
83
+ }
84
+ exports.dataQueryToMongoQuery = dataQueryToMongoQuery;
85
+ //# sourceMappingURL=dataQueryToMongoQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataQueryToMongoQuery.js","sourceRoot":"","sources":["../../../../src/contexts/data/dataQueryToMongoQuery.ts"],"names":[],"mappings":";;;AAAA,mCAQgB;AAEhB,qDAAgD;AAGhD,SAAgB,qBAAqB,CACnC,KAAa;IAEb,MAAM,UAAU,GAAc,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAmB,CAAC,CAAC;QAEvC,IAAI,IAAA,oBAAW,EAAC,GAAG,CAAC,EAAE;YACpB,SAAS;SACV;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;YAC3C,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACtB,SAAS;SACV;QAED,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;YACrD,IAAA,qBAAS,EAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,SAAS;SACV;QAED,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;YACzC,QAAQ,GAAG,EAAE;gBACX,KAAK,WAAW,CAAC,CAAC;oBAChB,IAAA,qBAAS,EAAC,IAAA,iBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBACvC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;wBACzC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;wBAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,MAAM;iBACP;gBAED,KAAK,MAAM,CAAC,CAAC;oBACX,IAAA,qBAAS,EAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,GAAG,CAAC,CAAC;oBAEzB,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE;wBAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BACvC,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC;yBACtD,CAAC,CAAC,CAAC;wBACJ,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC1B,IAAA,YAAG,EAAC,UAAU,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;qBACpC;yBAAM;wBACL,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC1B,IAAA,YAAG,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;qBAC3B;oBAED,MAAM;iBACP;gBAED,KAAK,YAAY,CAAC,CAAC;oBACjB,IAAA,qBAAS,EAAC,IAAA,iBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBACvC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;oBAChC,IAAA,YAAG,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1B,MAAM;iBACP;gBAED,KAAK,MAAM,CAAC,CAAC;oBACX,IAAA,qBAAS,EAAC,IAAA,iBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;oBAEzB,IAAK,GAAiB,CAAC,SAAS,EAAE;wBAChC,MAAM,QAAQ,GAAI,GAAiB,CAAC,SAAS,CAAC;wBAC9C,IAAA,qBAAS,EAAC,IAAA,iBAAQ,EAAC,QAAQ,CAAC,CAAC,CAAC;wBAC9B,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;wBAC5C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;4BACzC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;4BAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,IAAA,cAAK,EAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;wBAC9D,CAAC,CAAC,CAAC;qBACJ;yBAAM;wBACL,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBACvC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC1B,IAAA,YAAG,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;qBAC3B;oBAED,MAAM;iBACP;gBAED,OAAO,CAAC,CAAC;oBACP,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACvB,IAAA,YAAG,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;iBAC3B;aACF;QACH,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,UAAoB,CAAC;AAC9B,CAAC;AA3FD,sDA2FC"}
@@ -0,0 +1,114 @@
1
+ import { AnyObject, ProjectionType, SortOrder } from 'mongoose';
2
+ import { AnyFn } from 'softkave-js-utils';
3
+ import { Primitive } from 'type-fest';
4
+ export type DataQuerySort<T, K extends keyof T = keyof T> = {
5
+ [P in K]?: SortOrder;
6
+ };
7
+ export interface DataProviderOpParams {
8
+ txn?: unknown;
9
+ }
10
+ export interface DataProviderQueryParams<T> extends DataProviderOpParams {
11
+ projection?: ProjectionType<T>;
12
+ }
13
+ export interface DataProviderQueryListParams<T> extends DataProviderQueryParams<T> {
14
+ /** zero-based index */
15
+ page?: number;
16
+ pageSize?: number;
17
+ sort?: DataQuerySort<T>;
18
+ }
19
+ export declare const kIncludeInProjection: 1;
20
+ export declare const kExcludeFromProjection: 0;
21
+ export type DataProviderLiteralType = Primitive | Date;
22
+ export interface ComparisonLiteralFieldQueryOps<T = DataProviderLiteralType> {
23
+ $eq?: T | null;
24
+ $in?: Array<T | null>;
25
+ $ne?: T | null;
26
+ $nin?: Array<T | null>;
27
+ $exists?: boolean;
28
+ $regex?: T extends string ? string | RegExp : never;
29
+ $options?: T extends string ? string : never;
30
+ }
31
+ /**
32
+ * Can also be used to query dates in Mongo.
33
+ */
34
+ export interface NumberLiteralFieldQueryOps {
35
+ $gt?: number;
36
+ $gte?: number;
37
+ $lt?: number;
38
+ $lte?: number;
39
+ }
40
+ export type LiteralFieldQueryOps<T = DataProviderLiteralType> = (T extends DataProviderLiteralType ? ComparisonLiteralFieldQueryOps<T> | NumberLiteralFieldQueryOps | T : never) | null;
41
+ export type LiteralDataQuery<T> = {
42
+ [P in keyof T]?: ExpandDataQuery<Exclude<T[P], undefined>>;
43
+ };
44
+ export interface RecordFieldQueryOps<T extends AnyObject> {
45
+ $objMatch: LiteralDataQuery<T>;
46
+ }
47
+ export interface ElemMatchFieldQueryOps<T> {
48
+ $elemMatch?: T extends AnyObject ? LiteralDataQuery<T> : never;
49
+ }
50
+ export interface ArrayFieldQueryOps<T> extends ElemMatchFieldQueryOps<T> {
51
+ $size?: number;
52
+ $all?: T extends DataProviderLiteralType ? T[] : T extends AnyObject ? ElemMatchFieldQueryOps<T>[] : never;
53
+ $eq?: (T extends DataProviderLiteralType ? T | T[] : never) | null;
54
+ }
55
+ export interface FieldLogicalQueryOps<T> {
56
+ $not?: ExpandDataQuery<T, true>;
57
+ }
58
+ export interface LogicalQueryOps<T> {
59
+ $and?: LiteralDataQuery<T>[];
60
+ $nor?: LiteralDataQuery<T>[];
61
+ $or?: LiteralDataQuery<T>[];
62
+ }
63
+ type ExpandDataQuery<TValue, TExcludeFieldLogical extends boolean = false> = (Exclude<TValue, undefined> extends DataProviderLiteralType ? TValue | LiteralFieldQueryOps<TValue> : never) | (TExcludeFieldLogical extends false ? FieldLogicalQueryOps<TValue> : never) | (NonNullable<TValue> extends Array<infer TArrayItem> ? ArrayFieldQueryOps<TArrayItem> | (TArrayItem extends AnyObject ? RecordFieldQueryOps<TArrayItem> : never) | (TArrayItem extends DataProviderLiteralType ? TArrayItem : never) : NonNullable<TValue> extends AnyObject ? RecordFieldQueryOps<NonNullable<TValue>> : never);
64
+ export type DataQuery<T> = LiteralDataQuery<T> & LogicalQueryOps<T>;
65
+ export type KeyedComparisonOps<TData extends AnyObject> = keyof TData extends string ? `${keyof TData}.${keyof ComparisonLiteralFieldQueryOps}` : '';
66
+ export declare enum BulkOpType {
67
+ InsertOne = 1,
68
+ ReplaceOne = 2,
69
+ UpdateOne = 3,
70
+ UpdateMany = 4,
71
+ DeleteOne = 5,
72
+ DeleteMany = 6
73
+ }
74
+ export type BulkOpItem<T> = {
75
+ type: BulkOpType.InsertOne;
76
+ item: T;
77
+ } | {
78
+ type: BulkOpType.UpdateOne;
79
+ query: DataQuery<T>;
80
+ update: Partial<T>;
81
+ upsert?: boolean;
82
+ } | {
83
+ type: BulkOpType.UpdateMany;
84
+ query: DataQuery<T>;
85
+ update: Partial<T>;
86
+ } | {
87
+ type: BulkOpType.DeleteOne;
88
+ query: DataQuery<T>;
89
+ } | {
90
+ type: BulkOpType.DeleteMany;
91
+ query: DataQuery<T>;
92
+ };
93
+ export interface BaseDataProvider<TData, TQuery extends DataQuery<TData> = DataQuery<TData>> {
94
+ insertItem: (item: TData, otherProps?: DataProviderOpParams) => Promise<TData>;
95
+ insertList: (items: TData[], otherProps?: DataProviderOpParams) => Promise<void>;
96
+ existsByQuery: <ExtendedQueryType extends TQuery = TQuery>(query: ExtendedQueryType, otherProps?: DataProviderOpParams) => Promise<boolean>;
97
+ getManyByQuery: (query: TQuery, otherProps?: DataProviderQueryListParams<TData>) => Promise<TData[]>;
98
+ getOneByQuery: (query: TQuery, otherProps?: DataProviderQueryParams<TData>) => Promise<TData | null>;
99
+ assertGetOneByQuery: (query: TQuery, otherProps?: DataProviderQueryParams<TData>) => Promise<TData>;
100
+ assertGetAndUpdateOneByQuery: (query: TQuery, data: Partial<TData>, otherProps?: DataProviderQueryParams<TData>) => Promise<TData>;
101
+ countByQuery: <ExtendedQueryType extends TQuery = TQuery>(query: ExtendedQueryType, otherProps?: DataProviderOpParams) => Promise<number>;
102
+ updateManyByQuery: (query: TQuery, data: Partial<TData>, otherProps?: DataProviderOpParams) => Promise<void>;
103
+ updateOneByQuery: (query: TQuery, data: Partial<TData>, otherProps?: DataProviderOpParams) => Promise<void>;
104
+ getAndUpdateOneByQuery: (query: TQuery, data: Partial<TData>, otherProps?: DataProviderQueryParams<TData>) => Promise<TData | null>;
105
+ deleteManyByQuery: <TOpQuery extends TQuery = TQuery>(query: TOpQuery, otherProps?: DataProviderOpParams) => Promise<void>;
106
+ deleteOneByQuery: <ExtendedQueryType extends TQuery = TQuery>(query: ExtendedQueryType, otherProps?: DataProviderOpParams) => Promise<void>;
107
+ bulkWrite(ops: Array<BulkOpItem<TData>>, otherProps?: DataProviderOpParams): Promise<void>;
108
+ }
109
+ export interface DataProviderUtils {
110
+ withTxn<TResult>(fn: AnyFn<[
111
+ txn: unknown
112
+ ], Promise<TResult>> /** Whether or not to reuse an existing txn from async local storage. */, reuseAsyncLocalTxn: boolean, existingSession?: unknown): Promise<TResult>;
113
+ }
114
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkOpType = exports.kExcludeFromProjection = exports.kIncludeInProjection = void 0;
4
+ exports.kIncludeInProjection = 1;
5
+ exports.kExcludeFromProjection = 0;
6
+ var BulkOpType;
7
+ (function (BulkOpType) {
8
+ BulkOpType[BulkOpType["InsertOne"] = 1] = "InsertOne";
9
+ BulkOpType[BulkOpType["ReplaceOne"] = 2] = "ReplaceOne";
10
+ BulkOpType[BulkOpType["UpdateOne"] = 3] = "UpdateOne";
11
+ BulkOpType[BulkOpType["UpdateMany"] = 4] = "UpdateMany";
12
+ BulkOpType[BulkOpType["DeleteOne"] = 5] = "DeleteOne";
13
+ BulkOpType[BulkOpType["DeleteMany"] = 6] = "DeleteMany";
14
+ })(BulkOpType || (exports.BulkOpType = BulkOpType = {}));
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/contexts/data/types.ts"],"names":[],"mappings":";;;AA0Ba,QAAA,oBAAoB,GAAG,CAAU,CAAC;AAClC,QAAA,sBAAsB,GAAG,CAAU,CAAC;AAwFjD,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,qDAAa,CAAA;IACb,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;IACV,qDAAS,CAAA;IACT,uDAAU,CAAA;AACZ,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB"}
@@ -0,0 +1,2 @@
1
+ export declare function getPage(inputPage?: number, minPage?: number): number | undefined;
2
+ export declare function getPageSize(inputPageSize?: number, inputPage?: number, maxPageSize?: number, minPageSize?: number): number | undefined;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPageSize = exports.getPage = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const constants_1 = require("../../endpoints/constants");
6
+ function getPage(inputPage, minPage = constants_1.kEndpointConstants.minPage) {
7
+ return (0, lodash_1.isNumber)(inputPage)
8
+ ? Math.max(inputPage, minPage) // return 0 if page is negative
9
+ : undefined;
10
+ }
11
+ exports.getPage = getPage;
12
+ function getPageSize(inputPageSize, inputPage, maxPageSize = constants_1.kEndpointConstants.maxPageSize, minPageSize = constants_1.kEndpointConstants.minPageSize) {
13
+ const pageSize = (0, lodash_1.isNumber)(inputPageSize)
14
+ ? Math.max(inputPageSize, minPageSize)
15
+ : (0, lodash_1.isNumber)(inputPage)
16
+ ? maxPageSize
17
+ : undefined;
18
+ if (pageSize) {
19
+ return Math.min(pageSize, maxPageSize);
20
+ }
21
+ return pageSize;
22
+ }
23
+ exports.getPageSize = getPageSize;
24
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/contexts/data/utils.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,yDAA6D;AAE7D,SAAgB,OAAO,CACrB,SAAkB,EAClB,OAAO,GAAG,8BAAkB,CAAC,OAAO;IAEpC,OAAO,IAAA,iBAAQ,EAAC,SAAS,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,+BAA+B;QAC9D,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAPD,0BAOC;AAED,SAAgB,WAAW,CACzB,aAAsB,EACtB,SAAkB,EAClB,WAAW,GAAG,8BAAkB,CAAC,WAAW,EAC5C,WAAW,GAAG,8BAAkB,CAAC,WAAW;IAE5C,MAAM,QAAQ,GAAG,IAAA,iBAAQ,EAAC,aAAa,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC;QACtC,CAAC,CAAC,IAAA,iBAAQ,EAAC,SAAS,CAAC;YACrB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACxC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAjBD,kCAiBC"}
@@ -0,0 +1,9 @@
1
+ import { SESv2Client } from '@aws-sdk/client-sesv2';
2
+ import { IEmailProviderContext, SendEmailParams } from './types';
3
+ import { AWSConfig } from '../../utils/aws';
4
+ export declare class SESEmailProviderContext implements IEmailProviderContext {
5
+ protected ses: SESv2Client;
6
+ constructor(params: AWSConfig);
7
+ sendEmail: (params: SendEmailParams) => Promise<void>;
8
+ dispose: () => Promise<void>;
9
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SESEmailProviderContext = void 0;
4
+ const client_sesv2_1 = require("@aws-sdk/client-sesv2");
5
+ const assertion_1 = require("../../utils/assertion");
6
+ const injectables_1 = require("../injection/injectables");
7
+ class SESEmailProviderContext {
8
+ constructor(params) {
9
+ this.sendEmail = async (params) => {
10
+ const suppliedConfig = injectables_1.kUtilsInjectables.suppliedConfig();
11
+ (0, assertion_1.appAssert)(suppliedConfig.awsEmailEncoding);
12
+ const command = new client_sesv2_1.SendEmailCommand({
13
+ Destination: { ToAddresses: params.destination },
14
+ FromEmailAddress: params.source,
15
+ Content: {
16
+ Simple: {
17
+ Subject: {
18
+ Charset: suppliedConfig.awsEmailEncoding,
19
+ Data: params.subject,
20
+ },
21
+ Body: {
22
+ Html: {
23
+ Charset: suppliedConfig.awsEmailEncoding,
24
+ Data: params.body.html,
25
+ },
26
+ Text: {
27
+ Charset: suppliedConfig.awsEmailEncoding,
28
+ Data: params.body.text,
29
+ },
30
+ },
31
+ },
32
+ },
33
+ });
34
+ await this.ses.send(command);
35
+ };
36
+ this.dispose = async () => {
37
+ await this.ses.destroy();
38
+ };
39
+ this.ses = new client_sesv2_1.SESv2Client({
40
+ region: params.region,
41
+ credentials: {
42
+ accessKeyId: params.accessKeyId,
43
+ secretAccessKey: params.secretAccessKey,
44
+ },
45
+ });
46
+ }
47
+ }
48
+ exports.SESEmailProviderContext = SESEmailProviderContext;
49
+ //# sourceMappingURL=SESEmailProviderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SESEmailProviderContext.js","sourceRoot":"","sources":["../../../../src/contexts/email/SESEmailProviderContext.ts"],"names":[],"mappings":";;;AAAA,wDAAoE;AACpE,qDAAgD;AAChD,0DAA2D;AAI3D,MAAa,uBAAuB;IAGlC,YAAY,MAAiB;QAU7B,cAAS,GAAG,KAAK,EAAE,MAAuB,EAAE,EAAE;YAC5C,MAAM,cAAc,GAAG,+BAAiB,CAAC,cAAc,EAAE,CAAC;YAC1D,IAAA,qBAAS,EAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,IAAI,+BAAgB,CAAC;gBACnC,WAAW,EAAE,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAC;gBAC9C,gBAAgB,EAAE,MAAM,CAAC,MAAM;gBAC/B,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,OAAO,EAAE,cAAc,CAAC,gBAAgB;4BACxC,IAAI,EAAE,MAAM,CAAC,OAAO;yBACrB;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE;gCACJ,OAAO,EAAE,cAAc,CAAC,gBAAgB;gCACxC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;6BACvB;4BACD,IAAI,EAAE;gCACJ,OAAO,EAAE,cAAc,CAAC,gBAAgB;gCACxC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;6BACvB;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,YAAO,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC;QAzCA,IAAI,CAAC,GAAG,GAAG,IAAI,0BAAW,CAAC;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE;gBACX,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC;SACF,CAAC,CAAC;IACL,CAAC;CAmCF;AA9CD,0DA8CC"}
@@ -0,0 +1,13 @@
1
+ import { DisposableResource } from 'softkave-js-utils';
2
+ export interface SendEmailParams {
3
+ destination: string[];
4
+ source: string;
5
+ subject: string;
6
+ body: {
7
+ html: string;
8
+ text: string;
9
+ };
10
+ }
11
+ export interface IEmailProviderContext extends DisposableResource {
12
+ sendEmail: (params: SendEmailParams) => Promise<void>;
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/contexts/email/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
+ import { AWSConfig } from '../../utils/aws';
3
+ import { SecretsManagerProvider, SecretsManagerProviderAddSecretParams, SecretsManagerProviderAddSecretResult, SecretsManagerProviderDeleteSecretParams, SecretsManagerProviderGetSecretParams, SecretsManagerProviderGetSecretResult, SecretsManagerProviderUpdateSecretParams } from './types';
4
+ export declare class AWSSecretsManagerProvider implements SecretsManagerProvider {
5
+ protected client: SecretsManagerClient;
6
+ constructor(params: AWSConfig);
7
+ addSecret: (params: SecretsManagerProviderAddSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
8
+ updateSecret: (params: SecretsManagerProviderUpdateSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
9
+ deleteSecret: (params: SecretsManagerProviderDeleteSecretParams) => Promise<void>;
10
+ getSecret: (params: SecretsManagerProviderGetSecretParams) => Promise<SecretsManagerProviderGetSecretResult>;
11
+ dispose: () => Promise<void>;
12
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AWSSecretsManagerProvider = void 0;
4
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
+ const assertion_1 = require("../../utils/assertion");
6
+ class AWSSecretsManagerProvider {
7
+ constructor(params) {
8
+ this.addSecret = async (params) => {
9
+ const { name, text } = params;
10
+ const command = new client_secrets_manager_1.CreateSecretCommand({ Name: name, SecretString: text });
11
+ const response = await this.client.send(command);
12
+ (0, assertion_1.appAssert)(response.ARN);
13
+ return { secretId: response.ARN };
14
+ };
15
+ this.updateSecret = async (params) => {
16
+ const { text, secretId } = params;
17
+ const command = new client_secrets_manager_1.UpdateSecretCommand({
18
+ SecretString: text,
19
+ SecretId: secretId,
20
+ });
21
+ const response = await this.client.send(command);
22
+ (0, assertion_1.appAssert)(response.ARN);
23
+ return { secretId: response.ARN };
24
+ };
25
+ this.deleteSecret = async (params) => {
26
+ const { secretId } = params;
27
+ const command = new client_secrets_manager_1.DeleteSecretCommand({
28
+ SecretId: secretId,
29
+ });
30
+ await this.client.send(command);
31
+ };
32
+ this.getSecret = async (params) => {
33
+ const { secretId: id } = params;
34
+ const input = { SecretId: id };
35
+ const command = new client_secrets_manager_1.GetSecretValueCommand(input);
36
+ const response = await this.client.send(command);
37
+ (0, assertion_1.appAssert)(response.SecretString);
38
+ return { text: response.SecretString };
39
+ };
40
+ this.dispose = async () => {
41
+ await this.client.destroy();
42
+ };
43
+ const { accessKeyId, secretAccessKey, region } = params;
44
+ this.client = new client_secrets_manager_1.SecretsManagerClient({
45
+ region,
46
+ credentials: { accessKeyId, secretAccessKey },
47
+ });
48
+ }
49
+ }
50
+ exports.AWSSecretsManagerProvider = AWSSecretsManagerProvider;
51
+ //# sourceMappingURL=AWSSecretsManagerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSSecretsManagerProvider.js","sourceRoot":"","sources":["../../../../src/contexts/encryption/AWSSecretsManagerProvider.ts"],"names":[],"mappings":";;;AAAA,4EAMyC;AACzC,qDAAgD;AAYhD,MAAa,yBAAyB;IAGpC,YAAY,MAAiB;QAQ7B,cAAS,GAAG,KAAK,EACf,MAA6C,EACG,EAAE;YAClD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,4CAAmB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAA,qBAAS,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,EAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC;QAClC,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAClB,MAAgD,EACA,EAAE;YAClD,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,MAAM,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,4CAAmB,CAAC;gBACtC,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAA,qBAAS,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,EAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC;QAClC,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAAE,MAAgD,EAAE,EAAE;YACxE,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,4CAAmB,CAAC;gBACtC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEF,cAAS,GAAG,KAAK,EACf,MAA6C,EACG,EAAE;YAClD,MAAM,EAAC,QAAQ,EAAE,EAAE,EAAC,GAAG,MAAM,CAAC;YAC9B,MAAM,KAAK,GAAG,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,8CAAqB,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAA,qBAAS,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACjC,OAAO,EAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAC,CAAC;QACvC,CAAC,CAAC;QAEF,YAAO,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC;QAtDA,MAAM,EAAC,WAAW,EAAE,eAAe,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,6CAAoB,CAAC;YACrC,MAAM;YACN,WAAW,EAAE,EAAC,WAAW,EAAE,eAAe,EAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CAkDF;AA3DD,8DA2DC"}
@@ -0,0 +1,12 @@
1
+ import { SecretsManagerProvider, SecretsManagerProviderAddSecretParams, SecretsManagerProviderAddSecretResult, SecretsManagerProviderDeleteSecretParams, SecretsManagerProviderGetSecretParams, SecretsManagerProviderGetSecretResult, SecretsManagerProviderUpdateSecretParams } from './types';
2
+ export declare class MemorySecretsManagerProvider implements SecretsManagerProvider {
3
+ protected secrets: Record<string, {
4
+ name: string;
5
+ secret: string;
6
+ }>;
7
+ addSecret: (params: SecretsManagerProviderAddSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
8
+ updateSecret: (params: SecretsManagerProviderUpdateSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
9
+ deleteSecret: (params: SecretsManagerProviderDeleteSecretParams) => Promise<void>;
10
+ getSecret: (params: SecretsManagerProviderGetSecretParams) => Promise<SecretsManagerProviderGetSecretResult>;
11
+ dispose: (...args: any[]) => void;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemorySecretsManagerProvider = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const softkave_js_utils_1 = require("softkave-js-utils");
6
+ const assertion_1 = require("../../utils/assertion");
7
+ class MemorySecretsManagerProvider {
8
+ constructor() {
9
+ this.secrets = {};
10
+ this.addSecret = async (params) => {
11
+ const { name, text } = params;
12
+ const id = (0, softkave_js_utils_1.getNewId)();
13
+ this.secrets[id] = { name, secret: text };
14
+ return { secretId: id };
15
+ };
16
+ this.updateSecret = async (params) => {
17
+ const { name, text, secretId } = params;
18
+ this.secrets[secretId] = { name, secret: text };
19
+ return { secretId };
20
+ };
21
+ this.deleteSecret = async (params) => {
22
+ const { secretId } = params;
23
+ delete this.secrets[secretId];
24
+ };
25
+ this.getSecret = async (params) => {
26
+ const { secretId: id } = params;
27
+ const secret = this.secrets[id];
28
+ (0, assertion_1.appAssert)(secret, new Error('Secret not found'));
29
+ return { text: secret.secret };
30
+ };
31
+ this.dispose = lodash_1.noop;
32
+ }
33
+ }
34
+ exports.MemorySecretsManagerProvider = MemorySecretsManagerProvider;
35
+ //# sourceMappingURL=MemorySecretsManagerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySecretsManagerProvider.js","sourceRoot":"","sources":["../../../../src/contexts/encryption/MemorySecretsManagerProvider.ts"],"names":[],"mappings":";;;AAAA,mCAA4B;AAU5B,yDAA2C;AAC3C,qDAAgD;AAEhD,MAAa,4BAA4B;IAAzC;QACY,YAAO,GAAmD,EAAE,CAAC;QAEvE,cAAS,GAAG,KAAK,EACf,MAA6C,EACG,EAAE;YAClD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAA,4BAAQ,GAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;YAExC,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC;QACxB,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAClB,MAAgD,EACA,EAAE;YAClD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,MAAM,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;YAE9C,OAAO,EAAC,QAAQ,EAAC,CAAC;QACpB,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAAE,MAAgD,EAAE,EAAE;YACxE,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,cAAS,GAAG,KAAK,EACf,MAA6C,EACG,EAAE;YAClD,MAAM,EAAC,QAAQ,EAAE,EAAE,EAAC,GAAG,MAAM,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAA,qBAAS,EAAC,MAAM,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACjD,OAAO,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,YAAO,GAAG,aAAI,CAAC;IACjB,CAAC;CAAA;AAtCD,oEAsCC"}
@@ -0,0 +1,29 @@
1
+ import { DisposableResource } from 'softkave-js-utils';
2
+ export interface SecretsManagerProviderAddSecretParams {
3
+ text: string;
4
+ name: string;
5
+ }
6
+ export interface SecretsManagerProviderUpdateSecretParams {
7
+ secretId: string;
8
+ text: string;
9
+ name: string;
10
+ }
11
+ export interface SecretsManagerProviderDeleteSecretParams {
12
+ secretId: string;
13
+ }
14
+ export interface SecretsManagerProviderAddSecretResult {
15
+ secretId: string;
16
+ }
17
+ export interface SecretsManagerProviderGetSecretParams {
18
+ secretId: string;
19
+ }
20
+ export interface SecretsManagerProviderGetSecretResult {
21
+ text: string;
22
+ }
23
+ export interface SecretsManagerProvider extends DisposableResource {
24
+ addSecret: (params: SecretsManagerProviderAddSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
25
+ updateSecret: (params: SecretsManagerProviderUpdateSecretParams) => Promise<SecretsManagerProviderAddSecretResult>;
26
+ deleteSecret: (params: SecretsManagerProviderDeleteSecretParams) => Promise<void>;
27
+ /** throws if secret is not found */
28
+ getSecret: (params: SecretsManagerProviderGetSecretParams) => Promise<SecretsManagerProviderGetSecretResult>;
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/contexts/encryption/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function globalDispose(): Promise<void>;
2
+ export declare function globalSetup(): Promise<void>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalSetup = exports.globalDispose = void 0;
4
+ const injectables_1 = require("./injection/injectables");
5
+ const register_1 = require("./injection/register");
6
+ async function globalDispose() {
7
+ injectables_1.kUtilsInjectables.disposables().disposeAll();
8
+ await Promise.all([injectables_1.kUtilsInjectables.dbConnection().close()]);
9
+ await injectables_1.kUtilsInjectables.promises().close().flush();
10
+ }
11
+ exports.globalDispose = globalDispose;
12
+ async function globalSetup() {
13
+ (0, register_1.registerInjectables)();
14
+ await injectables_1.kUtilsInjectables.dbConnection().wait();
15
+ }
16
+ exports.globalSetup = globalSetup;
17
+ //# sourceMappingURL=globalUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalUtils.js","sourceRoot":"","sources":["../../../src/contexts/globalUtils.ts"],"names":[],"mappings":";;;AAAA,yDAA0D;AAC1D,mDAAyD;AAElD,KAAK,UAAU,aAAa;IACjC,+BAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,+BAAiB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,+BAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;AACrD,CAAC;AAJD,sCAIC;AAEM,KAAK,UAAU,WAAW;IAC/B,IAAA,8BAAmB,GAAE,CAAC;IACtB,MAAM,+BAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAHD,kCAGC"}
@@ -0,0 +1,56 @@
1
+ import 'reflect-metadata';
2
+ import { DisposablesStore, LockStore, PromiseStore } from 'softkave-js-utils';
3
+ import { DbConnection } from '../../mongodb/connection';
4
+ import { SessionContextType } from '../SessionContext';
5
+ import { AsyncLocalStorageUtils } from '../asyncLocalStorage';
6
+ import { DataProviderUtils } from '../data/types';
7
+ import { IEmailProviderContext } from '../email/types';
8
+ import { SecretsManagerProvider } from '../encryption/types';
9
+ import { Logger } from '../logger/types';
10
+ import { SemanticProviderUtils } from '../semantic/types';
11
+ export declare const kSemanticModels: {
12
+ utils: () => SemanticProviderUtils;
13
+ };
14
+ export declare const kDataModels: {
15
+ utils: () => DataProviderUtils;
16
+ };
17
+ export declare const kUtilsInjectables: {
18
+ suppliedConfig: () => Partial<{
19
+ clientDomain: string;
20
+ dbType: import("../config").FimidaraConfigDbType;
21
+ mongoDbURI: string;
22
+ mongoDbDatabaseName: string;
23
+ jwtSecret: string;
24
+ exposeHttpServer: boolean;
25
+ httpPort: string;
26
+ exposeHttpsServer: boolean;
27
+ httpsPort: string;
28
+ httpsPublicKeyFilepath: string;
29
+ httpsPrivateKeyFilepath: string;
30
+ emailProvider: import("../config").FimidaraConfigEmailProvider;
31
+ secretsManagerProvider: import("../config").FimidaraConfigSecretsManagerProvider;
32
+ awsConfig: import("../../utils/aws").AWSConfig;
33
+ appName: string;
34
+ appDefaultEmailAddressFrom: string;
35
+ awsEmailEncoding: string;
36
+ dateFormat: string;
37
+ clientLoginLink: string;
38
+ clientSignupLink: string;
39
+ changePasswordLink: string;
40
+ verifyEmailLink: string;
41
+ test: {
42
+ awsConfig?: import("../../utils/aws").AWSConfig | undefined;
43
+ bucket?: string | undefined;
44
+ };
45
+ loggerType: import("softkave-js-utils").LoggerType;
46
+ }>;
47
+ secretsManager: () => SecretsManagerProvider;
48
+ asyncLocalStorage: () => AsyncLocalStorageUtils;
49
+ session: () => SessionContextType;
50
+ dbConnection: () => DbConnection<unknown>;
51
+ email: () => IEmailProviderContext;
52
+ promises: () => PromiseStore;
53
+ locks: () => LockStore;
54
+ disposables: () => DisposablesStore;
55
+ logger: () => Logger;
56
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kUtilsInjectables = exports.kDataModels = exports.kSemanticModels = void 0;
4
+ require("reflect-metadata");
5
+ const tsyringe_1 = require("tsyringe");
6
+ const keys_1 = require("./keys");
7
+ exports.kSemanticModels = {
8
+ utils: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.semantic.utils),
9
+ };
10
+ exports.kDataModels = {
11
+ utils: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.data.utils),
12
+ };
13
+ exports.kUtilsInjectables = {
14
+ // config: () => container.resolve<FimidaraConfig>(kInjectionKeys.config),
15
+ suppliedConfig: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.suppliedConfig),
16
+ secretsManager: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.secretsManager),
17
+ asyncLocalStorage: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.asyncLocalStorage),
18
+ session: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.session),
19
+ dbConnection: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.dbConnection),
20
+ email: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.email),
21
+ promises: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.promises),
22
+ locks: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.locks),
23
+ disposables: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.disposables),
24
+ logger: () => tsyringe_1.container.resolve(keys_1.kInjectionKeys.logger),
25
+ };
26
+ //# sourceMappingURL=injectables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectables.js","sourceRoot":"","sources":["../../../../src/contexts/injection/injectables.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAG1B,uCAAmC;AAUnC,iCAAsC;AAEzB,QAAA,eAAe,GAAG;IAC7B,KAAK,EAAE,GAAG,EAAE,CACV,oBAAS,CAAC,OAAO,CAAwB,qBAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;CAC1E,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAoB,qBAAc,CAAC,IAAI,CAAC,KAAK,CAAC;CAC7E,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,0EAA0E;IAC1E,cAAc,EAAE,GAAG,EAAE,CACnB,oBAAS,CAAC,OAAO,CAAyB,qBAAc,CAAC,cAAc,CAAC;IAC1E,cAAc,EAAE,GAAG,EAAE,CACnB,oBAAS,CAAC,OAAO,CAAyB,qBAAc,CAAC,cAAc,CAAC;IAC1E,iBAAiB,EAAE,GAAG,EAAE,CACtB,oBAAS,CAAC,OAAO,CAAyB,qBAAc,CAAC,iBAAiB,CAAC;IAC7E,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAqB,qBAAc,CAAC,OAAO,CAAC;IAC5E,YAAY,EAAE,GAAG,EAAE,CACjB,oBAAS,CAAC,OAAO,CAAe,qBAAc,CAAC,YAAY,CAAC;IAC9D,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAwB,qBAAc,CAAC,KAAK,CAAC;IAC3E,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAe,qBAAc,CAAC,QAAQ,CAAC;IACxE,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAY,qBAAc,CAAC,KAAK,CAAC;IAC/D,WAAW,EAAE,GAAG,EAAE,CAChB,oBAAS,CAAC,OAAO,CAAmB,qBAAc,CAAC,WAAW,CAAC;IACjE,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAS,CAAC,OAAO,CAAS,qBAAc,CAAC,MAAM,CAAC;CAC/D,CAAC"}