softkave-node-utils 0.1.1 → 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 (266) 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/index.d.ts +0 -5
  22. package/build/src/contexts/data/index.js +0 -22
  23. package/build/src/contexts/data/index.js.map +0 -1
  24. package/build/src/contexts/data/types.d.ts +0 -114
  25. package/build/src/contexts/data/types.js +0 -15
  26. package/build/src/contexts/data/types.js.map +0 -1
  27. package/build/src/contexts/data/utils.d.ts +0 -2
  28. package/build/src/contexts/data/utils.js +0 -24
  29. package/build/src/contexts/data/utils.js.map +0 -1
  30. package/build/src/contexts/email/SESEmailProviderContext.d.ts +0 -9
  31. package/build/src/contexts/email/SESEmailProviderContext.js +0 -49
  32. package/build/src/contexts/email/SESEmailProviderContext.js.map +0 -1
  33. package/build/src/contexts/email/index.d.ts +0 -2
  34. package/build/src/contexts/email/index.js +0 -19
  35. package/build/src/contexts/email/index.js.map +0 -1
  36. package/build/src/contexts/email/types.d.ts +0 -13
  37. package/build/src/contexts/email/types.js +0 -3
  38. package/build/src/contexts/email/types.js.map +0 -1
  39. package/build/src/contexts/encryption/AWSSecretsManagerProvider.d.ts +0 -12
  40. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js +0 -51
  41. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js.map +0 -1
  42. package/build/src/contexts/encryption/MemorySecretsManagerProvider.d.ts +0 -12
  43. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js +0 -35
  44. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js.map +0 -1
  45. package/build/src/contexts/encryption/index.d.ts +0 -3
  46. package/build/src/contexts/encryption/index.js +0 -20
  47. package/build/src/contexts/encryption/index.js.map +0 -1
  48. package/build/src/contexts/encryption/types.d.ts +0 -29
  49. package/build/src/contexts/encryption/types.js +0 -3
  50. package/build/src/contexts/encryption/types.js.map +0 -1
  51. package/build/src/contexts/globalUtils.d.ts +0 -2
  52. package/build/src/contexts/globalUtils.js +0 -17
  53. package/build/src/contexts/globalUtils.js.map +0 -1
  54. package/build/src/contexts/index.d.ts +0 -11
  55. package/build/src/contexts/index.js +0 -28
  56. package/build/src/contexts/index.js.map +0 -1
  57. package/build/src/contexts/injection/index.d.ts +0 -3
  58. package/build/src/contexts/injection/index.js +0 -20
  59. package/build/src/contexts/injection/index.js.map +0 -1
  60. package/build/src/contexts/injection/injectables.d.ts +0 -56
  61. package/build/src/contexts/injection/injectables.js +0 -26
  62. package/build/src/contexts/injection/injectables.js.map +0 -1
  63. package/build/src/contexts/injection/keys.d.ts +0 -22
  64. package/build/src/contexts/injection/keys.js +0 -33
  65. package/build/src/contexts/injection/keys.js.map +0 -1
  66. package/build/src/contexts/injection/register.d.ts +0 -33
  67. package/build/src/contexts/injection/register.js +0 -107
  68. package/build/src/contexts/injection/register.js.map +0 -1
  69. package/build/src/contexts/logger/index.d.ts +0 -3
  70. package/build/src/contexts/logger/index.js +0 -20
  71. package/build/src/contexts/logger/index.js.map +0 -1
  72. package/build/src/contexts/logger/noop.d.ts +0 -5
  73. package/build/src/contexts/logger/noop.js +0 -12
  74. package/build/src/contexts/logger/noop.js.map +0 -1
  75. package/build/src/contexts/logger/types.d.ts +0 -11
  76. package/build/src/contexts/logger/types.js +0 -8
  77. package/build/src/contexts/logger/types.js.map +0 -1
  78. package/build/src/contexts/logger/utils.d.ts +0 -2
  79. package/build/src/contexts/logger/utils.js +0 -15
  80. package/build/src/contexts/logger/utils.js.map +0 -1
  81. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.d.ts +0 -28
  82. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js +0 -115
  83. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js.map +0 -1
  84. package/build/src/contexts/semantic/index.d.ts +0 -3
  85. package/build/src/contexts/semantic/index.js +0 -20
  86. package/build/src/contexts/semantic/index.js.map +0 -1
  87. package/build/src/contexts/semantic/types.d.ts +0 -48
  88. package/build/src/contexts/semantic/types.js +0 -3
  89. package/build/src/contexts/semantic/types.js.map +0 -1
  90. package/build/src/contexts/semantic/utils.d.ts +0 -16
  91. package/build/src/contexts/semantic/utils.js +0 -68
  92. package/build/src/contexts/semantic/utils.js.map +0 -1
  93. package/build/src/contexts/types.d.ts +0 -6
  94. package/build/src/contexts/types.js +0 -3
  95. package/build/src/contexts/types.js.map +0 -1
  96. package/build/src/definitions/agent.d.ts +0 -10
  97. package/build/src/definitions/agent.js +0 -3
  98. package/build/src/definitions/agent.js.map +0 -1
  99. package/build/src/definitions/index.d.ts +0 -4
  100. package/build/src/definitions/index.js +0 -21
  101. package/build/src/definitions/index.js.map +0 -1
  102. package/build/src/definitions/resource.d.ts +0 -17
  103. package/build/src/definitions/resource.js +0 -3
  104. package/build/src/definitions/resource.js.map +0 -1
  105. package/build/src/definitions/resourceTypes.d.ts +0 -10
  106. package/build/src/definitions/resourceTypes.js +0 -19
  107. package/build/src/definitions/resourceTypes.js.map +0 -1
  108. package/build/src/definitions/token.d.ts +0 -17
  109. package/build/src/definitions/token.js +0 -10
  110. package/build/src/definitions/token.js.map +0 -1
  111. package/build/src/endpoints/RequestData.d.ts +0 -20
  112. package/build/src/endpoints/RequestData.js +0 -52
  113. package/build/src/endpoints/RequestData.js.map +0 -1
  114. package/build/src/endpoints/constants.d.ts +0 -20
  115. package/build/src/endpoints/constants.js +0 -24
  116. package/build/src/endpoints/constants.js.map +0 -1
  117. package/build/src/endpoints/endpoints.d.ts +0 -7
  118. package/build/src/endpoints/endpoints.js +0 -33
  119. package/build/src/endpoints/endpoints.js.map +0 -1
  120. package/build/src/endpoints/endpoints.mddoc.d.ts +0 -62
  121. package/build/src/endpoints/endpoints.mddoc.js +0 -437
  122. package/build/src/endpoints/endpoints.mddoc.js.map +0 -1
  123. package/build/src/endpoints/extractors.d.ts +0 -9
  124. package/build/src/endpoints/extractors.js +0 -24
  125. package/build/src/endpoints/extractors.js.map +0 -1
  126. package/build/src/endpoints/index.d.ts +0 -10
  127. package/build/src/endpoints/index.js +0 -27
  128. package/build/src/endpoints/index.js.map +0 -1
  129. package/build/src/endpoints/jobs/index.d.ts +0 -1
  130. package/build/src/endpoints/jobs/index.js +0 -18
  131. package/build/src/endpoints/jobs/index.js.map +0 -1
  132. package/build/src/endpoints/jobs/types.d.ts +0 -6
  133. package/build/src/endpoints/jobs/types.js +0 -3
  134. package/build/src/endpoints/jobs/types.js.map +0 -1
  135. package/build/src/endpoints/pagination.d.ts +0 -3
  136. package/build/src/endpoints/pagination.js +0 -27
  137. package/build/src/endpoints/pagination.js.map +0 -1
  138. package/build/src/endpoints/types.d.ts +0 -68
  139. package/build/src/endpoints/types.js +0 -13
  140. package/build/src/endpoints/types.js.map +0 -1
  141. package/build/src/endpoints/utils.d.ts +0 -23
  142. package/build/src/endpoints/utils.js +0 -131
  143. package/build/src/endpoints/utils.js.map +0 -1
  144. package/build/src/endpoints/validation.d.ts +0 -47
  145. package/build/src/endpoints/validation.js +0 -73
  146. package/build/src/endpoints/validation.js.map +0 -1
  147. package/build/src/errors/OperationError.d.ts +0 -20
  148. package/build/src/errors/OperationError.js +0 -38
  149. package/build/src/errors/OperationError.js.map +0 -1
  150. package/build/src/errors/commonErrors.d.ts +0 -24
  151. package/build/src/errors/commonErrors.js +0 -72
  152. package/build/src/errors/commonErrors.js.map +0 -1
  153. package/build/src/errors/endpointErrors.d.ts +0 -31
  154. package/build/src/errors/endpointErrors.js +0 -83
  155. package/build/src/errors/endpointErrors.js.map +0 -1
  156. package/build/src/errors/index.d.ts +0 -6
  157. package/build/src/errors/index.js +0 -23
  158. package/build/src/errors/index.js.map +0 -1
  159. package/build/src/errors/messages.d.ts +0 -11
  160. package/build/src/errors/messages.js +0 -27
  161. package/build/src/errors/messages.js.map +0 -1
  162. package/build/src/errors/reusableErrors.d.ts +0 -12
  163. package/build/src/errors/reusableErrors.js +0 -25
  164. package/build/src/errors/reusableErrors.js.map +0 -1
  165. package/build/src/errors/sessionErrors.d.ts +0 -18
  166. package/build/src/errors/sessionErrors.js +0 -60
  167. package/build/src/errors/sessionErrors.js.map +0 -1
  168. package/build/src/index.d.ts +0 -8
  169. package/build/src/index.js +0 -25
  170. package/build/src/index.js.map +0 -1
  171. package/build/src/mddoc/index.d.ts +0 -4
  172. package/build/src/mddoc/index.js +0 -21
  173. package/build/src/mddoc/index.js.map +0 -1
  174. package/build/src/mddoc/jsSdkCodeGen.d.ts +0 -7
  175. package/build/src/mddoc/jsSdkCodeGen.js +0 -546
  176. package/build/src/mddoc/jsSdkCodeGen.js.map +0 -1
  177. package/build/src/mddoc/mddoc.d.ts +0 -206
  178. package/build/src/mddoc/mddoc.js +0 -142
  179. package/build/src/mddoc/mddoc.js.map +0 -1
  180. package/build/src/mddoc/restApiEndpointsInfoGen.d.ts +0 -10
  181. package/build/src/mddoc/restApiEndpointsInfoGen.js +0 -92
  182. package/build/src/mddoc/restApiEndpointsInfoGen.js.map +0 -1
  183. package/build/src/mddoc/restApiTableOfContentGen.d.ts +0 -2
  184. package/build/src/mddoc/restApiTableOfContentGen.js +0 -51
  185. package/build/src/mddoc/restApiTableOfContentGen.js.map +0 -1
  186. package/build/src/mongodb/connection.d.ts +0 -26
  187. package/build/src/mongodb/connection.js +0 -50
  188. package/build/src/mongodb/connection.js.map +0 -1
  189. package/build/src/mongodb/constants.d.ts +0 -4
  190. package/build/src/mongodb/constants.js +0 -7
  191. package/build/src/mongodb/constants.js.map +0 -1
  192. package/build/src/mongodb/index.d.ts +0 -3
  193. package/build/src/mongodb/index.js +0 -20
  194. package/build/src/mongodb/index.js.map +0 -1
  195. package/build/src/mongodb/utils.d.ts +0 -20
  196. package/build/src/mongodb/utils.js +0 -26
  197. package/build/src/mongodb/utils.js.map +0 -1
  198. package/build/src/testUtils/context/email/MockTestEmailProviderContext.d.ts +0 -6
  199. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js +0 -10
  200. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js.map +0 -1
  201. package/build/src/testUtils/context/email/NoopEmailProviderContext.d.ts +0 -6
  202. package/build/src/testUtils/context/email/NoopEmailProviderContext.js +0 -11
  203. package/build/src/testUtils/context/email/NoopEmailProviderContext.js.map +0 -1
  204. package/build/src/testUtils/context/email/TestSESEmailProviderContext.d.ts +0 -8
  205. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js +0 -14
  206. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js.map +0 -1
  207. package/build/src/testUtils/context/email/index.d.ts +0 -3
  208. package/build/src/testUtils/context/email/index.js +0 -20
  209. package/build/src/testUtils/context/email/index.js.map +0 -1
  210. package/build/src/testUtils/context/index.d.ts +0 -2
  211. package/build/src/testUtils/context/index.js +0 -19
  212. package/build/src/testUtils/context/index.js.map +0 -1
  213. package/build/src/testUtils/context/types.d.ts +0 -9
  214. package/build/src/testUtils/context/types.js +0 -3
  215. package/build/src/testUtils/context/types.js.map +0 -1
  216. package/build/src/testUtils/generate/index.d.ts +0 -1
  217. package/build/src/testUtils/generate/index.js +0 -18
  218. package/build/src/testUtils/generate/index.js.map +0 -1
  219. package/build/src/testUtils/generate/utils.d.ts +0 -37
  220. package/build/src/testUtils/generate/utils.js +0 -79
  221. package/build/src/testUtils/generate/utils.js.map +0 -1
  222. package/build/src/testUtils/helpers/assertion.d.ts +0 -25
  223. package/build/src/testUtils/helpers/assertion.js +0 -63
  224. package/build/src/testUtils/helpers/assertion.js.map +0 -1
  225. package/build/src/testUtils/helpers/binary.d.ts +0 -4
  226. package/build/src/testUtils/helpers/binary.js +0 -19
  227. package/build/src/testUtils/helpers/binary.js.map +0 -1
  228. package/build/src/testUtils/helpers/error.d.ts +0 -3
  229. package/build/src/testUtils/helpers/error.js +0 -43
  230. package/build/src/testUtils/helpers/error.js.map +0 -1
  231. package/build/src/testUtils/helpers/index.d.ts +0 -8
  232. package/build/src/testUtils/helpers/index.js +0 -25
  233. package/build/src/testUtils/helpers/index.js.map +0 -1
  234. package/build/src/testUtils/helpers/mock.d.ts +0 -2
  235. package/build/src/testUtils/helpers/mock.js +0 -15
  236. package/build/src/testUtils/helpers/mock.js.map +0 -1
  237. package/build/src/testUtils/helpers/mongodb.d.ts +0 -3
  238. package/build/src/testUtils/helpers/mongodb.js +0 -17
  239. package/build/src/testUtils/helpers/mongodb.js.map +0 -1
  240. package/build/src/testUtils/helpers/request.d.ts +0 -7
  241. package/build/src/testUtils/helpers/request.js +0 -29
  242. package/build/src/testUtils/helpers/request.js.map +0 -1
  243. package/build/src/testUtils/helpers/response.d.ts +0 -2
  244. package/build/src/testUtils/helpers/response.js +0 -12
  245. package/build/src/testUtils/helpers/response.js.map +0 -1
  246. package/build/src/testUtils/helpers/testFns.d.ts +0 -33
  247. package/build/src/testUtils/helpers/testFns.js +0 -105
  248. package/build/src/testUtils/helpers/testFns.js.map +0 -1
  249. package/build/src/testUtils/index.d.ts +0 -3
  250. package/build/src/testUtils/index.js +0 -20
  251. package/build/src/testUtils/index.js.map +0 -1
  252. package/build/src/testUtils/testUtils.d.ts +0 -13
  253. package/build/src/testUtils/testUtils.js +0 -50
  254. package/build/src/testUtils/testUtils.js.map +0 -1
  255. package/build/src/utils/assertion.d.ts +0 -2
  256. package/build/src/utils/assertion.js +0 -31
  257. package/build/src/utils/assertion.js.map +0 -1
  258. package/build/src/utils/aws.d.ts +0 -5
  259. package/build/src/utils/aws.js +0 -3
  260. package/build/src/utils/aws.js.map +0 -1
  261. package/build/src/utils/index.d.ts +0 -3
  262. package/build/src/utils/index.js +0 -20
  263. package/build/src/utils/index.js.map +0 -1
  264. package/build/src/utils/streamToBuffer.d.ts +0 -4
  265. package/build/src/utils/streamToBuffer.js +0 -19
  266. package/build/src/utils/streamToBuffer.js.map +0 -1
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsSdkCodeGen.js","sourceRoot":"","sources":["../../../src/mddoc/jsSdkCodeGen.ts"],"names":[],"mappings":"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"}