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,4 @@
1
+ declare const kMongoConstants: {
2
+ indexNotUniqueErrorCode: number;
3
+ };
4
+ export default kMongoConstants;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const kMongoConstants = {
4
+ indexNotUniqueErrorCode: 11000,
5
+ };
6
+ exports.default = kMongoConstants;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/mongodb/constants.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG;IACtB,uBAAuB,EAAE,KAAK;CAC/B,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { SchemaDefinitionProperty } from 'mongoose';
2
+ import { Agent } from '../definitions/agent';
3
+ export declare function ensureMongoTypeFields<T extends object>(schema: {
4
+ [path in keyof Required<T>]: SchemaDefinitionProperty<T[path]>;
5
+ }): { [path in keyof Required<T>]: SchemaDefinitionProperty<T[path]>; };
6
+ export declare const agentSchema: {
7
+ agentId: SchemaDefinitionProperty<string>;
8
+ agentType: SchemaDefinitionProperty<string>;
9
+ agentTokenId: SchemaDefinitionProperty<string>;
10
+ };
11
+ export declare const resourceSchema: {
12
+ resourceId: SchemaDefinitionProperty<string>;
13
+ createdAt: SchemaDefinitionProperty<number>;
14
+ lastUpdatedAt: SchemaDefinitionProperty<number>;
15
+ lastUpdatedBy: SchemaDefinitionProperty<Agent | undefined>;
16
+ createdBy: SchemaDefinitionProperty<Agent | undefined>;
17
+ deletedBy: SchemaDefinitionProperty<Agent | undefined>;
18
+ isDeleted: SchemaDefinitionProperty<boolean>;
19
+ deletedAt: SchemaDefinitionProperty<number | undefined>;
20
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resourceSchema = exports.agentSchema = exports.ensureMongoTypeFields = void 0;
4
+ // ensures all the fields defined in the type are added to the schema
5
+ // TODO: do deep check to make sure that internal schemas are checked too
6
+ // eslint-disable-next-line @typescript-eslint/ban-types
7
+ function ensureMongoTypeFields(schema) {
8
+ return schema;
9
+ }
10
+ exports.ensureMongoTypeFields = ensureMongoTypeFields;
11
+ exports.agentSchema = ensureMongoTypeFields({
12
+ agentId: { type: String },
13
+ agentType: { type: String },
14
+ agentTokenId: { type: String },
15
+ });
16
+ exports.resourceSchema = ensureMongoTypeFields({
17
+ resourceId: { type: String, unique: true, index: true },
18
+ createdAt: { type: Number, default: () => Date.now() },
19
+ lastUpdatedAt: { type: Number, default: () => Date.now() },
20
+ createdBy: { type: exports.agentSchema },
21
+ lastUpdatedBy: { type: exports.agentSchema },
22
+ isDeleted: { type: Boolean, index: true },
23
+ deletedBy: { type: exports.agentSchema },
24
+ deletedAt: { type: Number },
25
+ });
26
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mongodb/utils.ts"],"names":[],"mappings":";;;AAIA,qEAAqE;AACrE,yEAAyE;AACzE,wDAAwD;AACxD,SAAgB,qBAAqB,CAAmB,MAEvD;IACC,OAAO,MAAM,CAAC;AAChB,CAAC;AAJD,sDAIC;AAEY,QAAA,WAAW,GAAG,qBAAqB,CAAQ;IACtD,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACvB,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACzB,YAAY,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;CAC7B,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,qBAAqB,CAAW;IAC5D,UAAU,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;IACrD,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;IACpD,aAAa,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;IACxD,SAAS,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAC9B,aAAa,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAClC,SAAS,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC;IACvC,SAAS,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAC9B,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;CAC1B,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="jest" />
2
+ import { ITestEmailProviderContext } from '../types';
3
+ export default class MockTestEmailProviderContext implements ITestEmailProviderContext {
4
+ sendEmail: jest.Mock<any, any, any>;
5
+ dispose: jest.Mock<any, any, any>;
6
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class MockTestEmailProviderContext {
4
+ constructor() {
5
+ this.sendEmail = jest.fn().mockName('sendEmail');
6
+ this.dispose = jest.fn().mockName('close');
7
+ }
8
+ }
9
+ exports.default = MockTestEmailProviderContext;
10
+ //# sourceMappingURL=MockTestEmailProviderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockTestEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/MockTestEmailProviderContext.ts"],"names":[],"mappings":";;AAEA,MAAqB,4BAA4B;IAAjD;QAGE,cAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC5C,YAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CAAA;AALD,+CAKC"}
@@ -0,0 +1,6 @@
1
+ import { noopAsync } from 'softkave-js-utils';
2
+ import { IEmailProviderContext } from '../../../contexts/email/types';
3
+ export default class NoopEmailProviderContext implements IEmailProviderContext {
4
+ sendEmail: typeof noopAsync;
5
+ dispose: typeof noopAsync;
6
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const softkave_js_utils_1 = require("softkave-js-utils");
4
+ class NoopEmailProviderContext {
5
+ constructor() {
6
+ this.sendEmail = softkave_js_utils_1.noopAsync;
7
+ this.dispose = softkave_js_utils_1.noopAsync;
8
+ }
9
+ }
10
+ exports.default = NoopEmailProviderContext;
11
+ //# sourceMappingURL=NoopEmailProviderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoopEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/NoopEmailProviderContext.ts"],"names":[],"mappings":";;AAAA,yDAA4C;AAG5C,MAAqB,wBAAwB;IAA7C;QACE,cAAS,GAAG,6BAAS,CAAC;QACtB,YAAO,GAAG,6BAAS,CAAC;IACtB,CAAC;CAAA;AAHD,2CAGC"}
@@ -0,0 +1,8 @@
1
+ import { AWSConfig } from '../../../utils/aws';
2
+ import { ITestEmailProviderContext } from '../types';
3
+ export default class TestSESEmailProviderContext implements ITestEmailProviderContext {
4
+ private client;
5
+ sendEmail: ITestEmailProviderContext['sendEmail'];
6
+ dispose: ITestEmailProviderContext['dispose'];
7
+ constructor(params: AWSConfig);
8
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SESEmailProviderContext_1 = require("../../../contexts/email/SESEmailProviderContext");
4
+ const mock_1 = require("../../helpers/mock");
5
+ class TestSESEmailProviderContext {
6
+ constructor(params) {
7
+ this.client = new SESEmailProviderContext_1.SESEmailProviderContext(params);
8
+ this.sendEmail = jest.fn(this.client.sendEmail).mockName('sendEmail');
9
+ this.dispose = jest.fn(this.client.dispose).mockName('close');
10
+ (0, mock_1.mockWith)(this.client, this);
11
+ }
12
+ }
13
+ exports.default = TestSESEmailProviderContext;
14
+ //# sourceMappingURL=TestSESEmailProviderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestSESEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/TestSESEmailProviderContext.ts"],"names":[],"mappings":";;AAAA,6FAAwF;AAExF,6CAA4C;AAG5C,MAAqB,2BAA2B;IAQ9C,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,iDAAuB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAfD,8CAeC"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="jest" />
2
+ import { AnyFn } from 'softkave-js-utils';
3
+ import { IEmailProviderContext } from '../../contexts/email/types';
4
+ export type LayerJestMock<T extends {
5
+ [key: string]: any;
6
+ }> = {
7
+ [K in keyof T]: T[K] extends AnyFn ? jest.Mock<ReturnType<T[K]>, Parameters<T[K]>> : T[K];
8
+ };
9
+ export type ITestEmailProviderContext = LayerJestMock<IEmailProviderContext>;
@@ -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/testUtils/context/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { AnyFn, AnyObject, OrPromise } from 'softkave-js-utils';
2
+ export type GeneratePartialTestDataFn<T> = (index: number, indexItem: T, cache: Record<string, unknown>) => Partial<T>;
3
+ export declare const defaultGeneratePartialTestDataFn: GeneratePartialTestDataFn<unknown>;
4
+ export declare function generateTestList<T, TCache extends Record<string, unknown> = Record<string, unknown>>(generareFullDataFn: (index: number, cache: Record<string, unknown>) => T, count?: number, generatePartialDataFn?: GeneratePartialTestDataFn<T>, cache?: TCache): T[];
5
+ export type GenerateTestFieldsDef<T extends AnyObject, TOtherArgs extends unknown[] = unknown[]> = {
6
+ [K in keyof T]: AnyFn<[K, ...TOtherArgs], OrPromise<T[K]>>;
7
+ };
8
+ export declare function generateTestFields<T extends AnyObject>(def: GenerateTestFieldsDef<T>, ...otherArgs: unknown[]): Promise<Partial<T>>;
9
+ export declare enum TestFieldsPresetCombinations {
10
+ /** Generates a total of N combinations where N is the number of keys present
11
+ * in the object, and for each entry, there'd be only one field generated. E.g
12
+ * ```typescript
13
+ * const def = {one: () => 1, two: () => 2};
14
+ * const testFields = [
15
+ * {one: 1},
16
+ * {two: 2}
17
+ * ];
18
+ * ``` */
19
+ oneOfEach = "oneOfEach",
20
+ /** Generates a total of N combinations where N is the number of keys present
21
+ * in the object, and for each entry, there'd be the key and other keys that came before. E.g
22
+ * ```typescript
23
+ * const def = {one: () => 1, two: () => 2, three: () => 3};
24
+ * const testFields = [
25
+ * {one: 1},
26
+ * {one: 1, two: 2},
27
+ * {one: 1, two: 2, three: 3},
28
+ * ];
29
+ * ``` */
30
+ incrementallyAdd = "incrementallyAdd"
31
+ }
32
+ export declare function generateTestFieldsCombinations<T extends AnyObject>(def: GenerateTestFieldsDef<T>, factor: TestFieldsPresetCombinations, ...otherArgs: unknown[]): Promise<Array<Partial<T>>>;
33
+ export interface MatchGenerate<TData, TContexts extends unknown[] = unknown[]> {
34
+ matcher: AnyFn<TContexts, OrPromise<boolean>>;
35
+ generator: AnyFn<TContexts, OrPromise<TData>>;
36
+ }
37
+ export declare function matchGenerators<TData, TContexts extends unknown[]>(generators: Array<MatchGenerate<TData, TContexts>>, ...args: TContexts): Promise<TData | undefined>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchGenerators = exports.generateTestFieldsCombinations = exports.TestFieldsPresetCombinations = exports.generateTestFields = exports.generateTestList = exports.defaultGeneratePartialTestDataFn = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const softkave_js_utils_1 = require("softkave-js-utils");
6
+ const defaultGeneratePartialTestDataFn = () => ({});
7
+ exports.defaultGeneratePartialTestDataFn = defaultGeneratePartialTestDataFn;
8
+ function generateTestList(generareFullDataFn, count = 20, generatePartialDataFn = () => ({}), cache = {}) {
9
+ const data = [];
10
+ for (let i = 0; i < count; i++) {
11
+ const f = generareFullDataFn(i, cache);
12
+ const item = (0, softkave_js_utils_1.mergeObjects)(f, generatePartialDataFn(i, f, cache), {
13
+ arrayUpdateStrategy: 'replace',
14
+ });
15
+ data.push(item);
16
+ }
17
+ return data;
18
+ }
19
+ exports.generateTestList = generateTestList;
20
+ async function generateTestFields(def, ...otherArgs) {
21
+ const acc = {};
22
+ await Promise.all(Object.entries(def).map(async ([key, genFn]) => {
23
+ acc[key] = await genFn(key, ...otherArgs);
24
+ return acc;
25
+ }));
26
+ return acc;
27
+ }
28
+ exports.generateTestFields = generateTestFields;
29
+ var TestFieldsPresetCombinations;
30
+ (function (TestFieldsPresetCombinations) {
31
+ /** Generates a total of N combinations where N is the number of keys present
32
+ * in the object, and for each entry, there'd be only one field generated. E.g
33
+ * ```typescript
34
+ * const def = {one: () => 1, two: () => 2};
35
+ * const testFields = [
36
+ * {one: 1},
37
+ * {two: 2}
38
+ * ];
39
+ * ``` */
40
+ TestFieldsPresetCombinations["oneOfEach"] = "oneOfEach";
41
+ /** Generates a total of N combinations where N is the number of keys present
42
+ * in the object, and for each entry, there'd be the key and other keys that came before. E.g
43
+ * ```typescript
44
+ * const def = {one: () => 1, two: () => 2, three: () => 3};
45
+ * const testFields = [
46
+ * {one: 1},
47
+ * {one: 1, two: 2},
48
+ * {one: 1, two: 2, three: 3},
49
+ * ];
50
+ * ``` */
51
+ TestFieldsPresetCombinations["incrementallyAdd"] = "incrementallyAdd";
52
+ })(TestFieldsPresetCombinations || (exports.TestFieldsPresetCombinations = TestFieldsPresetCombinations = {}));
53
+ async function generateTestFieldsCombinations(def, factor, ...otherArgs) {
54
+ if (factor === TestFieldsPresetCombinations.incrementallyAdd) {
55
+ return await Promise.all(Object.keys(def).map((unused, index, keys) => {
56
+ const subDef = (0, lodash_1.pick)(def, keys.slice(0, index + 1));
57
+ return generateTestFields(subDef, ...otherArgs);
58
+ }));
59
+ }
60
+ else if (factor === TestFieldsPresetCombinations.oneOfEach) {
61
+ return await Promise.all(Object.keys(def).map(key => {
62
+ const subDef = (0, lodash_1.pick)(def, [key]);
63
+ return generateTestFields(subDef, ...otherArgs);
64
+ }));
65
+ }
66
+ return [];
67
+ }
68
+ exports.generateTestFieldsCombinations = generateTestFieldsCombinations;
69
+ async function matchGenerators(generators, ...args) {
70
+ for (const { generator, matcher } of generators) {
71
+ const matches = await matcher(...args);
72
+ if (matches) {
73
+ return generator(...args);
74
+ }
75
+ }
76
+ return undefined;
77
+ }
78
+ exports.matchGenerators = matchGenerators;
79
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/testUtils/generate/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare function expectContainsEveryItemInForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
2
+ /**
3
+ * Checks that `received` contains every item in `expected` using the `indexer`
4
+ * provided. The `indexer` should return a unique string for each unique item in
5
+ * the list. Also, the same unique string should be returned for the same item
6
+ * no matter how many times `indexer` is called.
7
+ */
8
+ export declare function expectContainsEveryItemIn<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
9
+ export declare function expectContainsNoneInForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
10
+ /**
11
+ * Checks that `received` contains none of the items in `expected` using the `indexer`
12
+ * provided. The `indexer` should return a unique string for each unique item in
13
+ * the list. Also, the same unique string should be returned for the same item
14
+ * no matter how many times `indexer` is called.
15
+ */
16
+ export declare function expectContainsNoneIn<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
17
+ export declare function expectContainsExactlyForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
18
+ /**
19
+ * Checks that `received` and `expected` contains the same items using the
20
+ * `indexer` provided. The `indexer` should return a unique string for each
21
+ * unique item in the list. Also, the same unique string should be returned for
22
+ * the same item no matter how many times `indexer` is called.
23
+ */
24
+ export declare function expectContainsExactly<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
25
+ export declare function expectListSubsetMatch(list01: unknown[], list02: unknown[]): void;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectListSubsetMatch = exports.expectContainsExactly = exports.expectContainsExactlyForAnyType = exports.expectContainsNoneIn = exports.expectContainsNoneInForAnyType = exports.expectContainsEveryItemIn = exports.expectContainsEveryItemInForAnyType = void 0;
4
+ const softkave_js_utils_1 = require("softkave-js-utils");
5
+ function expectContainsEveryItemInForAnyType(received, expected, receivedIndexer, expectedIndexer) {
6
+ const receivedMap = (0, softkave_js_utils_1.indexArray)(received, { indexer: receivedIndexer });
7
+ expected.forEach(item1 => {
8
+ const k = expectedIndexer(item1);
9
+ const item2 = receivedMap[k];
10
+ expect(item2).toBeTruthy();
11
+ });
12
+ }
13
+ exports.expectContainsEveryItemInForAnyType = expectContainsEveryItemInForAnyType;
14
+ /**
15
+ * Checks that `received` contains every item in `expected` using the `indexer`
16
+ * provided. The `indexer` should return a unique string for each unique item in
17
+ * the list. Also, the same unique string should be returned for the same item
18
+ * no matter how many times `indexer` is called.
19
+ */
20
+ function expectContainsEveryItemIn(received, expected, indexer) {
21
+ expectContainsEveryItemInForAnyType(received, expected, indexer, indexer);
22
+ }
23
+ exports.expectContainsEveryItemIn = expectContainsEveryItemIn;
24
+ function expectContainsNoneInForAnyType(received, expected, receivedIndexer, expectedIndexer) {
25
+ const receivedMap = (0, softkave_js_utils_1.indexArray)(received, { indexer: receivedIndexer });
26
+ expected.forEach(item1 => {
27
+ const k = expectedIndexer(item1);
28
+ const item2 = receivedMap[k];
29
+ expect(item2).toBeFalsy();
30
+ });
31
+ }
32
+ exports.expectContainsNoneInForAnyType = expectContainsNoneInForAnyType;
33
+ /**
34
+ * Checks that `received` contains none of the items in `expected` using the `indexer`
35
+ * provided. The `indexer` should return a unique string for each unique item in
36
+ * the list. Also, the same unique string should be returned for the same item
37
+ * no matter how many times `indexer` is called.
38
+ */
39
+ function expectContainsNoneIn(received, expected, indexer) {
40
+ expectContainsNoneInForAnyType(received, expected, indexer, indexer);
41
+ }
42
+ exports.expectContainsNoneIn = expectContainsNoneIn;
43
+ function expectContainsExactlyForAnyType(received, expected, receivedIndexer, expectedIndexer) {
44
+ expect(received.length).toEqual(expected.length);
45
+ expectContainsEveryItemInForAnyType(received, expected, receivedIndexer, expectedIndexer);
46
+ }
47
+ exports.expectContainsExactlyForAnyType = expectContainsExactlyForAnyType;
48
+ /**
49
+ * Checks that `received` and `expected` contains the same items using the
50
+ * `indexer` provided. The `indexer` should return a unique string for each
51
+ * unique item in the list. Also, the same unique string should be returned for
52
+ * the same item no matter how many times `indexer` is called.
53
+ */
54
+ function expectContainsExactly(received, expected, indexer) {
55
+ expectContainsExactlyForAnyType(received, expected, indexer, indexer);
56
+ }
57
+ exports.expectContainsExactly = expectContainsExactly;
58
+ function expectListSubsetMatch(list01, list02) {
59
+ const subsetLength = Math.min(list01.length, list02.length);
60
+ return expect(list01.slice(0, subsetLength)).toEqual(list02.slice(0, subsetLength));
61
+ }
62
+ exports.expectListSubsetMatch = expectListSubsetMatch;
63
+ //# sourceMappingURL=assertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/assertion.ts"],"names":[],"mappings":";;;AAAA,yDAA6C;AAE7C,SAAgB,mCAAmC,CACjD,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,WAAW,GAAG,IAAA,8BAAU,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvB,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,kFAYC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,mCAAmC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAND,8DAMC;AAED,SAAgB,8BAA8B,CAC5C,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,WAAW,GAAG,IAAA,8BAAU,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvB,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,wEAYC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAND,oDAMC;AAED,SAAgB,+BAA+B,CAC7C,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,mCAAmC,CACjC,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,eAAe,CAChB,CAAC;AACJ,CAAC;AAbD,0EAaC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACnC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAND,sDAMC;AAED,SAAgB,qBAAqB,CAAC,MAAiB,EAAE,MAAiB;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAClD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAC9B,CAAC;AACJ,CAAC;AALD,sDAKC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Readable } from 'stream';
4
+ export declare function expectBinaryEqual(body: Buffer | Readable, expectedBody: Buffer | Readable): Promise<void>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.expectBinaryEqual = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const streamToBuffer_1 = require("../../utils/streamToBuffer");
9
+ async function expectBinaryEqual(body, expectedBody) {
10
+ const [bodyBuffer, expectedBuffer] = await Promise.all([
11
+ Buffer.isBuffer(body) ? body : (0, streamToBuffer_1.streamToBuffer)(body),
12
+ Buffer.isBuffer(expectedBody) ? expectedBody : (0, streamToBuffer_1.streamToBuffer)(expectedBody),
13
+ ]);
14
+ (0, assert_1.default)(bodyBuffer);
15
+ (0, assert_1.default)(expectedBuffer);
16
+ expect(expectedBuffer.equals(bodyBuffer)).toBe(true);
17
+ }
18
+ exports.expectBinaryEqual = expectBinaryEqual;
19
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/binary.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,+DAA0D;AAEnD,KAAK,UAAU,iBAAiB,CACrC,IAAuB,EACvB,YAA+B;IAE/B,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,IAAI,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,YAAY,CAAC;KAC5E,CAAC,CAAC;IAEH,IAAA,gBAAM,EAAC,UAAU,CAAC,CAAC;IACnB,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC;IACvB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAZD,8CAYC"}
@@ -0,0 +1,3 @@
1
+ import { AnyFn } from 'softkave-js-utils';
2
+ export declare function assertErrorHasName(error: unknown, expectedErrorNames: string[]): void;
3
+ export declare function expectErrorThrown(fn: AnyFn, expected?: string[] | AnyFn<[unknown], boolean | string | void>, finallyFn?: AnyFn): Promise<void>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectErrorThrown = exports.assertErrorHasName = void 0;
4
+ const assert = require("assert");
5
+ const lodash_1 = require("lodash");
6
+ const util_1 = require("util");
7
+ function assertErrorHasName(error, expectedErrorNames) {
8
+ const errorList = (0, lodash_1.isArray)(error) ? error : [error];
9
+ const matchedTypes = expectedErrorNames.map(name => errorList.find(item => (item === null || item === void 0 ? void 0 : item.name) === name));
10
+ const missingTypes = [];
11
+ expectedErrorNames.forEach((name, i) => {
12
+ if (!matchedTypes[i]) {
13
+ missingTypes.push(name);
14
+ }
15
+ });
16
+ const missingError = new Error(`${missingTypes.join(', ')} not found in \n${(0, util_1.format)(error)}`);
17
+ assert(missingTypes.length === 0, missingError);
18
+ }
19
+ exports.assertErrorHasName = assertErrorHasName;
20
+ async function expectErrorThrown(fn, expected, finallyFn) {
21
+ try {
22
+ await fn();
23
+ assert.fail('Error not thrown');
24
+ }
25
+ catch (error) {
26
+ if ((0, lodash_1.isFunction)(expected)) {
27
+ const assertionResult = expected(error);
28
+ if (!(0, lodash_1.isUndefined)(assertionResult)) {
29
+ assert(assertionResult === true, (0, lodash_1.isString)(assertionResult) ? assertionResult : 'Expectation not met');
30
+ }
31
+ }
32
+ else if (expected) {
33
+ assertErrorHasName(error, expected);
34
+ }
35
+ }
36
+ finally {
37
+ if (finallyFn) {
38
+ finallyFn();
39
+ }
40
+ }
41
+ }
42
+ exports.expectErrorThrown = expectErrorThrown;
43
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/error.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAClC,mCAAkE;AAElE,+BAA4B;AAE5B,SAAgB,kBAAkB,CAChC,KAAc,EACd,kBAA4B;IAE5B,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACjD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,IAAI,CAAC,CAC5C,CAAC;IACF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,KAAK,CAC5B,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAA,aAAM,EAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AApBD,gDAoBC;AAEM,KAAK,UAAU,iBAAiB,CACrC,EAAS,EACT,QAA+D,EAC/D,SAAiB;IAEjB,IAAI;QACF,MAAM,EAAE,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACjC;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,IAAA,mBAAU,EAAC,QAAQ,CAAC,EAAE;YACxB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,CAAC,IAAA,oBAAW,EAAC,eAAe,CAAC,EAAE;gBACjC,MAAM,CACJ,eAAe,KAAK,IAAI,EACxB,IAAA,iBAAQ,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CACpE,CAAC;aACH;SACF;aAAM,IAAI,QAAQ,EAAE;YACnB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACrC;KACF;YAAS;QACR,IAAI,SAAS,EAAE;YACb,SAAS,EAAE,CAAC;SACb;KACF;AACH,CAAC;AA1BD,8CA0BC"}
@@ -0,0 +1,2 @@
1
+ import { AnyObject } from 'softkave-js-utils';
2
+ export declare function mockWith(source: AnyObject, dest: AnyObject): void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockWith = void 0;
4
+ const lodash_1 = require("lodash");
5
+ function mockWith(source, dest) {
6
+ for (const key in source) {
7
+ let value = source[key];
8
+ if ((0, lodash_1.isFunction)(value)) {
9
+ value = jest.fn(value).mockName(key);
10
+ }
11
+ dest[key] = value;
12
+ }
13
+ }
14
+ exports.mockWith = mockWith;
15
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/mock.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAGlC,SAAgB,QAAQ,CAAC,MAAiB,EAAE,IAAe;IACzD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,EAAE;YACrB,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACnB;AACH,CAAC;AAVD,4BAUC"}
@@ -0,0 +1,3 @@
1
+ import { Connection } from 'mongoose';
2
+ export declare function dropMongoDBAndEndConnection(connection?: Connection | null): Promise<void>;
3
+ export declare function genDbName(): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genDbName = exports.dropMongoDBAndEndConnection = void 0;
4
+ const faker_1 = require("@faker-js/faker");
5
+ async function dropMongoDBAndEndConnection(connection) {
6
+ if (!connection) {
7
+ return;
8
+ }
9
+ await connection.dropDatabase();
10
+ await connection.close();
11
+ }
12
+ exports.dropMongoDBAndEndConnection = dropMongoDBAndEndConnection;
13
+ function genDbName() {
14
+ return faker_1.faker.lorem.words(5).replace(/ /g, '_');
15
+ }
16
+ exports.genDbName = genDbName;
17
+ //# sourceMappingURL=mongodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/mongodb.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAG/B,KAAK,UAAU,2BAA2B,CAC/C,UAA8B;IAE9B,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;IAChC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AATD,kEASC;AAED,SAAgB,SAAS;IACvB,OAAO,aAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,30 @@
1
+ import { AnyFn, AnyObject, OrArray, OrPromise } from 'softkave-js-utils';
2
+ import { SemanticProviderMutationOpOptions } from '../../contexts/semantic/types';
3
+ import { ServerRequest } from '../../contexts/types';
4
+ import { Endpoint, InferEndpointParams, InferEndpointResult, PaginatedResult, PaginationQuery } from '../../endpoints/types';
5
+ export declare function mutationTest(name: string, fn: AnyFn<[SemanticProviderMutationOpOptions]>, timeout?: number): void;
6
+ export declare function completeTests(): Promise<void>;
7
+ export declare function startTesting(): void;
8
+ type TestFn = (name: string, fn: AnyFn, timeout?: number) => void;
9
+ export interface SoftkaveTest {
10
+ run: TestFn;
11
+ only: TestFn;
12
+ }
13
+ export declare const softkaveTest: SoftkaveTest;
14
+ export interface PerformPaginationTestParams<T extends Endpoint<AnyObject, PaginatedResult>> {
15
+ params: Omit<InferEndpointParams<T>, keyof PaginationQuery>;
16
+ otherTestsFn?: AnyFn<[InferEndpointResult<T>]>;
17
+ req: ServerRequest;
18
+ count: number;
19
+ pageSize?: number;
20
+ fields: OrArray<keyof InferEndpointResult<T>>;
21
+ }
22
+ export declare function performPaginationTest<T extends Endpoint<any, PaginatedResult>>(endpoint: T, props: PerformPaginationTestParams<T>): Promise<void>;
23
+ export declare function expectFields<T extends AnyObject>(resources: T[], fields: Partial<T>): void;
24
+ export interface MatchExpect<TContexts extends unknown[] = unknown[]> {
25
+ matcher: AnyFn<TContexts, OrPromise<boolean>>;
26
+ expect: AnyFn<TContexts, OrPromise<void>>;
27
+ }
28
+ export declare function matchExpects<TContexts extends unknown[]>(expects: Array<MatchExpect<TContexts>>, ...args: TContexts): Promise<void>;
29
+ export declare function testCombinations<TCombination extends AnyObject>(combinations: TCombination[], fn: AnyFn<[TCombination]>): Promise<void>;
30
+ export {};