softkave-node-utils 0.1.0 → 0.3.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 +0 -2
  2. package/package.json +41 -47
  3. package/build/src/contexts/SessionContext.d.ts +0 -15
  4. package/build/src/contexts/SessionContext.js +0 -70
  5. package/build/src/contexts/SessionContext.js.map +0 -1
  6. package/build/src/contexts/asyncLocalStorage.d.ts +0 -27
  7. package/build/src/contexts/asyncLocalStorage.js +0 -115
  8. package/build/src/contexts/asyncLocalStorage.js.map +0 -1
  9. package/build/src/contexts/config.d.ts +0 -49
  10. package/build/src/contexts/config.js +0 -25
  11. package/build/src/contexts/config.js.map +0 -1
  12. package/build/src/contexts/data/BaseMongoDataProvider.d.ts +0 -21
  13. package/build/src/contexts/data/BaseMongoDataProvider.js +0 -157
  14. package/build/src/contexts/data/BaseMongoDataProvider.js.map +0 -1
  15. package/build/src/contexts/data/MongoDataProviderUtils.d.ts +0 -6
  16. package/build/src/contexts/data/MongoDataProviderUtils.js +0 -35
  17. package/build/src/contexts/data/MongoDataProviderUtils.js.map +0 -1
  18. package/build/src/contexts/data/dataQueryToMongoQuery.d.ts +0 -3
  19. package/build/src/contexts/data/dataQueryToMongoQuery.js +0 -85
  20. package/build/src/contexts/data/dataQueryToMongoQuery.js.map +0 -1
  21. package/build/src/contexts/data/types.d.ts +0 -114
  22. package/build/src/contexts/data/types.js +0 -15
  23. package/build/src/contexts/data/types.js.map +0 -1
  24. package/build/src/contexts/data/utils.d.ts +0 -2
  25. package/build/src/contexts/data/utils.js +0 -24
  26. package/build/src/contexts/data/utils.js.map +0 -1
  27. package/build/src/contexts/email/SESEmailProviderContext.d.ts +0 -9
  28. package/build/src/contexts/email/SESEmailProviderContext.js +0 -49
  29. package/build/src/contexts/email/SESEmailProviderContext.js.map +0 -1
  30. package/build/src/contexts/email/types.d.ts +0 -13
  31. package/build/src/contexts/email/types.js +0 -3
  32. package/build/src/contexts/email/types.js.map +0 -1
  33. package/build/src/contexts/encryption/AWSSecretsManagerProvider.d.ts +0 -12
  34. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js +0 -51
  35. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js.map +0 -1
  36. package/build/src/contexts/encryption/MemorySecretsManagerProvider.d.ts +0 -12
  37. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js +0 -35
  38. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js.map +0 -1
  39. package/build/src/contexts/encryption/types.d.ts +0 -29
  40. package/build/src/contexts/encryption/types.js +0 -3
  41. package/build/src/contexts/encryption/types.js.map +0 -1
  42. package/build/src/contexts/globalUtils.d.ts +0 -2
  43. package/build/src/contexts/globalUtils.js +0 -17
  44. package/build/src/contexts/globalUtils.js.map +0 -1
  45. package/build/src/contexts/injection/injectables.d.ts +0 -56
  46. package/build/src/contexts/injection/injectables.js +0 -26
  47. package/build/src/contexts/injection/injectables.js.map +0 -1
  48. package/build/src/contexts/injection/keys.d.ts +0 -22
  49. package/build/src/contexts/injection/keys.js +0 -33
  50. package/build/src/contexts/injection/keys.js.map +0 -1
  51. package/build/src/contexts/injection/register.d.ts +0 -33
  52. package/build/src/contexts/injection/register.js +0 -107
  53. package/build/src/contexts/injection/register.js.map +0 -1
  54. package/build/src/contexts/logger/noop.d.ts +0 -5
  55. package/build/src/contexts/logger/noop.js +0 -12
  56. package/build/src/contexts/logger/noop.js.map +0 -1
  57. package/build/src/contexts/logger/types.d.ts +0 -11
  58. package/build/src/contexts/logger/types.js +0 -8
  59. package/build/src/contexts/logger/types.js.map +0 -1
  60. package/build/src/contexts/logger/utils.d.ts +0 -2
  61. package/build/src/contexts/logger/utils.js +0 -15
  62. package/build/src/contexts/logger/utils.js.map +0 -1
  63. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.d.ts +0 -28
  64. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js +0 -115
  65. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js.map +0 -1
  66. package/build/src/contexts/semantic/types.d.ts +0 -48
  67. package/build/src/contexts/semantic/types.js +0 -3
  68. package/build/src/contexts/semantic/types.js.map +0 -1
  69. package/build/src/contexts/semantic/utils.d.ts +0 -16
  70. package/build/src/contexts/semantic/utils.js +0 -68
  71. package/build/src/contexts/semantic/utils.js.map +0 -1
  72. package/build/src/contexts/types.d.ts +0 -6
  73. package/build/src/contexts/types.js +0 -3
  74. package/build/src/contexts/types.js.map +0 -1
  75. package/build/src/definitions/agent.d.ts +0 -10
  76. package/build/src/definitions/agent.js +0 -3
  77. package/build/src/definitions/agent.js.map +0 -1
  78. package/build/src/definitions/resource.d.ts +0 -17
  79. package/build/src/definitions/resource.js +0 -3
  80. package/build/src/definitions/resource.js.map +0 -1
  81. package/build/src/definitions/resourceTypes.d.ts +0 -10
  82. package/build/src/definitions/resourceTypes.js +0 -19
  83. package/build/src/definitions/resourceTypes.js.map +0 -1
  84. package/build/src/definitions/token.d.ts +0 -17
  85. package/build/src/definitions/token.js +0 -10
  86. package/build/src/definitions/token.js.map +0 -1
  87. package/build/src/endpoints/RequestData.d.ts +0 -20
  88. package/build/src/endpoints/RequestData.js +0 -52
  89. package/build/src/endpoints/RequestData.js.map +0 -1
  90. package/build/src/endpoints/constants.d.ts +0 -20
  91. package/build/src/endpoints/constants.js +0 -24
  92. package/build/src/endpoints/constants.js.map +0 -1
  93. package/build/src/endpoints/endpoints.d.ts +0 -7
  94. package/build/src/endpoints/endpoints.js +0 -33
  95. package/build/src/endpoints/endpoints.js.map +0 -1
  96. package/build/src/endpoints/endpoints.mddoc.d.ts +0 -62
  97. package/build/src/endpoints/endpoints.mddoc.js +0 -437
  98. package/build/src/endpoints/endpoints.mddoc.js.map +0 -1
  99. package/build/src/endpoints/extractors.d.ts +0 -9
  100. package/build/src/endpoints/extractors.js +0 -24
  101. package/build/src/endpoints/extractors.js.map +0 -1
  102. package/build/src/endpoints/jobs/types.d.ts +0 -6
  103. package/build/src/endpoints/jobs/types.js +0 -3
  104. package/build/src/endpoints/jobs/types.js.map +0 -1
  105. package/build/src/endpoints/pagination.d.ts +0 -3
  106. package/build/src/endpoints/pagination.js +0 -27
  107. package/build/src/endpoints/pagination.js.map +0 -1
  108. package/build/src/endpoints/types.d.ts +0 -68
  109. package/build/src/endpoints/types.js +0 -13
  110. package/build/src/endpoints/types.js.map +0 -1
  111. package/build/src/endpoints/utils.d.ts +0 -23
  112. package/build/src/endpoints/utils.js +0 -131
  113. package/build/src/endpoints/utils.js.map +0 -1
  114. package/build/src/endpoints/validation.d.ts +0 -47
  115. package/build/src/endpoints/validation.js +0 -73
  116. package/build/src/endpoints/validation.js.map +0 -1
  117. package/build/src/errors/OperationError.d.ts +0 -20
  118. package/build/src/errors/OperationError.js +0 -38
  119. package/build/src/errors/OperationError.js.map +0 -1
  120. package/build/src/errors/commonErrors.d.ts +0 -24
  121. package/build/src/errors/commonErrors.js +0 -72
  122. package/build/src/errors/commonErrors.js.map +0 -1
  123. package/build/src/errors/endpointErrors.d.ts +0 -31
  124. package/build/src/errors/endpointErrors.js +0 -83
  125. package/build/src/errors/endpointErrors.js.map +0 -1
  126. package/build/src/errors/messages.d.ts +0 -11
  127. package/build/src/errors/messages.js +0 -27
  128. package/build/src/errors/messages.js.map +0 -1
  129. package/build/src/errors/reusableErrors.d.ts +0 -12
  130. package/build/src/errors/reusableErrors.js +0 -25
  131. package/build/src/errors/reusableErrors.js.map +0 -1
  132. package/build/src/errors/sessionErrors.d.ts +0 -18
  133. package/build/src/errors/sessionErrors.js +0 -60
  134. package/build/src/errors/sessionErrors.js.map +0 -1
  135. package/build/src/index.d.ts +0 -0
  136. package/build/src/index.js +0 -2
  137. package/build/src/index.js.map +0 -1
  138. package/build/src/mddoc/jsSdkCodeGen.d.ts +0 -7
  139. package/build/src/mddoc/jsSdkCodeGen.js +0 -546
  140. package/build/src/mddoc/jsSdkCodeGen.js.map +0 -1
  141. package/build/src/mddoc/mddoc.d.ts +0 -206
  142. package/build/src/mddoc/mddoc.js +0 -142
  143. package/build/src/mddoc/mddoc.js.map +0 -1
  144. package/build/src/mddoc/restApiEndpointsInfoGen.d.ts +0 -10
  145. package/build/src/mddoc/restApiEndpointsInfoGen.js +0 -92
  146. package/build/src/mddoc/restApiEndpointsInfoGen.js.map +0 -1
  147. package/build/src/mddoc/restApiTableOfContentGen.d.ts +0 -2
  148. package/build/src/mddoc/restApiTableOfContentGen.js +0 -51
  149. package/build/src/mddoc/restApiTableOfContentGen.js.map +0 -1
  150. package/build/src/mongodb/connection.d.ts +0 -26
  151. package/build/src/mongodb/connection.js +0 -50
  152. package/build/src/mongodb/connection.js.map +0 -1
  153. package/build/src/mongodb/constants.d.ts +0 -4
  154. package/build/src/mongodb/constants.js +0 -7
  155. package/build/src/mongodb/constants.js.map +0 -1
  156. package/build/src/mongodb/utils.d.ts +0 -20
  157. package/build/src/mongodb/utils.js +0 -26
  158. package/build/src/mongodb/utils.js.map +0 -1
  159. package/build/src/testUtils/context/email/MockTestEmailProviderContext.d.ts +0 -6
  160. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js +0 -10
  161. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js.map +0 -1
  162. package/build/src/testUtils/context/email/NoopEmailProviderContext.d.ts +0 -6
  163. package/build/src/testUtils/context/email/NoopEmailProviderContext.js +0 -11
  164. package/build/src/testUtils/context/email/NoopEmailProviderContext.js.map +0 -1
  165. package/build/src/testUtils/context/email/TestSESEmailProviderContext.d.ts +0 -8
  166. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js +0 -14
  167. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js.map +0 -1
  168. package/build/src/testUtils/context/types.d.ts +0 -9
  169. package/build/src/testUtils/context/types.js +0 -3
  170. package/build/src/testUtils/context/types.js.map +0 -1
  171. package/build/src/testUtils/generate/utils.d.ts +0 -37
  172. package/build/src/testUtils/generate/utils.js +0 -79
  173. package/build/src/testUtils/generate/utils.js.map +0 -1
  174. package/build/src/testUtils/helpers/assertion.d.ts +0 -25
  175. package/build/src/testUtils/helpers/assertion.js +0 -63
  176. package/build/src/testUtils/helpers/assertion.js.map +0 -1
  177. package/build/src/testUtils/helpers/binary.d.ts +0 -4
  178. package/build/src/testUtils/helpers/binary.js +0 -19
  179. package/build/src/testUtils/helpers/binary.js.map +0 -1
  180. package/build/src/testUtils/helpers/error.d.ts +0 -3
  181. package/build/src/testUtils/helpers/error.js +0 -43
  182. package/build/src/testUtils/helpers/error.js.map +0 -1
  183. package/build/src/testUtils/helpers/mock.d.ts +0 -2
  184. package/build/src/testUtils/helpers/mock.js +0 -15
  185. package/build/src/testUtils/helpers/mock.js.map +0 -1
  186. package/build/src/testUtils/helpers/mongodb.d.ts +0 -3
  187. package/build/src/testUtils/helpers/mongodb.js +0 -17
  188. package/build/src/testUtils/helpers/mongodb.js.map +0 -1
  189. package/build/src/testUtils/helpers/testFns.d.ts +0 -30
  190. package/build/src/testUtils/helpers/testFns.js +0 -96
  191. package/build/src/testUtils/helpers/testFns.js.map +0 -1
  192. package/build/src/testUtils/testUtils.d.ts +0 -13
  193. package/build/src/testUtils/testUtils.js +0 -50
  194. package/build/src/testUtils/testUtils.js.map +0 -1
  195. package/build/src/utils/assertion.d.ts +0 -2
  196. package/build/src/utils/assertion.js +0 -31
  197. package/build/src/utils/assertion.js.map +0 -1
  198. package/build/src/utils/aws.d.ts +0 -5
  199. package/build/src/utils/aws.js +0 -3
  200. package/build/src/utils/aws.js.map +0 -1
  201. package/build/src/utils/streamToBuffer.d.ts +0 -4
  202. package/build/src/utils/streamToBuffer.js +0 -19
  203. package/build/src/utils/streamToBuffer.js.map +0 -1
