connectwise-rest 0.23.3 → 1.0.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 (288) hide show
  1. package/.eslintrc +19 -52
  2. package/.gitattributes +1 -0
  3. package/.github/workflows/codeql-analysis.yml +70 -0
  4. package/.github/workflows/node.js.yml +42 -0
  5. package/.mocharc.json +5 -0
  6. package/.prettierrc +7 -0
  7. package/.travis.yml +4 -2
  8. package/README.md +243 -230
  9. package/api-extractor.json +364 -0
  10. package/dist/Automate/AVTemplatePoliciesAPI.d.ts +27 -0
  11. package/dist/Automate/AVTemplatePoliciesAPI.d.ts.map +1 -0
  12. package/dist/Automate/AVTemplatePoliciesAPI.js +87 -0
  13. package/dist/Automate/AVTemplatePoliciesAPI.js.map +1 -0
  14. package/dist/Automate/ClientsAPI.d.ts +34 -0
  15. package/dist/Automate/ClientsAPI.d.ts.map +1 -0
  16. package/dist/Automate/ClientsAPI.js +114 -0
  17. package/dist/Automate/ClientsAPI.js.map +1 -0
  18. package/dist/Automate/CommandsAPI.d.ts +15 -0
  19. package/dist/Automate/CommandsAPI.d.ts.map +1 -0
  20. package/dist/Automate/CommandsAPI.js +31 -0
  21. package/dist/Automate/CommandsAPI.js.map +1 -0
  22. package/dist/Automate/ComputersAPI.d.ts +94 -0
  23. package/dist/Automate/ComputersAPI.d.ts.map +1 -0
  24. package/dist/Automate/ComputersAPI.js +353 -0
  25. package/dist/Automate/ComputersAPI.js.map +1 -0
  26. package/dist/Automate/ContactsAPI.d.ts +18 -0
  27. package/dist/Automate/ContactsAPI.d.ts.map +1 -0
  28. package/dist/Automate/ContactsAPI.js +45 -0
  29. package/dist/Automate/ContactsAPI.js.map +1 -0
  30. package/dist/Automate/DataViewsAPI.d.ts +16 -0
  31. package/dist/Automate/DataViewsAPI.d.ts.map +1 -0
  32. package/dist/Automate/DataViewsAPI.js +31 -0
  33. package/dist/Automate/DataViewsAPI.js.map +1 -0
  34. package/dist/Automate/DrivesAPI.d.ts +19 -0
  35. package/dist/Automate/DrivesAPI.d.ts.map +1 -0
  36. package/dist/Automate/DrivesAPI.js +52 -0
  37. package/dist/Automate/DrivesAPI.js.map +1 -0
  38. package/dist/Automate/EventLogsAPI.d.ts +14 -0
  39. package/dist/Automate/EventLogsAPI.d.ts.map +1 -0
  40. package/dist/Automate/EventLogsAPI.js +24 -0
  41. package/dist/Automate/EventLogsAPI.js.map +1 -0
  42. package/dist/Automate/LocationsAPI.d.ts +42 -0
  43. package/dist/Automate/LocationsAPI.d.ts.map +1 -0
  44. package/dist/Automate/LocationsAPI.js +133 -0
  45. package/dist/Automate/LocationsAPI.js.map +1 -0
  46. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts +14 -0
  47. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts.map +1 -0
  48. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js +24 -0
  49. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js.map +1 -0
  50. package/dist/Automate/MonitorsAPI.d.ts +23 -0
  51. package/dist/Automate/MonitorsAPI.d.ts.map +1 -0
  52. package/dist/Automate/MonitorsAPI.js +80 -0
  53. package/dist/Automate/MonitorsAPI.js.map +1 -0
  54. package/dist/Automate/NetworkDevicesAPI.d.ts +17 -0
  55. package/dist/Automate/NetworkDevicesAPI.d.ts.map +1 -0
  56. package/dist/Automate/NetworkDevicesAPI.js +38 -0
  57. package/dist/Automate/NetworkDevicesAPI.js.map +1 -0
  58. package/dist/Automate/PatchingAPI.d.ts +27 -0
  59. package/dist/Automate/PatchingAPI.d.ts.map +1 -0
  60. package/dist/Automate/PatchingAPI.js +94 -0
  61. package/dist/Automate/PatchingAPI.js.map +1 -0
  62. package/dist/Automate/RemoteAgentAPI.d.ts +18 -0
  63. package/dist/Automate/RemoteAgentAPI.d.ts.map +1 -0
  64. package/dist/Automate/RemoteAgentAPI.js +45 -0
  65. package/dist/Automate/RemoteAgentAPI.js.map +1 -0
  66. package/dist/Automate/ScriptingAPI.d.ts +32 -0
  67. package/dist/Automate/ScriptingAPI.d.ts.map +1 -0
  68. package/dist/Automate/ScriptingAPI.js +104 -0
  69. package/dist/Automate/ScriptingAPI.js.map +1 -0
  70. package/dist/Automate/SearchesAPI.d.ts +17 -0
  71. package/dist/Automate/SearchesAPI.d.ts.map +1 -0
  72. package/dist/Automate/SearchesAPI.js +38 -0
  73. package/dist/Automate/SearchesAPI.js.map +1 -0
  74. package/dist/Automate/SystemAPI.d.ts +72 -0
  75. package/dist/Automate/SystemAPI.d.ts.map +1 -0
  76. package/dist/Automate/SystemAPI.js +268 -0
  77. package/dist/Automate/SystemAPI.js.map +1 -0
  78. package/dist/Automate/TicketsAPI.d.ts +10 -0
  79. package/dist/Automate/TicketsAPI.d.ts.map +1 -0
  80. package/dist/Automate/TicketsAPI.js +24 -0
  81. package/dist/Automate/TicketsAPI.js.map +1 -0
  82. package/dist/Automate/UserProfilesAPI.d.ts +14 -0
  83. package/dist/Automate/UserProfilesAPI.d.ts.map +1 -0
  84. package/dist/Automate/UserProfilesAPI.js +23 -0
  85. package/dist/Automate/UserProfilesAPI.js.map +1 -0
  86. package/dist/Automate.d.ts +48 -0
  87. package/dist/Automate.d.ts.map +1 -0
  88. package/dist/Automate.js +167 -0
  89. package/dist/Automate.js.map +1 -0
  90. package/dist/AutomateAPI.d.ts +96 -0
  91. package/dist/AutomateAPI.d.ts.map +1 -0
  92. package/dist/AutomateAPI.js +168 -0
  93. package/dist/AutomateAPI.js.map +1 -0
  94. package/dist/AutomateTypes.d.ts +10437 -0
  95. package/dist/AutomateTypes.d.ts.map +1 -0
  96. package/dist/AutomateTypes.js +3 -0
  97. package/dist/AutomateTypes.js.map +1 -0
  98. package/dist/BaseAPI.d.ts +13 -0
  99. package/dist/BaseAPI.d.ts.map +1 -0
  100. package/dist/BaseAPI.js +53 -0
  101. package/dist/BaseAPI.js.map +1 -0
  102. package/dist/Manage/CompanyAPI.d.ts +573 -0
  103. package/dist/Manage/CompanyAPI.d.ts.map +1 -0
  104. package/dist/Manage/CompanyAPI.js +3294 -0
  105. package/dist/Manage/CompanyAPI.js.map +1 -0
  106. package/dist/Manage/ConfigurationsAPI.d.ts +24 -0
  107. package/dist/Manage/ConfigurationsAPI.d.ts.map +1 -0
  108. package/dist/Manage/ConfigurationsAPI.js +73 -0
  109. package/dist/Manage/ConfigurationsAPI.js.map +1 -0
  110. package/dist/Manage/ExpenseAPI.d.ts +68 -0
  111. package/dist/Manage/ExpenseAPI.d.ts.map +1 -0
  112. package/dist/Manage/ExpenseAPI.js +306 -0
  113. package/dist/Manage/ExpenseAPI.js.map +1 -0
  114. package/dist/Manage/FinanceAPI.d.ts +460 -0
  115. package/dist/Manage/FinanceAPI.d.ts.map +1 -0
  116. package/dist/Manage/FinanceAPI.js +2587 -0
  117. package/dist/Manage/FinanceAPI.js.map +1 -0
  118. package/dist/Manage/MarketingAPI.d.ts +120 -0
  119. package/dist/Manage/MarketingAPI.d.ts.map +1 -0
  120. package/dist/Manage/MarketingAPI.js +629 -0
  121. package/dist/Manage/MarketingAPI.js.map +1 -0
  122. package/dist/Manage/ProcurementAPI.d.ts +373 -0
  123. package/dist/Manage/ProcurementAPI.d.ts.map +1 -0
  124. package/dist/Manage/ProcurementAPI.js +2098 -0
  125. package/dist/Manage/ProcurementAPI.js.map +1 -0
  126. package/dist/Manage/ProjectAPI.d.ts +179 -0
  127. package/dist/Manage/ProjectAPI.d.ts.map +1 -0
  128. package/dist/Manage/ProjectAPI.js +940 -0
  129. package/dist/Manage/ProjectAPI.js.map +1 -0
  130. package/dist/Manage/SalesAPI.d.ts +254 -0
  131. package/dist/Manage/SalesAPI.d.ts.map +1 -0
  132. package/dist/Manage/SalesAPI.js +1392 -0
  133. package/dist/Manage/SalesAPI.js.map +1 -0
  134. package/dist/Manage/ScheduleAPI.d.ts +111 -0
  135. package/dist/Manage/ScheduleAPI.d.ts.map +1 -0
  136. package/dist/Manage/ScheduleAPI.js +575 -0
  137. package/dist/Manage/ScheduleAPI.js.map +1 -0
  138. package/dist/Manage/ServiceAPI.d.ts +419 -0
  139. package/dist/Manage/ServiceAPI.d.ts.map +1 -0
  140. package/dist/Manage/ServiceAPI.js +2334 -0
  141. package/dist/Manage/ServiceAPI.js.map +1 -0
  142. package/dist/Manage/SystemAPI.d.ts +809 -0
  143. package/dist/Manage/SystemAPI.d.ts.map +1 -0
  144. package/dist/Manage/SystemAPI.js +4531 -0
  145. package/dist/Manage/SystemAPI.js.map +1 -0
  146. package/dist/Manage/TimeAPI.d.ts +157 -0
  147. package/dist/Manage/TimeAPI.d.ts.map +1 -0
  148. package/dist/Manage/TimeAPI.js +835 -0
  149. package/dist/Manage/TimeAPI.js.map +1 -0
  150. package/dist/Manage.d.ts +34 -0
  151. package/dist/Manage.d.ts.map +1 -0
  152. package/dist/Manage.js +127 -0
  153. package/dist/Manage.js.map +1 -0
  154. package/dist/ManageAPI.d.ts +99 -0
  155. package/dist/ManageAPI.d.ts.map +1 -0
  156. package/dist/ManageAPI.js +112 -0
  157. package/dist/ManageAPI.js.map +1 -0
  158. package/dist/ManageTypes.d.ts +91320 -0
  159. package/dist/ManageTypes.d.ts.map +1 -0
  160. package/dist/ManageTypes.js +7 -0
  161. package/dist/ManageTypes.js.map +1 -0
  162. package/dist/index.d.ts +9 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +38 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/types.d.ts +46 -0
  167. package/dist/types.d.ts.map +1 -0
  168. package/dist/types.js +21 -0
  169. package/dist/types.js.map +1 -0
  170. package/dist/utils/Callback.d.ts +67 -0
  171. package/dist/utils/Callback.d.ts.map +1 -0
  172. package/dist/utils/Callback.js +109 -0
  173. package/dist/utils/Callback.js.map +1 -0
  174. package/dist/utils/Series.d.ts +36 -0
  175. package/dist/utils/Series.d.ts.map +1 -0
  176. package/dist/utils/Series.js +64 -0
  177. package/dist/utils/Series.js.map +1 -0
  178. package/dist/utils/index.d.ts +7 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +11 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/generator/automate-generator.js +75 -0
  183. package/generator/automate-json.js +61 -0
  184. package/generator/automate-types.js +15 -0
  185. package/generator/generator.d.ts +67 -0
  186. package/generator/generator.js +255 -0
  187. package/generator/manage-generator.js +71 -0
  188. package/generator/manage-types.js +14 -0
  189. package/package.json +48 -21
  190. package/src/Automate/AVTemplatePoliciesAPI.ts +114 -0
  191. package/src/Automate/ClientsAPI.ts +161 -0
  192. package/src/Automate/CommandsAPI.ts +33 -0
  193. package/src/Automate/ComputersAPI.ts +550 -0
  194. package/src/Automate/ContactsAPI.ts +56 -0
  195. package/src/Automate/DataViewsAPI.ts +36 -0
  196. package/src/Automate/DrivesAPI.ts +74 -0
  197. package/src/Automate/EventLogsAPI.ts +25 -0
  198. package/src/Automate/LocationsAPI.ts +206 -0
  199. package/src/Automate/MaintenanceWindowDefinitionsAPI.ts +28 -0
  200. package/src/Automate/MonitorsAPI.ts +94 -0
  201. package/src/Automate/NetworkDevicesAPI.ts +44 -0
  202. package/src/Automate/PatchingAPI.ts +109 -0
  203. package/src/Automate/RemoteAgentAPI.ts +58 -0
  204. package/src/Automate/ScriptingAPI.ts +137 -0
  205. package/src/Automate/SearchesAPI.ts +42 -0
  206. package/src/Automate/SystemAPI.ts +386 -0
  207. package/src/Automate/TicketsAPI.ts +24 -0
  208. package/src/Automate/UserProfilesAPI.ts +25 -0
  209. package/src/Automate.ts +216 -0
  210. package/src/AutomateAPI.ts +144 -0
  211. package/src/AutomateTypes.ts +10492 -0
  212. package/src/BaseAPI.ts +83 -0
  213. package/src/Manage/CompanyAPI.ts +4851 -0
  214. package/src/Manage/ConfigurationsAPI.ts +107 -0
  215. package/src/Manage/ExpenseAPI.ts +395 -0
  216. package/src/Manage/FinanceAPI.ts +3851 -0
  217. package/src/Manage/MarketingAPI.ts +935 -0
  218. package/src/Manage/ProcurementAPI.ts +3044 -0
  219. package/src/Manage/ProjectAPI.ts +1400 -0
  220. package/src/Manage/SalesAPI.ts +1922 -0
  221. package/src/Manage/ScheduleAPI.ts +751 -0
  222. package/src/Manage/ServiceAPI.ts +3401 -0
  223. package/src/Manage/SystemAPI.ts +6269 -0
  224. package/src/Manage/TimeAPI.ts +1121 -0
  225. package/src/Manage.ts +152 -0
  226. package/src/ManageAPI.ts +133 -0
  227. package/src/ManageTypes.ts +91318 -0
  228. package/src/index.ts +18 -0
  229. package/src/types.ts +66 -0
  230. package/src/utils/Callback.ts +145 -0
  231. package/src/utils/Series.ts +83 -0
  232. package/src/utils/index.ts +7 -0
  233. package/swagger-errors.md +30 -0
  234. package/test/.env.example +12 -4
  235. package/test/test-utils.ts +27 -0
  236. package/test/test.ts +320 -0
  237. package/tsconfig.json +29 -0
  238. package/doc.md +0 -5984
  239. package/docs/jsdoc.json +0 -15
  240. package/index.js +0 -10
  241. package/src/CompanyAPI/Companies.js +0 -149
  242. package/src/CompanyAPI/CompanyCompanyTypeAssociations.js +0 -111
  243. package/src/CompanyAPI/CompanySites.js +0 -70
  244. package/src/CompanyAPI/CompanyTeams.js +0 -108
  245. package/src/CompanyAPI/CompanyTypeInfos.js +0 -58
  246. package/src/CompanyAPI/CompanyTypes.js +0 -52
  247. package/src/CompanyAPI/Configurations.js +0 -152
  248. package/src/CompanyAPI/ContactContactTypeAssociations.js +0 -55
  249. package/src/CompanyAPI/ContactRelationships.js +0 -36
  250. package/src/CompanyAPI/Contacts.js +0 -199
  251. package/src/CompanyAPI/index.js +0 -53
  252. package/src/ConnectWise.js +0 -339
  253. package/src/ConnectWiseRest.js +0 -512
  254. package/src/FinanceAPI/Additions.js +0 -127
  255. package/src/FinanceAPI/Adjustments.js +0 -109
  256. package/src/FinanceAPI/AgreementSites.js +0 -108
  257. package/src/FinanceAPI/Agreements.js +0 -220
  258. package/src/FinanceAPI/BoardDefaults.js +0 -109
  259. package/src/FinanceAPI/WorkRoles.js +0 -113
  260. package/src/FinanceAPI/WorkTypeExclusions.js +0 -78
  261. package/src/FinanceAPI/WorkTypes.js +0 -124
  262. package/src/FinanceAPI/index.js +0 -50
  263. package/src/ProjectAPI/Projects.js +0 -142
  264. package/src/ProjectAPI/index.js +0 -28
  265. package/src/SalesAPI/Activities.js +0 -149
  266. package/src/SalesAPI/index.js +0 -14
  267. package/src/ScheduleAPI/ScheduleEntries.js +0 -109
  268. package/src/ScheduleAPI/ScheduleTypes.js +0 -101
  269. package/src/ScheduleAPI/index.js +0 -30
  270. package/src/ServiceDeskAPI/BoardItems.js +0 -134
  271. package/src/ServiceDeskAPI/BoardSubTypes.js +0 -112
  272. package/src/ServiceDeskAPI/BoardTeams.js +0 -108
  273. package/src/ServiceDeskAPI/BoardTypes.js +0 -139
  274. package/src/ServiceDeskAPI/Boards.js +0 -100
  275. package/src/ServiceDeskAPI/Priorities.js +0 -47
  276. package/src/ServiceDeskAPI/ServiceNotes.js +0 -172
  277. package/src/ServiceDeskAPI/Statuses.js +0 -116
  278. package/src/ServiceDeskAPI/Tickets.js +0 -588
  279. package/src/ServiceDeskAPI/index.js +0 -53
  280. package/src/SystemAPI/Members.js +0 -139
  281. package/src/SystemAPI/Reports.js +0 -116
  282. package/src/SystemAPI/index.js +0 -32
  283. package/src/TimeAPI/TimeEntries.js +0 -121
  284. package/src/TimeAPI/index.js +0 -27
  285. package/src/utils/Callback.js +0 -125
  286. package/src/utils/Series.js +0 -64
  287. package/src/utils/index.js +0 -21
  288. package/test/test.js +0 -114
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * This file was auto-generated by openapi-typescript.
4
+ * Do not make direct changes to the file.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=ManageTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageTypes.js","sourceRoot":"","sources":["../src/ManageTypes.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,9 @@
1
+ import ManageAPI, { CWMOptions, CommonParameters, PatchOperation } from './ManageAPI';
2
+ import AutomateAPI, { CWAOptions } from './AutomateAPI';
3
+ import type * as types from './types';
4
+ import * as utils from './utils';
5
+ import * as AutomateAPIs from './AutomateAPI';
6
+ import * as ManageAPIs from './ManageAPI';
7
+ export type { AutomateAPIs, ManageAPIs, CWMOptions, CommonParameters, PatchOperation, CWAOptions, types, };
8
+ export { AutomateAPI, ManageAPI, utils };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACrF,OAAO,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AAEzC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,KAAK,GACN,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.utils = exports.ManageAPI = exports.AutomateAPI = void 0;
30
+ const ManageAPI_1 = __importDefault(require("./ManageAPI"));
31
+ exports.ManageAPI = ManageAPI_1.default;
32
+ const AutomateAPI_1 = __importDefault(require("./AutomateAPI"));
33
+ exports.AutomateAPI = AutomateAPI_1.default;
34
+ const utils = __importStar(require("./utils"));
35
+ exports.utils = utils;
36
+ const AutomateAPIs = __importStar(require("./AutomateAPI"));
37
+ const ManageAPIs = __importStar(require("./ManageAPI"));
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAqF;AAiB/D,oBAjBf,mBAAS,CAiBe;AAhB/B,gEAAuD;AAgB9C,sBAhBF,qBAAW,CAgBE;AAdpB,+CAAgC;AAcC,sBAAK;AAbtC,4DAA6C;AAC7C,wDAAyC"}
@@ -0,0 +1,46 @@
1
+ /// <reference types="node" />
2
+ import * as ManageAPI from './ManageAPI';
3
+ export declare enum StatusCode {
4
+ OK = 200,
5
+ Created = 201,
6
+ Accepted = 202,
7
+ NoContent = 204,
8
+ MovedPermanently = 301,
9
+ BadRequest = 400,
10
+ Unauthorized = 401,
11
+ Forbidden = 403,
12
+ NotFound = 404,
13
+ TooManyRequests = 429,
14
+ InternalServerError = 500,
15
+ BadGateway = 502,
16
+ ServiceUnavailable = 503,
17
+ GatewayTimeout = 504
18
+ }
19
+ export declare type Methods = 'get' | 'put' | 'delete' | 'post' | 'patch';
20
+ export declare type RetryOptions = {
21
+ minTimeout: number;
22
+ retries: number;
23
+ maxTimeout: number;
24
+ randomize: boolean;
25
+ factor?: number;
26
+ };
27
+ export declare type RequestOptions = {
28
+ path: string;
29
+ method?: Methods;
30
+ params?: Record<string, unknown>;
31
+ data?: Record<string, unknown> | Record<string, unknown>[] | PatchOperation[] | null | string | number | undefined;
32
+ };
33
+ export declare type LoggingLevels = 'error' | 'warn' | 'info' | 'debug';
34
+ export declare type CWLogger = (level: LoggingLevels, text: string, meta?: Record<string, unknown>) => void;
35
+ export declare type DataResponse = Record<string, unknown> | Record<string, unknown>[] | string | number | null | undefined;
36
+ export declare type ErrorResponse = {
37
+ status: number | string;
38
+ data: DataResponse;
39
+ message: string;
40
+ };
41
+ export declare type NoContentResponse = undefined;
42
+ export declare type OctetStreamResponse = Buffer;
43
+ export declare type PDFResponse = Blob;
44
+ export declare type HTMLResponse = string;
45
+ export declare type PatchOperation = ManageAPI.PatchOperation;
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AAExC,oBAAY,UAAU;IACpB,EAAE,MAAM;IACR,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,SAAS,MAAM;IACf,gBAAgB,MAAM;IACtB,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,QAAQ,MAAM;IACd,eAAe,MAAM;IACrB,mBAAmB,MAAM;IACzB,UAAU,MAAM;IAChB,kBAAkB,MAAM;IACxB,cAAc,MAAM;CACrB;AAED,oBAAY,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjE,oBAAY,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,IAAI,CAAC,EACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACzB,cAAc,EAAE,GAChB,IAAI,GACJ,MAAM,GACN,MAAM,GACN,SAAS,CAAA;CACd,CAAA;AAED,oBAAY,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAC/D,oBAAY,QAAQ,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;AAEnG,oBAAY,YAAY,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACzB,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,CAAA;AAEb,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAGD,oBAAY,iBAAiB,GAAG,SAAS,CAAA;AACzC,oBAAY,mBAAmB,GAAG,MAAM,CAAA;AACxC,oBAAY,WAAW,GAAG,IAAI,CAAA;AAC9B,oBAAY,YAAY,GAAG,MAAM,CAAA;AACjC,oBAAY,cAAc,GAAG,SAAS,CAAC,cAAc,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatusCode = void 0;
4
+ var StatusCode;
5
+ (function (StatusCode) {
6
+ StatusCode[StatusCode["OK"] = 200] = "OK";
7
+ StatusCode[StatusCode["Created"] = 201] = "Created";
8
+ StatusCode[StatusCode["Accepted"] = 202] = "Accepted";
9
+ StatusCode[StatusCode["NoContent"] = 204] = "NoContent";
10
+ StatusCode[StatusCode["MovedPermanently"] = 301] = "MovedPermanently";
11
+ StatusCode[StatusCode["BadRequest"] = 400] = "BadRequest";
12
+ StatusCode[StatusCode["Unauthorized"] = 401] = "Unauthorized";
13
+ StatusCode[StatusCode["Forbidden"] = 403] = "Forbidden";
14
+ StatusCode[StatusCode["NotFound"] = 404] = "NotFound";
15
+ StatusCode[StatusCode["TooManyRequests"] = 429] = "TooManyRequests";
16
+ StatusCode[StatusCode["InternalServerError"] = 500] = "InternalServerError";
17
+ StatusCode[StatusCode["BadGateway"] = 502] = "BadGateway";
18
+ StatusCode[StatusCode["ServiceUnavailable"] = 503] = "ServiceUnavailable";
19
+ StatusCode[StatusCode["GatewayTimeout"] = 504] = "GatewayTimeout";
20
+ })(StatusCode = exports.StatusCode || (exports.StatusCode = {}));
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAeX;AAfD,WAAY,UAAU;IACpB,yCAAQ,CAAA;IACR,mDAAa,CAAA;IACb,qDAAc,CAAA;IACd,uDAAe,CAAA;IACf,qEAAsB,CAAA;IACtB,yDAAgB,CAAA;IAChB,6DAAkB,CAAA;IAClB,uDAAe,CAAA;IACf,qDAAc,CAAA;IACd,mEAAqB,CAAA;IACrB,2EAAyB,CAAA;IACzB,yDAAgB,CAAA;IAChB,yEAAwB,CAAA;IACxB,iEAAoB,CAAA;AACtB,CAAC,EAfW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAerB"}
@@ -0,0 +1,67 @@
1
+ /// <reference types="node" />
2
+ import type { ClientRequest, ServerResponse } from 'http';
3
+ export interface ExpressRequest extends ClientRequest {
4
+ body: CallbackPayload;
5
+ headers: Record<string, string>;
6
+ }
7
+ export declare type CallbackPayload = {
8
+ Action: string;
9
+ CompanyId: string | number;
10
+ Entity: string;
11
+ FromUrl: string;
12
+ ID: string | number;
13
+ MemberId: string | number;
14
+ Metadata: {
15
+ key_url: string;
16
+ };
17
+ Type: string;
18
+ };
19
+ export declare type Entity = Record<string, unknown> | Array<Record<string, unknown>>;
20
+ /**
21
+ * Load signing key and verify the message
22
+ * @param callbackBody -
23
+ * @param contentSignature - base64 content signature req.headers[x-content-signature]
24
+ * @returns verifies callback signature
25
+ * @public
26
+ */
27
+ export declare function verifyCallback(callbackBody: CallbackPayload, contentSignature: string): Promise<boolean>;
28
+ /**
29
+ * Validate a callback body against signed key
30
+ * @param callbackBody -
31
+ * @param contentSignature -
32
+ * @param signingKey -
33
+ * @returns boolean if verified
34
+ * @public
35
+ */
36
+ export declare function verifyMessage(callbackBody: CallbackPayload, contentSignature: string, signingKey: string): boolean;
37
+ /**
38
+ *
39
+ * @example
40
+ * Express style middleware
41
+ * ```
42
+ * app.post('/your/api', cw.utils.middleware((err, req, res, verified, payload) => {
43
+ * if (err) {
44
+ * //handle error
45
+ * res.status(500).end();
46
+ * } else if (!verified) {
47
+ * // send 403 on verification failure
48
+ * res.status(403).end();
49
+ * } else {
50
+ * res.status(200).end()
51
+ * }
52
+ * const {action, id} = req.query;
53
+ * // do something with the payload
54
+ * }));
55
+ * ```
56
+ *
57
+ * @param cb - callback(err, req, res, verified, payload)
58
+ * @public
59
+ */
60
+ export declare function middleware(cb: (err: Error | null, req: ExpressRequest, res: ServerResponse, verified: boolean, payload: Entity | undefined) => void): (req: ExpressRequest, res: ServerResponse) => void;
61
+ declare const _default: {
62
+ middleware: typeof middleware;
63
+ verifyCallback: typeof verifyCallback;
64
+ verifyMessage: typeof verifyMessage;
65
+ };
66
+ export default _default;
67
+ //# sourceMappingURL=Callback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Callback.d.ts","sourceRoot":"","sources":["../../src/utils/Callback.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAEzD,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,oBAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE7E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,eAAe,EAC7B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,eAAe,EAC7B,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAKT;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,CACF,GAAG,EAAE,KAAK,GAAG,IAAI,EACjB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,KACxB,IAAI,SAMI,cAAc,OAAO,cAAc,UAyBjD;;;;;;AAED,wBAA4D"}
@@ -0,0 +1,109 @@
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.middleware = exports.verifyMessage = exports.verifyCallback = void 0;
7
+ /*
8
+ * Created by kgrube on 4/3/2019
9
+ */
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const crypto_1 = __importDefault(require("crypto"));
12
+ /**
13
+ * Load signing key and verify the message
14
+ * @param callbackBody -
15
+ * @param contentSignature - base64 content signature req.headers[x-content-signature]
16
+ * @returns verifies callback signature
17
+ * @public
18
+ */
19
+ function verifyCallback(callbackBody, contentSignature) {
20
+ return new Promise((resolve, reject) => {
21
+ if (!callbackBody || !contentSignature) {
22
+ throw new Error('callbackBody and contentSignature must be defined.');
23
+ }
24
+ const key_url = callbackBody.Metadata && callbackBody.Metadata.key_url;
25
+ axios_1.default
26
+ .get(key_url)
27
+ .then((response) => {
28
+ const body = response.data;
29
+ try {
30
+ const parsed = JSON.parse(body);
31
+ const signingKey = parsed.signing_key;
32
+ return resolve(verifyMessage(callbackBody, contentSignature, signingKey));
33
+ }
34
+ catch (parseErr) {
35
+ return reject(parseErr);
36
+ }
37
+ })
38
+ .catch((err) => reject(err));
39
+ });
40
+ }
41
+ exports.verifyCallback = verifyCallback;
42
+ /**
43
+ * Validate a callback body against signed key
44
+ * @param callbackBody -
45
+ * @param contentSignature -
46
+ * @param signingKey -
47
+ * @returns boolean if verified
48
+ * @public
49
+ */
50
+ function verifyMessage(callbackBody, contentSignature, signingKey) {
51
+ const hash = crypto_1.default.createHash('sha256').update(signingKey).digest();
52
+ const hmac = crypto_1.default.createHmac('sha256', hash);
53
+ return contentSignature === hmac.update(JSON.stringify(callbackBody)).digest('base64');
54
+ }
55
+ exports.verifyMessage = verifyMessage;
56
+ /**
57
+ *
58
+ * @example
59
+ * Express style middleware
60
+ * ```
61
+ * app.post('/your/api', cw.utils.middleware((err, req, res, verified, payload) => {
62
+ * if (err) {
63
+ * //handle error
64
+ * res.status(500).end();
65
+ * } else if (!verified) {
66
+ * // send 403 on verification failure
67
+ * res.status(403).end();
68
+ * } else {
69
+ * res.status(200).end()
70
+ * }
71
+ * const {action, id} = req.query;
72
+ * // do something with the payload
73
+ * }));
74
+ * ```
75
+ *
76
+ * @param cb - callback(err, req, res, verified, payload)
77
+ * @public
78
+ */
79
+ function middleware(cb) {
80
+ if (!cb || typeof cb !== 'function') {
81
+ throw new Error('callback must be a function.');
82
+ }
83
+ return (req, res) => {
84
+ if (!req || !req.body || !req.body.Metadata) {
85
+ return cb(new Error('callback payload is invalid.'), req, res, false, undefined);
86
+ }
87
+ const contentSignature = req.headers['x-content-signature'];
88
+ const callbackBody = req.body;
89
+ let parsedEntity;
90
+ try {
91
+ parsedEntity = JSON.parse(callbackBody.Entity);
92
+ }
93
+ catch (parseErr) {
94
+ if (parseErr instanceof Error) {
95
+ return cb(parseErr, req, res, false, undefined);
96
+ }
97
+ }
98
+ verifyCallback(callbackBody, contentSignature)
99
+ .then((verified) => {
100
+ return cb(null, req, res, verified, Object.assign(callbackBody, { Entity: parsedEntity }));
101
+ })
102
+ .catch((err) => {
103
+ return cb(err, req, res, false, undefined);
104
+ });
105
+ };
106
+ }
107
+ exports.middleware = middleware;
108
+ exports.default = { middleware, verifyCallback, verifyMessage };
109
+ //# sourceMappingURL=Callback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Callback.js","sourceRoot":"","sources":["../../src/utils/Callback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export declare type PromiseLikeFunction = (() => Promise<unknown>) | Promise<unknown> | (() => unknown) | {
2
+ then: () => void;
3
+ };
4
+ export declare type SeriesOptions = {
5
+ series: Array<PromiseLikeFunction>;
6
+ concurrent?: number;
7
+ delay?: number;
8
+ };
9
+ /**
10
+ *
11
+ * @param options - options object
12
+ * @param options.series - functions or promises to be executed
13
+ * @param options.concurrent - number of concurrent requests
14
+ * @param options.delay - number of ms between request groups
15
+ * @returns array of promise results
16
+ * @public
17
+ *
18
+ * @example
19
+ * ```javascript
20
+ * const results = await Series.all({
21
+ * series: [
22
+ * () => true,
23
+ * new Promise((resolve) => resolve(true),
24
+ * () => new Promise((resolve) => resolve(true)
25
+ * ],
26
+ * concurrent: 3,
27
+ * delay: 10,
28
+ * })
29
+ * ```
30
+ */
31
+ declare function all({ series, concurrent, delay }: SeriesOptions): Promise<Array<unknown>>;
32
+ declare const Series: {
33
+ all: typeof all;
34
+ };
35
+ export default Series;
36
+ //# sourceMappingURL=Series.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Series.d.ts","sourceRoot":"","sources":["../../src/utils/Series.ts"],"names":[],"mappings":"AAKA,oBAAY,mBAAmB,GAC3B,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GACxB,OAAO,CAAC,OAAO,CAAC,GAChB,CAAC,MAAM,OAAO,CAAC,GACf;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAExB,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAS,GAAG,CAAC,EAAE,MAAW,EAAE,UAAc,EAAE,KAAS,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAsC/F;AAED,QAAA,MAAM,MAAM;;CAAU,CAAA;AAEtB,eAAe,MAAM,CAAA"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Created by kgrube on 4/3/2019
5
+ */
6
+ const types_1 = require("util/types");
7
+ /**
8
+ *
9
+ * @param options - options object
10
+ * @param options.series - functions or promises to be executed
11
+ * @param options.concurrent - number of concurrent requests
12
+ * @param options.delay - number of ms between request groups
13
+ * @returns array of promise results
14
+ * @public
15
+ *
16
+ * @example
17
+ * ```javascript
18
+ * const results = await Series.all({
19
+ * series: [
20
+ * () => true,
21
+ * new Promise((resolve) => resolve(true),
22
+ * () => new Promise((resolve) => resolve(true)
23
+ * ],
24
+ * concurrent: 3,
25
+ * delay: 10,
26
+ * })
27
+ * ```
28
+ */
29
+ function all({ series = [], concurrent = 1, delay = 0 }) {
30
+ const promises = series.slice();
31
+ const concurrency = concurrent;
32
+ let results = null;
33
+ return new Promise((resolve, reject) => {
34
+ function next(result) {
35
+ const concurrentPromises = [];
36
+ if (!results) {
37
+ results = [];
38
+ }
39
+ else {
40
+ results = results.concat(result);
41
+ }
42
+ if (promises.length) {
43
+ while (concurrentPromises.length < concurrency && promises.length) {
44
+ let promise = promises.shift();
45
+ if (typeof promise === 'function') {
46
+ promise = promise();
47
+ }
48
+ if (!promise || !(0, types_1.isPromise)(promise)) {
49
+ promise = Promise.resolve(promise);
50
+ }
51
+ concurrentPromises.push(promise);
52
+ }
53
+ setTimeout(() => Promise.all(concurrentPromises).then(next).catch(reject), delay);
54
+ }
55
+ else {
56
+ resolve(results);
57
+ }
58
+ }
59
+ next();
60
+ });
61
+ }
62
+ const Series = { all };
63
+ exports.default = Series;
64
+ //# sourceMappingURL=Series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Series.js","sourceRoot":"","sources":["../../src/utils/Series.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,sCAAsC;AActC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAiB;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;IAC/B,MAAM,WAAW,GAAG,UAAU,CAAA;IAC9B,IAAI,OAAO,GAA0B,IAAI,CAAA;IAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,IAAI,CAAC,MAAgB;YAC5B,MAAM,kBAAkB,GAA0B,EAAE,CAAA;YAEpD,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,GAAG,EAAE,CAAA;aACb;iBAAM;gBACL,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;aACjC;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,kBAAkB,CAAC,MAAM,GAAG,WAAW,IAAI,QAAQ,CAAC,MAAM,EAAE;oBACjE,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;oBAE9B,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;wBACjC,OAAO,GAAwB,OAAO,EAAE,CAAA;qBACzC;oBAED,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,iBAAS,EAAC,OAAO,CAAC,EAAE;wBACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;qBACnC;oBAED,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBACjC;gBAED,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;aAClF;iBAAM;gBACL,OAAO,CAAC,OAAO,CAAC,CAAA;aACjB;QACH,CAAC;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAA;AAEtB,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type * as SeriesTypes from './Series';
2
+ import type * as CallbackTypes from './Callback';
3
+ import Series from './Series';
4
+ import Callback from './Callback';
5
+ export type { SeriesTypes, CallbackTypes };
6
+ export { Series, Callback };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,WAAW,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,KAAK,aAAa,MAAM,YAAY,CAAA;AAChD,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,QAAQ,MAAM,YAAY,CAAA;AAEjC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,11 @@
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.Callback = exports.Series = void 0;
7
+ const Series_1 = __importDefault(require("./Series"));
8
+ exports.Series = Series_1.default;
9
+ const Callback_1 = __importDefault(require("./Callback"));
10
+ exports.Callback = Callback_1.default;
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAEA,sDAA6B;AAIpB,iBAJF,gBAAM,CAIE;AAHf,0DAAiC;AAGhB,mBAHV,kBAAQ,CAGU"}
@@ -0,0 +1,75 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ const { getAutomateJson } = require('./automate-json')
3
+ const path = require('path')
4
+ const fs = require('fs')
5
+ const { ESLint } = require('eslint')
6
+ const { generateAPIClass } = require('./generator')
7
+
8
+ const eslint = new ESLint({ fix: true })
9
+
10
+ async function generate() {
11
+ const automate = getAutomateJson()
12
+ const {
13
+ paths,
14
+ components: { schemas },
15
+ } = automate
16
+
17
+ const sections = {}
18
+
19
+ const automateTempFolder = path.join(__dirname, 'Automate')
20
+
21
+ if (!fs.existsSync(automateTempFolder)) {
22
+ fs.mkdirSync(automateTempFolder)
23
+ }
24
+
25
+ Object.keys(paths).forEach((url) => {
26
+ const methods = paths[url]
27
+ const section = paths[url][Object.keys(methods).pop()].section
28
+
29
+ if (!sections[section]) {
30
+ sections[section] = []
31
+ }
32
+
33
+ sections[section].push({ url, methods })
34
+ })
35
+
36
+ for (const section of Object.keys(sections)) {
37
+ const apiName = section.charAt(0).toUpperCase() + section.slice(1)
38
+ const operations = sections[section]
39
+
40
+ const file = generateAPIClass({ apiName, operations, generatorType: 'Automate' })
41
+ const fileName = path.join(automateTempFolder, `${apiName}API.ts`)
42
+
43
+ if (fs.existsSync(fileName)) {
44
+ fs.rmSync(fileName)
45
+ }
46
+
47
+ console.log('Creating file', fileName)
48
+ fs.writeFileSync(fileName, file)
49
+ }
50
+
51
+ console.log('running eslint')
52
+ const results = await eslint.lintFiles(['generator/Automate/**/*.ts'])
53
+ await ESLint.outputFixes(results)
54
+ const formatter = await eslint.loadFormatter('stylish')
55
+ const resultText = formatter.format(results)
56
+ console.log('eslint results', resultText)
57
+
58
+ console.log('copying files to src/')
59
+ const files = fs.readdirSync(path.join(__dirname, 'Automate'))
60
+ files.forEach((file) => {
61
+ const automateFolder = path.join(__dirname, '../src', 'Automate')
62
+ if (!fs.existsSync(automateFolder)) {
63
+ fs.mkdirSync(automateFolder)
64
+ }
65
+ const src = path.join(automateTempFolder, file)
66
+ const dest = path.join(automateFolder, file)
67
+ console.log(`${src} ==> ${dest}`)
68
+ fs.copyFileSync(src, dest)
69
+ })
70
+ fs.rmSync(automateTempFolder, { recursive: true })
71
+ console.log('temp folder removed')
72
+ }
73
+
74
+ console.log('generating static Automate client files')
75
+ generate().then(() => console.log('done'))
@@ -0,0 +1,61 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ const fs = require('fs')
3
+ const path = require('path')
4
+
5
+ /**
6
+ * @internal
7
+ */
8
+ function getAutomateJson() {
9
+ const sections = []
10
+
11
+ const files = fs.readdirSync(path.join(__dirname, 'automate-json'))
12
+ files.forEach((fileName) => {
13
+ const section = require(path.join(__dirname, 'automate-json', fileName))
14
+
15
+ Object.keys(section.paths).forEach((path) => {
16
+ Object.keys(section.paths[path]).forEach((method) => {
17
+ const definition = section.paths[path][method]
18
+ const operationId = definition.operationId.split('_').pop()
19
+ section.paths[path][method] = {
20
+ ...definition,
21
+ // manually define api section
22
+ // clean up operation names
23
+ operationId: operationId.charAt(0).toLowerCase() + operationId.slice(1),
24
+ section: fileName.replace('.json', ''),
25
+ }
26
+ })
27
+ })
28
+ sections.push(section)
29
+ })
30
+
31
+ const automate = {
32
+ openapi: '',
33
+ info: {},
34
+ components: {
35
+ requestBodies: {},
36
+ schemas: {},
37
+ },
38
+ paths: {},
39
+ }
40
+
41
+ sections.forEach((section) => {
42
+ const {
43
+ openapi,
44
+ info,
45
+ components: { requestBodies, schemas },
46
+ paths,
47
+ } = section
48
+
49
+ automate.openapi = openapi
50
+ automate.info = { ...info }
51
+ automate.components.requestBodies = { ...requestBodies, ...automate.components.requestBodies }
52
+ automate.components.schemas = { ...schemas, ...automate.components.schemas }
53
+ automate.paths = { ...paths, ...automate.paths }
54
+ })
55
+
56
+ return automate
57
+ }
58
+
59
+ module.exports = {
60
+ getAutomateJson,
61
+ }
@@ -0,0 +1,15 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ const openapiTS = require('openapi-typescript')
3
+ const fs = require('fs')
4
+ const path = require('path')
5
+ const { getAutomateJson } = require('./automate-json.js')
6
+
7
+ const automate = await getAutomateJson()
8
+ const types = await openapiTS(automate)
9
+ fs.writeFileSync(path.join(__dirname, 'AutomateTypes.ts'), types)
10
+ fs.copyFileSync(
11
+ path.join(__dirname, 'AutomateTypes.ts'),
12
+ path.join(__dirname, '../src/Automate/AutomateTypes.ts'),
13
+ )
14
+ fs.rmSync(path.join(__dirname, 'AutomateTypes.ts'))
15
+ console.log('done')