@@ -1,18 +0,0 @@
1
- import OperationError, { OperationErrorParameters } from './OperationError';
2
- export declare class InvalidCredentialsError extends OperationError {
3
- name: string;
4
- action: "loginAgain";
5
- statusCode: 401;
6
- constructor(props?: OperationErrorParameters | string);
7
- }
8
- export declare class CredentialsExpiredError extends OperationError {
9
- name: string;
10
- action: "loginAgain";
11
- statusCode: 401;
12
- constructor(props?: OperationErrorParameters | string);
13
- }
14
- export declare class PermissionDeniedError extends OperationError {
15
- name: string;
16
- statusCode: 403;
17
- constructor(props?: OperationErrorParameters | string);
18
- }
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.PermissionDeniedError = exports.CredentialsExpiredError = exports.InvalidCredentialsError = void 0;
27
- const constants_1 = require("../endpoints/constants");
28
- const types_1 = require("../endpoints/types");
29
- const OperationError_1 = __importStar(require("./OperationError"));
30
- const messages_1 = require("./messages");
31
- class InvalidCredentialsError extends OperationError_1.default {
32
- constructor(props) {
33
- super(props);
34
- this.name = 'InvalidCredentialsError';
35
- this.action = types_1.ServerRecommendedActionsMap.LoginAgain;
36
- this.statusCode = constants_1.kEndpointConstants.httpStatusCode.unauthorized;
37
- this.message = (0, OperationError_1.getErrorMessageFromParams)(props, messages_1.kAppMessages.token.invalidCredentials);
38
- }
39
- }
40
- exports.InvalidCredentialsError = InvalidCredentialsError;
41
- class CredentialsExpiredError extends OperationError_1.default {
42
- constructor(props) {
43
- super(props);
44
- this.name = 'CredentialsExpiredError';
45
- this.action = types_1.ServerRecommendedActionsMap.LoginAgain;
46
- this.statusCode = constants_1.kEndpointConstants.httpStatusCode.unauthorized;
47
- this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Credentials expired');
48
- }
49
- }
50
- exports.CredentialsExpiredError = CredentialsExpiredError;
51
- class PermissionDeniedError extends OperationError_1.default {
52
- constructor(props) {
53
- super(props);
54
- this.name = 'PermissionDeniedError';
55
- this.statusCode = constants_1.kEndpointConstants.httpStatusCode.forbidden;
56
- this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Permission denied');
57
- }
58
- }
59
- exports.PermissionDeniedError = PermissionDeniedError;
60
- //# sourceMappingURL=sessionErrors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessionErrors.js","sourceRoot":"","sources":["../../../src/errors/sessionErrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0D;AAC1D,8CAA+D;AAC/D,mEAG0B;AAC1B,yCAAwC;AAExC,MAAa,uBAAwB,SAAQ,wBAAc;IAIzD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,yBAAyB,CAAC;QACjC,WAAM,GAAG,mCAA2B,CAAC,UAAU,CAAC;QAChD,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,YAAY,CAAC;QAG1D,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EACtC,KAAK,EACL,uBAAY,CAAC,KAAK,CAAC,kBAAkB,CACtC,CAAC;IACJ,CAAC;CACF;AAXD,0DAWC;AAED,MAAa,uBAAwB,SAAQ,wBAAc;IAIzD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,yBAAyB,CAAC;QACjC,WAAM,GAAG,mCAA2B,CAAC,UAAU,CAAC;QAChD,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,YAAY,CAAC;QAG1D,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACzE,CAAC;CACF;AARD,0DAQC;AAED,MAAa,qBAAsB,SAAQ,wBAAc;IAIvD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,uBAAuB,CAAC;QAC/B,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,SAAS,CAAC;QAIvD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACvE,CAAC;CACF;AARD,sDAQC"}
File without changes
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- import { AppExportedHttpEndpoints } from '../endpoints/endpoints';
2
- export interface MddocJsSdkCodeGenParams {
3
- endpoints: AppExportedHttpEndpoints;
4
- filenamePrefix: string;
5
- dir: string;
6
- }
7
- export declare function mddocJsSdkCodeGen(params: MddocJsSdkCodeGenParams): Promise<void>;
@@ -1,546 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.mddocJsSdkCodeGen = void 0;
27
- const child_process_1 = require("child_process");
28
- const fse = __importStar(require("fs-extra"));
29
- const lodash_1 = require("lodash");
30
- const softkave_js_utils_1 = require("softkave-js-utils");
31
- const mddoc_1 = require("./mddoc");
32
- const path = require("path");
33
- const assert = require("assert");
34
- class Doc {
35
- constructor(genTypesFilename) {
36
- this.genTypesFilename = genTypesFilename;
37
- this.disclaimer = '// This file is auto-generated, do not modify directly. \n' +
38
- '// Reach out to @abayomi to suggest changes.\n';
39
- this.endpointsText = '';
40
- this.typesText = '';
41
- this.docImports = {};
42
- this.docTypeImports = {};
43
- this.classes = {};
44
- this.generatedTypeCache = new Map();
45
- }
46
- appendType(typeText) {
47
- this.typesText += typeText + '\n';
48
- return this;
49
- }
50
- appendEndpoint(endpoint) {
51
- this.endpointsText += endpoint + '\n';
52
- return this;
53
- }
54
- appendImport(importing, from) {
55
- let entry = this.docImports[from];
56
- if (!entry) {
57
- entry = { from, importing };
58
- this.docImports[from] = entry;
59
- }
60
- else {
61
- entry.importing = (0, lodash_1.uniq)(entry.importing.concat(importing));
62
- }
63
- return this;
64
- }
65
- appendTypeImport(importing, from) {
66
- let entry = this.docTypeImports[from];
67
- if (!entry) {
68
- entry = { from, importing };
69
- this.docTypeImports[from] = entry;
70
- }
71
- else {
72
- entry.importing = (0, lodash_1.uniq)(entry.importing.concat(importing));
73
- }
74
- return this;
75
- }
76
- appendImportFromGenTypes(importing) {
77
- return this.appendImport(importing, this.genTypesFilename);
78
- }
79
- appendToClass(entry, name, extendsName) {
80
- let classEntry = this.classes[name];
81
- if (!classEntry) {
82
- classEntry = { name, extendsName, entries: [entry] };
83
- this.classes[name] = classEntry;
84
- }
85
- else {
86
- if (extendsName && extendsName !== classEntry.extendsName) {
87
- classEntry.extendsName = extendsName;
88
- }
89
- classEntry.entries.push(entry);
90
- }
91
- return this;
92
- }
93
- compileText() {
94
- return (this.disclaimer +
95
- '\n' +
96
- this.compileImports() +
97
- '\n' +
98
- this.compileTypeImports() +
99
- '\n' +
100
- this.typesText +
101
- '\n' +
102
- this.endpointsText +
103
- '\n' +
104
- this.compileClasses());
105
- }
106
- compileImports() {
107
- let importsText = '';
108
- for (const from in this.docImports) {
109
- const { importing } = this.docImports[from];
110
- importsText += `import {${importing.join(', ')}} from "${from}"\n`;
111
- }
112
- return importsText;
113
- }
114
- compileTypeImports() {
115
- let importsText = '';
116
- for (const from in this.docTypeImports) {
117
- const { importing } = this.docTypeImports[from];
118
- importsText += `import type {${importing.join(', ')}} from "${from}"\n`;
119
- }
120
- return importsText;
121
- }
122
- compileClasses() {
123
- let classesText = '';
124
- for (const name in this.classes) {
125
- const { entries, extendsName } = this.classes[name];
126
- const extendsText = extendsName ? ` extends ${extendsName}` : '';
127
- classesText += `export class ${name}${extendsText} {\n`;
128
- entries.forEach(fieldEntry => {
129
- classesText += ` ${fieldEntry}\n`;
130
- });
131
- classesText += '}\n';
132
- }
133
- return classesText;
134
- }
135
- }
136
- function getEnumType(doc, item) {
137
- const name = item.getEnumName();
138
- if (name && doc.generatedTypeCache.has(name)) {
139
- return name;
140
- }
141
- const text = item
142
- .assertGetValid()
143
- .map(next => `"${next}"`)
144
- .join(' | ');
145
- if (name) {
146
- doc.generatedTypeCache.set(name, true);
147
- doc.appendType(`export type ${name} = ${text}`);
148
- return name;
149
- }
150
- return text;
151
- }
152
- function getStringType(doc, item) {
153
- var _a;
154
- return ((_a = item.getValid()) === null || _a === void 0 ? void 0 : _a.length) ? getEnumType(doc, item) : 'string';
155
- }
156
- function getNumberType() {
157
- return 'number';
158
- }
159
- function getBooleanType() {
160
- return 'boolean';
161
- }
162
- function getNullType() {
163
- return 'null';
164
- }
165
- function getUndefinedType() {
166
- return 'undefined';
167
- }
168
- function getDateType() {
169
- return 'number';
170
- }
171
- function getArrayType(doc, item) {
172
- const ofType = item.assertGetType();
173
- const typeString = getType(doc, ofType,
174
- /** asFetchResponseIfFieldBinary */ false);
175
- return `Array<${typeString}>`;
176
- }
177
- function getOrCombinationType(doc, item) {
178
- return item
179
- .assertGetTypes()
180
- .map(next => getType(doc, next, /** asFetchResponseIfFieldBinary */ false))
181
- .join(' | ');
182
- }
183
- function getBinaryType(doc, asFetchResponse) {
184
- if (asFetchResponse) {
185
- doc.appendTypeImport(['Readable'], 'stream');
186
- return 'Blob | Readable';
187
- }
188
- else {
189
- doc.appendTypeImport(['Readable'], 'stream');
190
- return 'string | Readable | Blob';
191
- }
192
- }
193
- function getType(doc, item, asFetchResponseIfFieldBinary) {
194
- if (mddoc_1.mddocAssertion.isFieldString(item)) {
195
- return getStringType(doc, mddoc_1.mddocConstruct.constructFieldString(item));
196
- }
197
- else if (mddoc_1.mddocAssertion.isFieldNumber(item)) {
198
- return getNumberType();
199
- }
200
- else if (mddoc_1.mddocAssertion.isFieldBoolean(item)) {
201
- return getBooleanType();
202
- }
203
- else if (mddoc_1.mddocAssertion.isFieldNull(item)) {
204
- return getNullType();
205
- }
206
- else if (mddoc_1.mddocAssertion.isFieldUndefined(item)) {
207
- return getUndefinedType();
208
- }
209
- else if (mddoc_1.mddocAssertion.isFieldDate(item)) {
210
- return getDateType();
211
- }
212
- else if (mddoc_1.mddocAssertion.isFieldArray(item)) {
213
- return getArrayType(doc, mddoc_1.mddocConstruct.constructFieldArray(item));
214
- }
215
- else if (mddoc_1.mddocAssertion.isFieldOrCombination(item)) {
216
- return getOrCombinationType(doc, mddoc_1.mddocConstruct.constructFieldOrCombination(item));
217
- }
218
- else if (mddoc_1.mddocAssertion.isFieldBinary(item)) {
219
- return getBinaryType(doc, asFetchResponseIfFieldBinary);
220
- }
221
- else if (mddoc_1.mddocAssertion.isFieldObject(item)) {
222
- return generateObjectDefinition(doc, mddoc_1.mddocConstruct.constructFieldObject(item), asFetchResponseIfFieldBinary);
223
- }
224
- else {
225
- return 'unknown';
226
- }
227
- }
228
- function shouldEncloseObjectKeyInQuotes(key) {
229
- return /[0-9]/.test(key[0]) || /[^A-Za-z0-9]/.test(key);
230
- }
231
- function generateObjectDefinition(doc, item, asFetchResponse, name, extraFields = []) {
232
- var _a;
233
- name = name !== null && name !== void 0 ? name : item.assertGetName();
234
- if (doc.generatedTypeCache.has(name)) {
235
- return name;
236
- }
237
- const fields = (_a = item.getFields()) !== null && _a !== void 0 ? _a : {};
238
- const entries = [];
239
- for (let key in fields) {
240
- const value = fields[key];
241
- const entryType = getType(doc, value.data, asFetchResponse);
242
- const separator = value.required ? ':' : '?:';
243
- key = shouldEncloseObjectKeyInQuotes(key) ? `"${key}"` : key;
244
- const entry = `${key}${separator} ${entryType};`;
245
- entries.push(entry);
246
- const valueData = value.data;
247
- if (mddoc_1.mddocAssertion.isFieldObject(valueData)) {
248
- generateObjectDefinition(doc, mddoc_1.mddocConstruct.constructFieldObject(valueData), asFetchResponse);
249
- }
250
- else if (mddoc_1.mddocAssertion.isFieldArray(valueData) &&
251
- mddoc_1.mddocAssertion.isFieldObject(mddoc_1.mddocConstruct.constructFieldArray(valueData).assertGetType())) {
252
- generateObjectDefinition(doc, mddoc_1.mddocConstruct
253
- .constructFieldArray(valueData)
254
- .assertGetType(), asFetchResponse);
255
- }
256
- }
257
- doc.appendType(`export type ${name} = {`);
258
- entries.concat(extraFields).forEach(entry => doc.appendType(entry));
259
- doc.appendType('}');
260
- doc.generatedTypeCache.set(name, true);
261
- return name;
262
- }
263
- function getTypesFromEndpoint(endpoint) {
264
- var _a;
265
- // Request body
266
- const sdkRequestBodyRaw = (_a = endpoint.getSdkParamsBody()) !== null && _a !== void 0 ? _a : endpoint.getRequestBody();
267
- const sdkRequestObject = mddoc_1.mddocAssertion.isFieldObject(sdkRequestBodyRaw)
268
- ? sdkRequestBodyRaw
269
- : mddoc_1.mddocAssertion.isMultipartFormdata(sdkRequestBodyRaw)
270
- ? mddoc_1.mddocConstruct
271
- .constructHttpEndpointMultipartFormdata(sdkRequestBodyRaw)
272
- .assertGetItems()
273
- : mddoc_1.mddocAssertion.isSdkParamsBody(sdkRequestBodyRaw)
274
- ? mddoc_1.mddocConstruct.constructSdkParamsBody(sdkRequestBodyRaw).assertGetDef()
275
- : undefined;
276
- // Success response body
277
- const successResponseBodyRaw = endpoint.getResponseBody();
278
- const successResponseBodyObject = mddoc_1.mddocAssertion.isFieldObject(successResponseBodyRaw)
279
- ? successResponseBodyRaw
280
- : undefined;
281
- // Success response headers
282
- const successResponseHeadersObject = endpoint.getResponseHeaders();
283
- const successObjectFields = {};
284
- const requestBodyObjectHasRequiredFields = sdkRequestObject &&
285
- mddoc_1.mddocAssertion.fieldObjectHasRequiredFields(sdkRequestObject);
286
- if (successResponseBodyObject) {
287
- if (mddoc_1.mddocAssertion.fieldObjectHasRequiredFields(successResponseBodyObject)) {
288
- successObjectFields.body = mddoc_1.mddocConstruct.constructFieldObjectField({
289
- required: true,
290
- data: successResponseBodyObject,
291
- });
292
- }
293
- else {
294
- successObjectFields.body = mddoc_1.mddocConstruct.constructFieldObjectField({
295
- required: false,
296
- data: successResponseBodyObject,
297
- });
298
- }
299
- }
300
- else if (mddoc_1.mddocAssertion.isFieldBinary(successResponseBodyRaw)) {
301
- successObjectFields.body = mddoc_1.mddocConstruct.constructFieldObjectField({
302
- required: true,
303
- data: successResponseBodyRaw,
304
- });
305
- }
306
- return {
307
- requestBodyObjectHasRequiredFields,
308
- sdkRequestBodyRaw,
309
- sdkRequestObject,
310
- mddocSdkRequestObject: sdkRequestObject
311
- ? mddoc_1.mddocConstruct.constructFieldObject(sdkRequestObject)
312
- : undefined,
313
- successResponseBodyRaw,
314
- mddocSuccessResponseBodyRaw: successResponseBodyRaw
315
- ? mddoc_1.mddocConstruct.constructFieldObject(successResponseBodyRaw)
316
- : undefined,
317
- successResponseBodyObject,
318
- mddocSuccessResponseBodyObject: successResponseBodyObject
319
- ? mddoc_1.mddocConstruct.constructFieldObject(successResponseBodyObject)
320
- : undefined,
321
- successResponseHeadersObject,
322
- mddocSuccessResponseHeadersObject: successResponseHeadersObject
323
- ? mddoc_1.mddocConstruct.constructFieldObject(successResponseHeadersObject)
324
- : undefined,
325
- };
326
- }
327
- function generateTypesFromEndpoint(doc, endpoint) {
328
- const { mddocSuccessResponseBodyObject, mddocSdkRequestObject } = getTypesFromEndpoint(endpoint);
329
- // Request body
330
- if (mddocSdkRequestObject) {
331
- generateObjectDefinition(doc, mddocSdkRequestObject, false);
332
- }
333
- // Success response body
334
- if (mddocSuccessResponseBodyObject) {
335
- generateObjectDefinition(doc, mddocSuccessResponseBodyObject,
336
- /** asFetchResponse */ true);
337
- }
338
- }
339
- function documentTypesFromEndpoint(doc, endpoint) {
340
- generateTypesFromEndpoint(doc, endpoint);
341
- }
342
- function decideIsBinaryRequest(req) {
343
- return (mddoc_1.mddocAssertion.isMultipartFormdata(req) ||
344
- (mddoc_1.mddocAssertion.isSdkParamsBody(req) && req.serializeAs === 'formdata'));
345
- }
346
- function generateEndpointCode(doc, types, className, fnName, endpoint) {
347
- var _a;
348
- const { mddocSdkRequestObject, mddocSuccessResponseBodyRaw, mddocSuccessResponseBodyObject, requestBodyObjectHasRequiredFields, sdkRequestBodyRaw, } = types;
349
- doc.appendImportFromGenTypes((0, lodash_1.compact)([
350
- mddocSdkRequestObject === null || mddocSdkRequestObject === void 0 ? void 0 : mddocSdkRequestObject.assertGetName(),
351
- mddocSuccessResponseBodyObject === null || mddocSuccessResponseBodyObject === void 0 ? void 0 : mddocSuccessResponseBodyObject.assertGetName(),
352
- ]));
353
- let endpointParamsText = '';
354
- let resultTypeName = 'undefined';
355
- const isBinaryRequest = decideIsBinaryRequest(sdkRequestBodyRaw);
356
- const isBinaryResponse = mddoc_1.mddocAssertion.isFieldBinary(mddocSuccessResponseBodyRaw);
357
- const requestBodyObjectName = mddocSdkRequestObject === null || mddocSdkRequestObject === void 0 ? void 0 : mddocSdkRequestObject.assertGetName();
358
- if (mddocSuccessResponseBodyObject) {
359
- doc.appendImportFromGenTypes([
360
- mddocSuccessResponseBodyObject.assertGetName(),
361
- ]);
362
- resultTypeName = mddocSuccessResponseBodyObject.assertGetName();
363
- }
364
- else if (isBinaryResponse) {
365
- resultTypeName = getBinaryType(doc, /** asFetchResponse */ true);
366
- }
367
- if (mddocSdkRequestObject) {
368
- if (isBinaryResponse) {
369
- if (requestBodyObjectHasRequiredFields) {
370
- endpointParamsText = `props: FimidaraEndpointWithBinaryResponseParamsRequired<${requestBodyObjectName}>`;
371
- }
372
- else {
373
- endpointParamsText = `props: FimidaraEndpointWithBinaryResponseParamsOptional<${requestBodyObjectName}>`;
374
- }
375
- }
376
- else {
377
- if (requestBodyObjectHasRequiredFields) {
378
- endpointParamsText = `props: FimidaraEndpointParamsRequired<${requestBodyObjectName}>`;
379
- }
380
- else {
381
- endpointParamsText = `props?: FimidaraEndpointParamsOptional<${requestBodyObjectName}>`;
382
- }
383
- }
384
- }
385
- else {
386
- endpointParamsText = 'props?: FimidaraEndpointParamsOptional<undefined>';
387
- }
388
- const bodyText = [];
389
- let mapping = '';
390
- const sdkBody = endpoint.getSdkParamsBody();
391
- if (isBinaryResponse) {
392
- bodyText.push('responseType: props.responseType,');
393
- }
394
- if (isBinaryRequest) {
395
- bodyText.push('formdata: props.body,');
396
- }
397
- else if (mddocSdkRequestObject) {
398
- bodyText.push('data: props?.body,');
399
- }
400
- if (mddocSdkRequestObject && sdkBody) {
401
- (0, lodash_1.forEach)((_a = mddocSdkRequestObject.fields) !== null && _a !== void 0 ? _a : {}, (value, key) => {
402
- const mapTo = sdkBody.mappings(key);
403
- if (mapTo) {
404
- const entry = `"${key}": ["${mapTo[0]}", "${String(mapTo[1])}"],`;
405
- mapping += entry;
406
- }
407
- });
408
- if (mapping.length) {
409
- mapping = `{${mapping}}`;
410
- }
411
- }
412
- const text = `${fnName} = async (${endpointParamsText}): Promise<FimidaraEndpointResult<${resultTypeName}>> => {
413
- ${mapping.length ? `const mapping = ${mapping} as const` : ''}
414
- return this.execute${isBinaryResponse ? 'Raw' : 'Json'}({
415
- ...props,
416
- ${bodyText.join('')}
417
- path: "${endpoint.assertGetBasePathname()}",
418
- method: "${endpoint.assertGetMethod().toUpperCase()}",
419
- }, props, ${mapping.length ? 'mapping' : ''});
420
- }`;
421
- doc.appendToClass(text, className, 'FimidaraEndpointsBase');
422
- }
423
- function generateEveryEndpointCode(doc, endpoints) {
424
- const leafEndpointsMap = {};
425
- const branchMap = {};
426
- endpoints.forEach(e1 => {
427
- const pathname = e1.assertGetBasePathname();
428
- // pathname looks like /v1/agentToken/addAgentToken, which should yield 4
429
- // parts, but pathSplit, removes empty strings, so we'll have ["v1",
430
- // "agentToken", "addAgentToken"]. also filter out path params.
431
- const [, ...rest] = (0, softkave_js_utils_1.pathSplit)({ input: pathname }).filter(p => !p.startsWith(':'));
432
- assert(rest.length >= 2);
433
- const fnName = (0, lodash_1.last)(rest);
434
- const groupName = (0, lodash_1.nth)(rest, rest.length - 2);
435
- const className = `${(0, lodash_1.upperFirst)(groupName)}Endpoints`;
436
- const types = getTypesFromEndpoint(e1);
437
- const key = `${className}.${fnName}`;
438
- (0, lodash_1.set)(leafEndpointsMap, key, { types, endpoint: e1 });
439
- const branches = rest.slice(0, -1);
440
- const branchesKey = branches.join('.');
441
- (0, lodash_1.set)(branchMap, branchesKey, {});
442
- });
443
- doc.appendImport([
444
- 'invokeEndpoint',
445
- 'SoftkaveMddocEndpointsBase',
446
- 'SoftkaveMddocEndpointResult',
447
- 'SoftkaveMddocEndpointParamsRequired',
448
- 'SoftkaveMddocEndpointParamsOptional',
449
- 'SoftkaveMddocEndpointWithBinaryResponseParamsRequired',
450
- 'SoftkaveMddocEndpointWithBinaryResponseParamsOptional',
451
- ], './mddoc/utils');
452
- for (const groupName in leafEndpointsMap) {
453
- const group = leafEndpointsMap[groupName];
454
- for (const fnName in group) {
455
- const { types, endpoint } = group[fnName];
456
- generateEndpointCode(doc, types, groupName, fnName, endpoint);
457
- }
458
- }
459
- function docBranch(parentName, ownName, branch) {
460
- if (!(0, softkave_js_utils_1.isObjectEmpty)(branch)) {
461
- (0, lodash_1.forEach)(branch, (b1, bName) => {
462
- docBranch(ownName, bName, b1);
463
- });
464
- }
465
- doc.appendToClass(`${ownName} = new ${(0, lodash_1.upperFirst)(ownName)}Endpoints(this.config, this);`, `${(0, lodash_1.upperFirst)(parentName)}Endpoints`, 'SoftkaveMddocEndpointsBase');
466
- }
467
- for (const ownName in branchMap) {
468
- docBranch('fimidara', ownName, branchMap[ownName]);
469
- }
470
- }
471
- function uniqEnpoints(endpoints) {
472
- const endpointNameMap = {};
473
- endpoints.forEach(e1 => {
474
- const names = (0, softkave_js_utils_1.pathSplit)({ input: e1.assertGetBasePathname() });
475
- const fnName = (0, lodash_1.last)(names);
476
- const method = e1.assertGetMethod().toLowerCase();
477
- const key = `${fnName}__${method}`;
478
- endpointNameMap[key] = key;
479
- });
480
- return endpoints.filter(e1 => {
481
- const names = (0, softkave_js_utils_1.pathSplit)({ input: e1.assertGetBasePathname() });
482
- const fnName = (0, lodash_1.last)(names);
483
- const method = e1.assertGetMethod().toLowerCase();
484
- const ownKey = `${fnName}__${method}`;
485
- const postKey = `${fnName}__post`;
486
- const getKey = `${fnName}__get`;
487
- if (ownKey === getKey && endpointNameMap[postKey]) {
488
- return false;
489
- }
490
- return true;
491
- });
492
- }
493
- async function endpointsCodeGen(params) {
494
- const { endpoints, filenamePrefix, dir } = params;
495
- const endpointsDir = path.normalize(dir + '/src');
496
- const typesFilename = `${filenamePrefix}Types`;
497
- const typesFilepath = path.normalize(endpointsDir + '/' + typesFilename + '.ts');
498
- const codesFilepath = path.normalize(endpointsDir + `/${filenamePrefix}Endpoints.ts`);
499
- const typesDoc = new Doc('./' + typesFilename);
500
- const codesDoc = new Doc('./' + typesFilename);
501
- (0, lodash_1.forEach)(endpoints, e1 => {
502
- if (e1)
503
- documentTypesFromEndpoint(typesDoc, e1.mddocHttpDefinition);
504
- });
505
- const httpEndpoints = endpoints.map(e1 => e1.mddocHttpDefinition);
506
- const uniqHttpEndpoints = uniqEnpoints(httpEndpoints);
507
- generateEveryEndpointCode(codesDoc, uniqHttpEndpoints);
508
- fse.ensureFileSync(typesFilepath);
509
- fse.ensureFileSync(codesFilepath);
510
- await Promise.all([
511
- fse.writeFile(typesFilepath, typesDoc.compileText(), { encoding: 'utf-8' }),
512
- fse.writeFile(codesFilepath, codesDoc.compileText(), { encoding: 'utf-8' }),
513
- ]);
514
- (0, child_process_1.execSync)(`npx --yes prettier --write "${typesFilepath}"`, { stdio: 'inherit' });
515
- (0, child_process_1.execSync)(`npx --yes prettier --write "${codesFilepath}"`, { stdio: 'inherit' });
516
- }
517
- async function copyPackage(params) {
518
- const { dir } = params;
519
- const fromDir = './js-sdk-base';
520
- const overwriteFiles = ['/src/mddoc'];
521
- const copyOnMissingFiles = [
522
- '/src/index.ts',
523
- '/src/constants.ts',
524
- '/.editorconfig',
525
- '/.eslintignore',
526
- '/.eslintrc.json',
527
- '/.prettierrc.js',
528
- '/jest.config.js',
529
- '/package.json',
530
- '/README.md',
531
- '/tsconfig.json',
532
- ];
533
- async function copyList(filepathList, overwrite) {
534
- await Promise.all(filepathList.map(filepath => fse.copy(path.normalize(fromDir + filepath), path.normalize(dir + filepath), { overwrite })));
535
- }
536
- await Promise.all([
537
- copyList(overwriteFiles, true),
538
- copyList(copyOnMissingFiles, true),
539
- ]);
540
- }
541
- async function mddocJsSdkCodeGen(params) {
542
- await copyPackage(params);
543
- await endpointsCodeGen(params);
544
- }
545
- exports.mddocJsSdkCodeGen = mddocJsSdkCodeGen;
546
- //# sourceMappingURL=jsSdkCodeGen.js.map