airbyte-faros-destination 0.0.1

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 (744) hide show
  1. package/README.md +178 -0
  2. package/lib/common/graphql-client.d.ts +134 -0
  3. package/lib/common/graphql-client.js +712 -0
  4. package/lib/common/graphql-client.js.map +1 -0
  5. package/lib/common/graphql-writer.d.ts +19 -0
  6. package/lib/common/graphql-writer.js +46 -0
  7. package/lib/common/graphql-writer.js.map +1 -0
  8. package/lib/common/types.d.ts +50 -0
  9. package/lib/common/types.js +20 -0
  10. package/lib/common/types.js.map +1 -0
  11. package/lib/common/write-stats.d.ts +16 -0
  12. package/lib/common/write-stats.js +49 -0
  13. package/lib/common/write-stats.js.map +1 -0
  14. package/lib/community/hasura-backend.d.ts +8 -0
  15. package/lib/community/hasura-backend.js +31 -0
  16. package/lib/community/hasura-backend.js.map +1 -0
  17. package/lib/converters/agileaccelerator/agileaccelerator_types.d.ts +315 -0
  18. package/lib/converters/agileaccelerator/agileaccelerator_types.js +82 -0
  19. package/lib/converters/agileaccelerator/agileaccelerator_types.js.map +1 -0
  20. package/lib/converters/agileaccelerator/common.d.ts +64 -0
  21. package/lib/converters/agileaccelerator/common.js +168 -0
  22. package/lib/converters/agileaccelerator/common.js.map +1 -0
  23. package/lib/converters/agileaccelerator/works.d.ts +7 -0
  24. package/lib/converters/agileaccelerator/works.js +106 -0
  25. package/lib/converters/agileaccelerator/works.js.map +1 -0
  26. package/lib/converters/asana/common.d.ts +40 -0
  27. package/lib/converters/asana/common.js +70 -0
  28. package/lib/converters/asana/common.js.map +1 -0
  29. package/lib/converters/asana/projects.d.ts +7 -0
  30. package/lib/converters/asana/projects.js +30 -0
  31. package/lib/converters/asana/projects.js.map +1 -0
  32. package/lib/converters/asana/sections.d.ts +7 -0
  33. package/lib/converters/asana/sections.js +31 -0
  34. package/lib/converters/asana/sections.js.map +1 -0
  35. package/lib/converters/asana/tags.d.ts +7 -0
  36. package/lib/converters/asana/tags.js +23 -0
  37. package/lib/converters/asana/tags.js.map +1 -0
  38. package/lib/converters/asana/tasks.d.ts +13 -0
  39. package/lib/converters/asana/tasks.js +157 -0
  40. package/lib/converters/asana/tasks.js.map +1 -0
  41. package/lib/converters/asana/users.d.ts +7 -0
  42. package/lib/converters/asana/users.js +17 -0
  43. package/lib/converters/asana/users.js.map +1 -0
  44. package/lib/converters/azure-repos/commits.d.ts +7 -0
  45. package/lib/converters/azure-repos/commits.js +60 -0
  46. package/lib/converters/azure-repos/commits.js.map +1 -0
  47. package/lib/converters/azure-repos/common.d.ts +27 -0
  48. package/lib/converters/azure-repos/common.js +86 -0
  49. package/lib/converters/azure-repos/common.js.map +1 -0
  50. package/lib/converters/azure-repos/models.d.ts +224 -0
  51. package/lib/converters/azure-repos/models.js +33 -0
  52. package/lib/converters/azure-repos/models.js.map +1 -0
  53. package/lib/converters/azure-repos/pull_requests.d.ts +7 -0
  54. package/lib/converters/azure-repos/pull_requests.js +92 -0
  55. package/lib/converters/azure-repos/pull_requests.js.map +1 -0
  56. package/lib/converters/azure-repos/repositories.d.ts +8 -0
  57. package/lib/converters/azure-repos/repositories.js +84 -0
  58. package/lib/converters/azure-repos/repositories.js.map +1 -0
  59. package/lib/converters/azure-repos/users.d.ts +7 -0
  60. package/lib/converters/azure-repos/users.js +45 -0
  61. package/lib/converters/azure-repos/users.js.map +1 -0
  62. package/lib/converters/azure-workitems/boards.d.ts +7 -0
  63. package/lib/converters/azure-workitems/boards.js +26 -0
  64. package/lib/converters/azure-workitems/boards.js.map +1 -0
  65. package/lib/converters/azure-workitems/common.d.ts +8 -0
  66. package/lib/converters/azure-workitems/common.js +18 -0
  67. package/lib/converters/azure-workitems/common.js.map +1 -0
  68. package/lib/converters/azure-workitems/iterations.d.ts +7 -0
  69. package/lib/converters/azure-workitems/iterations.js +27 -0
  70. package/lib/converters/azure-workitems/iterations.js.map +1 -0
  71. package/lib/converters/azure-workitems/models.d.ts +103 -0
  72. package/lib/converters/azure-workitems/models.js +11 -0
  73. package/lib/converters/azure-workitems/models.js.map +1 -0
  74. package/lib/converters/azure-workitems/users.d.ts +7 -0
  75. package/lib/converters/azure-workitems/users.js +27 -0
  76. package/lib/converters/azure-workitems/users.js.map +1 -0
  77. package/lib/converters/azure-workitems/workitems.d.ts +7 -0
  78. package/lib/converters/azure-workitems/workitems.js +55 -0
  79. package/lib/converters/azure-workitems/workitems.js.map +1 -0
  80. package/lib/converters/azureactivedirectory/common.d.ts +8 -0
  81. package/lib/converters/azureactivedirectory/common.js +18 -0
  82. package/lib/converters/azureactivedirectory/common.js.map +1 -0
  83. package/lib/converters/azureactivedirectory/groups.d.ts +7 -0
  84. package/lib/converters/azureactivedirectory/groups.js +50 -0
  85. package/lib/converters/azureactivedirectory/groups.js.map +1 -0
  86. package/lib/converters/azureactivedirectory/models.d.ts +61 -0
  87. package/lib/converters/azureactivedirectory/models.js +3 -0
  88. package/lib/converters/azureactivedirectory/models.js.map +1 -0
  89. package/lib/converters/azureactivedirectory/users.d.ts +8 -0
  90. package/lib/converters/azureactivedirectory/users.js +84 -0
  91. package/lib/converters/azureactivedirectory/users.js.map +1 -0
  92. package/lib/converters/azurepipeline/builds.d.ts +7 -0
  93. package/lib/converters/azurepipeline/builds.js +91 -0
  94. package/lib/converters/azurepipeline/builds.js.map +1 -0
  95. package/lib/converters/azurepipeline/common.d.ts +33 -0
  96. package/lib/converters/azurepipeline/common.js +150 -0
  97. package/lib/converters/azurepipeline/common.js.map +1 -0
  98. package/lib/converters/azurepipeline/models.d.ts +294 -0
  99. package/lib/converters/azurepipeline/models.js +44 -0
  100. package/lib/converters/azurepipeline/models.js.map +1 -0
  101. package/lib/converters/azurepipeline/pipelines.d.ts +8 -0
  102. package/lib/converters/azurepipeline/pipelines.js +47 -0
  103. package/lib/converters/azurepipeline/pipelines.js.map +1 -0
  104. package/lib/converters/azurepipeline/releases.d.ts +7 -0
  105. package/lib/converters/azurepipeline/releases.js +35 -0
  106. package/lib/converters/azurepipeline/releases.js.map +1 -0
  107. package/lib/converters/backlog/common.d.ts +20 -0
  108. package/lib/converters/backlog/common.js +60 -0
  109. package/lib/converters/backlog/common.js.map +1 -0
  110. package/lib/converters/backlog/issues.d.ts +7 -0
  111. package/lib/converters/backlog/issues.js +120 -0
  112. package/lib/converters/backlog/issues.js.map +1 -0
  113. package/lib/converters/backlog/models.d.ts +156 -0
  114. package/lib/converters/backlog/models.js +24 -0
  115. package/lib/converters/backlog/models.js.map +1 -0
  116. package/lib/converters/backlog/projects.d.ts +7 -0
  117. package/lib/converters/backlog/projects.js +79 -0
  118. package/lib/converters/backlog/projects.js.map +1 -0
  119. package/lib/converters/backlog/users.d.ts +7 -0
  120. package/lib/converters/backlog/users.js +27 -0
  121. package/lib/converters/backlog/users.js.map +1 -0
  122. package/lib/converters/bamboohr/common.d.ts +15 -0
  123. package/lib/converters/bamboohr/common.js +30 -0
  124. package/lib/converters/bamboohr/common.js.map +1 -0
  125. package/lib/converters/bamboohr/models.d.ts +34 -0
  126. package/lib/converters/bamboohr/models.js +3 -0
  127. package/lib/converters/bamboohr/models.js.map +1 -0
  128. package/lib/converters/bamboohr/users.d.ts +11 -0
  129. package/lib/converters/bamboohr/users.js +165 -0
  130. package/lib/converters/bamboohr/users.js.map +1 -0
  131. package/lib/converters/bitbucket/branches.d.ts +7 -0
  132. package/lib/converters/bitbucket/branches.js +33 -0
  133. package/lib/converters/bitbucket/branches.js.map +1 -0
  134. package/lib/converters/bitbucket/commits.d.ts +8 -0
  135. package/lib/converters/bitbucket/commits.js +56 -0
  136. package/lib/converters/bitbucket/commits.js.map +1 -0
  137. package/lib/converters/bitbucket/common.d.ts +39 -0
  138. package/lib/converters/bitbucket/common.js +87 -0
  139. package/lib/converters/bitbucket/common.js.map +1 -0
  140. package/lib/converters/bitbucket/deployments.d.ts +12 -0
  141. package/lib/converters/bitbucket/deployments.js +113 -0
  142. package/lib/converters/bitbucket/deployments.js.map +1 -0
  143. package/lib/converters/bitbucket/issues.d.ts +12 -0
  144. package/lib/converters/bitbucket/issues.js +129 -0
  145. package/lib/converters/bitbucket/issues.js.map +1 -0
  146. package/lib/converters/bitbucket/pipeline_steps.d.ts +10 -0
  147. package/lib/converters/bitbucket/pipeline_steps.js +84 -0
  148. package/lib/converters/bitbucket/pipeline_steps.js.map +1 -0
  149. package/lib/converters/bitbucket/pipelines.d.ts +8 -0
  150. package/lib/converters/bitbucket/pipelines.js +96 -0
  151. package/lib/converters/bitbucket/pipelines.js.map +1 -0
  152. package/lib/converters/bitbucket/pull_request_activities.d.ts +12 -0
  153. package/lib/converters/bitbucket/pull_request_activities.js +113 -0
  154. package/lib/converters/bitbucket/pull_request_activities.js.map +1 -0
  155. package/lib/converters/bitbucket/pull_requests.d.ts +10 -0
  156. package/lib/converters/bitbucket/pull_requests.js +98 -0
  157. package/lib/converters/bitbucket/pull_requests.js.map +1 -0
  158. package/lib/converters/bitbucket/repositories.d.ts +7 -0
  159. package/lib/converters/bitbucket/repositories.js +57 -0
  160. package/lib/converters/bitbucket/repositories.js.map +1 -0
  161. package/lib/converters/bitbucket/types.d.ts +662 -0
  162. package/lib/converters/bitbucket/types.js +3 -0
  163. package/lib/converters/bitbucket/types.js.map +1 -0
  164. package/lib/converters/bitbucket/workspace_users.d.ts +7 -0
  165. package/lib/converters/bitbucket/workspace_users.js +32 -0
  166. package/lib/converters/bitbucket/workspace_users.js.map +1 -0
  167. package/lib/converters/bitbucket/workspaces.d.ts +8 -0
  168. package/lib/converters/bitbucket/workspaces.js +62 -0
  169. package/lib/converters/bitbucket/workspaces.js.map +1 -0
  170. package/lib/converters/bitbucket-server/commits.d.ts +7 -0
  171. package/lib/converters/bitbucket-server/commits.js +34 -0
  172. package/lib/converters/bitbucket-server/commits.js.map +1 -0
  173. package/lib/converters/bitbucket-server/common.d.ts +14 -0
  174. package/lib/converters/bitbucket-server/common.js +47 -0
  175. package/lib/converters/bitbucket-server/common.js.map +1 -0
  176. package/lib/converters/bitbucket-server/project_users.d.ts +8 -0
  177. package/lib/converters/bitbucket-server/project_users.js +36 -0
  178. package/lib/converters/bitbucket-server/project_users.js.map +1 -0
  179. package/lib/converters/bitbucket-server/projects.d.ts +7 -0
  180. package/lib/converters/bitbucket-server/projects.js +29 -0
  181. package/lib/converters/bitbucket-server/projects.js.map +1 -0
  182. package/lib/converters/bitbucket-server/pull_request_activities.d.ts +7 -0
  183. package/lib/converters/bitbucket-server/pull_request_activities.js +89 -0
  184. package/lib/converters/bitbucket-server/pull_request_activities.js.map +1 -0
  185. package/lib/converters/bitbucket-server/pull_request_diffs.d.ts +8 -0
  186. package/lib/converters/bitbucket-server/pull_request_diffs.js +41 -0
  187. package/lib/converters/bitbucket-server/pull_request_diffs.js.map +1 -0
  188. package/lib/converters/bitbucket-server/pull_requests.d.ts +9 -0
  189. package/lib/converters/bitbucket-server/pull_requests.js +88 -0
  190. package/lib/converters/bitbucket-server/pull_requests.js.map +1 -0
  191. package/lib/converters/bitbucket-server/repositories.d.ts +7 -0
  192. package/lib/converters/bitbucket-server/repositories.js +35 -0
  193. package/lib/converters/bitbucket-server/repositories.js.map +1 -0
  194. package/lib/converters/bitbucket-server/tags.d.ts +7 -0
  195. package/lib/converters/bitbucket-server/tags.js +30 -0
  196. package/lib/converters/bitbucket-server/tags.js.map +1 -0
  197. package/lib/converters/buildkite/builds.d.ts +7 -0
  198. package/lib/converters/buildkite/builds.js +89 -0
  199. package/lib/converters/buildkite/builds.js.map +1 -0
  200. package/lib/converters/buildkite/common.d.ts +129 -0
  201. package/lib/converters/buildkite/common.js +162 -0
  202. package/lib/converters/buildkite/common.js.map +1 -0
  203. package/lib/converters/buildkite/organizations.d.ts +7 -0
  204. package/lib/converters/buildkite/organizations.js +30 -0
  205. package/lib/converters/buildkite/organizations.js.map +1 -0
  206. package/lib/converters/buildkite/pipelines.d.ts +7 -0
  207. package/lib/converters/buildkite/pipelines.js +33 -0
  208. package/lib/converters/buildkite/pipelines.js.map +1 -0
  209. package/lib/converters/circleci/common.d.ts +27 -0
  210. package/lib/converters/circleci/common.js +96 -0
  211. package/lib/converters/circleci/common.js.map +1 -0
  212. package/lib/converters/circleci/models.d.ts +128 -0
  213. package/lib/converters/circleci/models.js +10 -0
  214. package/lib/converters/circleci/models.js.map +1 -0
  215. package/lib/converters/circleci/pipelines.d.ts +7 -0
  216. package/lib/converters/circleci/pipelines.js +61 -0
  217. package/lib/converters/circleci/pipelines.js.map +1 -0
  218. package/lib/converters/circleci/projects.d.ts +7 -0
  219. package/lib/converters/circleci/projects.js +39 -0
  220. package/lib/converters/circleci/projects.js.map +1 -0
  221. package/lib/converters/circleci/tests.d.ts +18 -0
  222. package/lib/converters/circleci/tests.js +183 -0
  223. package/lib/converters/circleci/tests.js.map +1 -0
  224. package/lib/converters/clickup/common.d.ts +21 -0
  225. package/lib/converters/clickup/common.js +58 -0
  226. package/lib/converters/clickup/common.js.map +1 -0
  227. package/lib/converters/clickup/folders.d.ts +7 -0
  228. package/lib/converters/clickup/folders.js +34 -0
  229. package/lib/converters/clickup/folders.js.map +1 -0
  230. package/lib/converters/clickup/goals.d.ts +6 -0
  231. package/lib/converters/clickup/goals.js +15 -0
  232. package/lib/converters/clickup/goals.js.map +1 -0
  233. package/lib/converters/clickup/lists.d.ts +7 -0
  234. package/lib/converters/clickup/lists.js +34 -0
  235. package/lib/converters/clickup/lists.js.map +1 -0
  236. package/lib/converters/clickup/spaces.d.ts +7 -0
  237. package/lib/converters/clickup/spaces.js +34 -0
  238. package/lib/converters/clickup/spaces.js.map +1 -0
  239. package/lib/converters/clickup/status_histories.d.ts +7 -0
  240. package/lib/converters/clickup/status_histories.js +42 -0
  241. package/lib/converters/clickup/status_histories.js.map +1 -0
  242. package/lib/converters/clickup/tasks.d.ts +11 -0
  243. package/lib/converters/clickup/tasks.js +141 -0
  244. package/lib/converters/clickup/tasks.js.map +1 -0
  245. package/lib/converters/clickup/workspaces.d.ts +7 -0
  246. package/lib/converters/clickup/workspaces.js +40 -0
  247. package/lib/converters/clickup/workspaces.js.map +1 -0
  248. package/lib/converters/common/common.d.ts +10 -0
  249. package/lib/converters/common/common.js +20 -0
  250. package/lib/converters/common/common.js.map +1 -0
  251. package/lib/converters/common/vcs.d.ts +21 -0
  252. package/lib/converters/common/vcs.js +68 -0
  253. package/lib/converters/common/vcs.js.map +1 -0
  254. package/lib/converters/converter-registry.d.ts +25 -0
  255. package/lib/converters/converter-registry.js +66 -0
  256. package/lib/converters/converter-registry.js.map +1 -0
  257. package/lib/converters/converter.d.ts +80 -0
  258. package/lib/converters/converter.js +153 -0
  259. package/lib/converters/converter.js.map +1 -0
  260. package/lib/converters/datadog/common.d.ts +27 -0
  261. package/lib/converters/datadog/common.js +35 -0
  262. package/lib/converters/datadog/common.js.map +1 -0
  263. package/lib/converters/datadog/incidents.d.ts +10 -0
  264. package/lib/converters/datadog/incidents.js +129 -0
  265. package/lib/converters/datadog/incidents.js.map +1 -0
  266. package/lib/converters/datadog/metrics.d.ts +13 -0
  267. package/lib/converters/datadog/metrics.js +63 -0
  268. package/lib/converters/datadog/metrics.js.map +1 -0
  269. package/lib/converters/datadog/users.d.ts +7 -0
  270. package/lib/converters/datadog/users.js +28 -0
  271. package/lib/converters/datadog/users.js.map +1 -0
  272. package/lib/converters/docker/common.d.ts +88 -0
  273. package/lib/converters/docker/common.js +78 -0
  274. package/lib/converters/docker/common.js.map +1 -0
  275. package/lib/converters/docker/tags.d.ts +7 -0
  276. package/lib/converters/docker/tags.js +97 -0
  277. package/lib/converters/docker/tags.js.map +1 -0
  278. package/lib/converters/faros-feed/faros_feed.d.ts +13 -0
  279. package/lib/converters/faros-feed/faros_feed.js +25 -0
  280. package/lib/converters/faros-feed/faros_feed.js.map +1 -0
  281. package/lib/converters/faros-feeds/faros_feed.d.ts +9 -0
  282. package/lib/converters/faros-feeds/faros_feed.js +69 -0
  283. package/lib/converters/faros-feeds/faros_feed.js.map +1 -0
  284. package/lib/converters/faros-feeds/model_names.d.ts +1 -0
  285. package/lib/converters/faros-feeds/model_names.js +136 -0
  286. package/lib/converters/faros-feeds/model_names.js.map +1 -0
  287. package/lib/converters/faros-graphql/faros_graph.d.ts +13 -0
  288. package/lib/converters/faros-graphql/faros_graph.js +25 -0
  289. package/lib/converters/faros-graphql/faros_graph.js.map +1 -0
  290. package/lib/converters/firehydrant/common.d.ts +20 -0
  291. package/lib/converters/firehydrant/common.js +31 -0
  292. package/lib/converters/firehydrant/common.js.map +1 -0
  293. package/lib/converters/firehydrant/incidents.d.ts +14 -0
  294. package/lib/converters/firehydrant/incidents.js +237 -0
  295. package/lib/converters/firehydrant/incidents.js.map +1 -0
  296. package/lib/converters/firehydrant/models.d.ts +212 -0
  297. package/lib/converters/firehydrant/models.js +77 -0
  298. package/lib/converters/firehydrant/models.js.map +1 -0
  299. package/lib/converters/firehydrant/teams.d.ts +7 -0
  300. package/lib/converters/firehydrant/teams.js +27 -0
  301. package/lib/converters/firehydrant/teams.js.map +1 -0
  302. package/lib/converters/firehydrant/users.d.ts +7 -0
  303. package/lib/converters/firehydrant/users.js +39 -0
  304. package/lib/converters/firehydrant/users.js.map +1 -0
  305. package/lib/converters/github/assignees.d.ts +7 -0
  306. package/lib/converters/github/assignees.js +20 -0
  307. package/lib/converters/github/assignees.js.map +1 -0
  308. package/lib/converters/github/branches.d.ts +7 -0
  309. package/lib/converters/github/branches.js +29 -0
  310. package/lib/converters/github/branches.js.map +1 -0
  311. package/lib/converters/github/collaborators.d.ts +7 -0
  312. package/lib/converters/github/collaborators.js +20 -0
  313. package/lib/converters/github/collaborators.js.map +1 -0
  314. package/lib/converters/github/commits.d.ts +7 -0
  315. package/lib/converters/github/commits.js +49 -0
  316. package/lib/converters/github/commits.js.map +1 -0
  317. package/lib/converters/github/common.d.ts +34 -0
  318. package/lib/converters/github/common.js +165 -0
  319. package/lib/converters/github/common.js.map +1 -0
  320. package/lib/converters/github/issue_labels.d.ts +7 -0
  321. package/lib/converters/github/issue_labels.js +21 -0
  322. package/lib/converters/github/issue_labels.js.map +1 -0
  323. package/lib/converters/github/issue_milestones.d.ts +8 -0
  324. package/lib/converters/github/issue_milestones.js +43 -0
  325. package/lib/converters/github/issue_milestones.js.map +1 -0
  326. package/lib/converters/github/issues.d.ts +9 -0
  327. package/lib/converters/github/issues.js +91 -0
  328. package/lib/converters/github/issues.js.map +1 -0
  329. package/lib/converters/github/organizations.d.ts +7 -0
  330. package/lib/converters/github/organizations.js +39 -0
  331. package/lib/converters/github/organizations.js.map +1 -0
  332. package/lib/converters/github/projects.d.ts +7 -0
  333. package/lib/converters/github/projects.js +22 -0
  334. package/lib/converters/github/projects.js.map +1 -0
  335. package/lib/converters/github/pull_request_commits.d.ts +7 -0
  336. package/lib/converters/github/pull_request_commits.js +46 -0
  337. package/lib/converters/github/pull_request_commits.js.map +1 -0
  338. package/lib/converters/github/pull_request_stats.d.ts +7 -0
  339. package/lib/converters/github/pull_request_stats.js +44 -0
  340. package/lib/converters/github/pull_request_stats.js.map +1 -0
  341. package/lib/converters/github/pull_requests.d.ts +7 -0
  342. package/lib/converters/github/pull_requests.js +63 -0
  343. package/lib/converters/github/pull_requests.js.map +1 -0
  344. package/lib/converters/github/releases.d.ts +7 -0
  345. package/lib/converters/github/releases.js +52 -0
  346. package/lib/converters/github/releases.js.map +1 -0
  347. package/lib/converters/github/repositories.d.ts +7 -0
  348. package/lib/converters/github/repositories.js +45 -0
  349. package/lib/converters/github/repositories.js.map +1 -0
  350. package/lib/converters/github/review_comments.d.ts +7 -0
  351. package/lib/converters/github/review_comments.js +41 -0
  352. package/lib/converters/github/review_comments.js.map +1 -0
  353. package/lib/converters/github/reviews.d.ts +7 -0
  354. package/lib/converters/github/reviews.js +61 -0
  355. package/lib/converters/github/reviews.js.map +1 -0
  356. package/lib/converters/github/tags.d.ts +7 -0
  357. package/lib/converters/github/tags.js +32 -0
  358. package/lib/converters/github/tags.js.map +1 -0
  359. package/lib/converters/github/team_memberships.d.ts +7 -0
  360. package/lib/converters/github/team_memberships.js +41 -0
  361. package/lib/converters/github/team_memberships.js.map +1 -0
  362. package/lib/converters/github/teams.d.ts +7 -0
  363. package/lib/converters/github/teams.js +28 -0
  364. package/lib/converters/github/teams.js.map +1 -0
  365. package/lib/converters/github/users.d.ts +7 -0
  366. package/lib/converters/github/users.js +20 -0
  367. package/lib/converters/github/users.js.map +1 -0
  368. package/lib/converters/github/workflow_runs.d.ts +7 -0
  369. package/lib/converters/github/workflow_runs.js +56 -0
  370. package/lib/converters/github/workflow_runs.js.map +1 -0
  371. package/lib/converters/github/workflows.d.ts +8 -0
  372. package/lib/converters/github/workflows.js +45 -0
  373. package/lib/converters/github/workflows.js.map +1 -0
  374. package/lib/converters/gitlab/branches.d.ts +8 -0
  375. package/lib/converters/gitlab/branches.js +45 -0
  376. package/lib/converters/gitlab/branches.js.map +1 -0
  377. package/lib/converters/gitlab/commits.d.ts +7 -0
  378. package/lib/converters/gitlab/commits.js +34 -0
  379. package/lib/converters/gitlab/commits.js.map +1 -0
  380. package/lib/converters/gitlab/common.d.ts +45 -0
  381. package/lib/converters/gitlab/common.js +143 -0
  382. package/lib/converters/gitlab/common.js.map +1 -0
  383. package/lib/converters/gitlab/group_labels.d.ts +7 -0
  384. package/lib/converters/gitlab/group_labels.js +16 -0
  385. package/lib/converters/gitlab/group_labels.js.map +1 -0
  386. package/lib/converters/gitlab/group_milestones.d.ts +8 -0
  387. package/lib/converters/gitlab/group_milestones.js +42 -0
  388. package/lib/converters/gitlab/group_milestones.js.map +1 -0
  389. package/lib/converters/gitlab/groups.d.ts +7 -0
  390. package/lib/converters/gitlab/groups.js +52 -0
  391. package/lib/converters/gitlab/groups.js.map +1 -0
  392. package/lib/converters/gitlab/issues.d.ts +9 -0
  393. package/lib/converters/gitlab/issues.js +100 -0
  394. package/lib/converters/gitlab/issues.js.map +1 -0
  395. package/lib/converters/gitlab/jobs.d.ts +10 -0
  396. package/lib/converters/gitlab/jobs.js +73 -0
  397. package/lib/converters/gitlab/jobs.js.map +1 -0
  398. package/lib/converters/gitlab/merge_request_commits.d.ts +7 -0
  399. package/lib/converters/gitlab/merge_request_commits.js +35 -0
  400. package/lib/converters/gitlab/merge_request_commits.js.map +1 -0
  401. package/lib/converters/gitlab/merge_requests.d.ts +10 -0
  402. package/lib/converters/gitlab/merge_requests.js +66 -0
  403. package/lib/converters/gitlab/merge_requests.js.map +1 -0
  404. package/lib/converters/gitlab/pipelines.d.ts +7 -0
  405. package/lib/converters/gitlab/pipelines.js +59 -0
  406. package/lib/converters/gitlab/pipelines.js.map +1 -0
  407. package/lib/converters/gitlab/project_labels.d.ts +7 -0
  408. package/lib/converters/gitlab/project_labels.js +16 -0
  409. package/lib/converters/gitlab/project_labels.js.map +1 -0
  410. package/lib/converters/gitlab/project_milestones.d.ts +8 -0
  411. package/lib/converters/gitlab/project_milestones.js +42 -0
  412. package/lib/converters/gitlab/project_milestones.js.map +1 -0
  413. package/lib/converters/gitlab/projects.d.ts +7 -0
  414. package/lib/converters/gitlab/projects.js +57 -0
  415. package/lib/converters/gitlab/projects.js.map +1 -0
  416. package/lib/converters/gitlab/releases.d.ts +9 -0
  417. package/lib/converters/gitlab/releases.js +60 -0
  418. package/lib/converters/gitlab/releases.js.map +1 -0
  419. package/lib/converters/gitlab/tags.d.ts +10 -0
  420. package/lib/converters/gitlab/tags.js +42 -0
  421. package/lib/converters/gitlab/tags.js.map +1 -0
  422. package/lib/converters/gitlab/users.d.ts +7 -0
  423. package/lib/converters/gitlab/users.js +34 -0
  424. package/lib/converters/gitlab/users.js.map +1 -0
  425. package/lib/converters/gitlab-ci/groups.d.ts +8 -0
  426. package/lib/converters/gitlab-ci/groups.js +32 -0
  427. package/lib/converters/gitlab-ci/groups.js.map +1 -0
  428. package/lib/converters/gitlab-ci/jobs.d.ts +11 -0
  429. package/lib/converters/gitlab-ci/jobs.js +69 -0
  430. package/lib/converters/gitlab-ci/jobs.js.map +1 -0
  431. package/lib/converters/gitlab-ci/pipelines.d.ts +8 -0
  432. package/lib/converters/gitlab-ci/pipelines.js +49 -0
  433. package/lib/converters/gitlab-ci/pipelines.js.map +1 -0
  434. package/lib/converters/gitlab-ci/projects.d.ts +8 -0
  435. package/lib/converters/gitlab-ci/projects.js +35 -0
  436. package/lib/converters/gitlab-ci/projects.js.map +1 -0
  437. package/lib/converters/googlecalendar/calendar_models.d.ts +554 -0
  438. package/lib/converters/googlecalendar/calendar_models.js +3 -0
  439. package/lib/converters/googlecalendar/calendar_models.js.map +1 -0
  440. package/lib/converters/googlecalendar/calendars.d.ts +7 -0
  441. package/lib/converters/googlecalendar/calendars.js +30 -0
  442. package/lib/converters/googlecalendar/calendars.js.map +1 -0
  443. package/lib/converters/googlecalendar/common.d.ts +52 -0
  444. package/lib/converters/googlecalendar/common.js +138 -0
  445. package/lib/converters/googlecalendar/common.js.map +1 -0
  446. package/lib/converters/googlecalendar/events.d.ts +10 -0
  447. package/lib/converters/googlecalendar/events.js +150 -0
  448. package/lib/converters/googlecalendar/events.js.map +1 -0
  449. package/lib/converters/harness/common.d.ts +102 -0
  450. package/lib/converters/harness/common.js +17 -0
  451. package/lib/converters/harness/common.js.map +1 -0
  452. package/lib/converters/harness/executions.d.ts +15 -0
  453. package/lib/converters/harness/executions.js +240 -0
  454. package/lib/converters/harness/executions.js.map +1 -0
  455. package/lib/converters/hygieia/collector_items.d.ts +8 -0
  456. package/lib/converters/hygieia/collector_items.js +51 -0
  457. package/lib/converters/hygieia/collector_items.js.map +1 -0
  458. package/lib/converters/jenkins/builds.d.ts +11 -0
  459. package/lib/converters/jenkins/builds.js +144 -0
  460. package/lib/converters/jenkins/builds.js.map +1 -0
  461. package/lib/converters/jenkins/common.d.ts +36 -0
  462. package/lib/converters/jenkins/common.js +70 -0
  463. package/lib/converters/jenkins/common.js.map +1 -0
  464. package/lib/converters/jenkins/jobs.d.ts +8 -0
  465. package/lib/converters/jenkins/jobs.js +30 -0
  466. package/lib/converters/jenkins/jobs.js.map +1 -0
  467. package/lib/converters/jira/board_issues.d.ts +7 -0
  468. package/lib/converters/jira/board_issues.js +29 -0
  469. package/lib/converters/jira/board_issues.js.map +1 -0
  470. package/lib/converters/jira/boards.d.ts +7 -0
  471. package/lib/converters/jira/boards.js +35 -0
  472. package/lib/converters/jira/boards.js.map +1 -0
  473. package/lib/converters/jira/common.d.ts +61 -0
  474. package/lib/converters/jira/common.js +65 -0
  475. package/lib/converters/jira/common.js.map +1 -0
  476. package/lib/converters/jira/epics.d.ts +8 -0
  477. package/lib/converters/jira/epics.js +46 -0
  478. package/lib/converters/jira/epics.js.map +1 -0
  479. package/lib/converters/jira/issue_fields.d.ts +6 -0
  480. package/lib/converters/jira/issue_fields.js +16 -0
  481. package/lib/converters/jira/issue_fields.js.map +1 -0
  482. package/lib/converters/jira/issues.d.ts +51 -0
  483. package/lib/converters/jira/issues.js +544 -0
  484. package/lib/converters/jira/issues.js.map +1 -0
  485. package/lib/converters/jira/project_versions.d.ts +9 -0
  486. package/lib/converters/jira/project_versions.js +49 -0
  487. package/lib/converters/jira/project_versions.js.map +1 -0
  488. package/lib/converters/jira/projects.d.ts +7 -0
  489. package/lib/converters/jira/projects.js +41 -0
  490. package/lib/converters/jira/projects.js.map +1 -0
  491. package/lib/converters/jira/pull_requests.d.ts +6 -0
  492. package/lib/converters/jira/pull_requests.js +16 -0
  493. package/lib/converters/jira/pull_requests.js.map +1 -0
  494. package/lib/converters/jira/sprint_issues.d.ts +6 -0
  495. package/lib/converters/jira/sprint_issues.js +16 -0
  496. package/lib/converters/jira/sprint_issues.js.map +1 -0
  497. package/lib/converters/jira/sprints.d.ts +15 -0
  498. package/lib/converters/jira/sprints.js +79 -0
  499. package/lib/converters/jira/sprints.js.map +1 -0
  500. package/lib/converters/jira/users.d.ts +7 -0
  501. package/lib/converters/jira/users.js +33 -0
  502. package/lib/converters/jira/users.js.map +1 -0
  503. package/lib/converters/jira/workflow_statuses.d.ts +6 -0
  504. package/lib/converters/jira/workflow_statuses.js +16 -0
  505. package/lib/converters/jira/workflow_statuses.js.map +1 -0
  506. package/lib/converters/jsonata.d.ts +18 -0
  507. package/lib/converters/jsonata.js +72 -0
  508. package/lib/converters/jsonata.js.map +1 -0
  509. package/lib/converters/notion/common.d.ts +975 -0
  510. package/lib/converters/notion/common.js +185 -0
  511. package/lib/converters/notion/common.js.map +1 -0
  512. package/lib/converters/notion/pages.d.ts +14 -0
  513. package/lib/converters/notion/pages.js +462 -0
  514. package/lib/converters/notion/pages.js.map +1 -0
  515. package/lib/converters/notion/users.d.ts +7 -0
  516. package/lib/converters/notion/users.js +27 -0
  517. package/lib/converters/notion/users.js.map +1 -0
  518. package/lib/converters/octopus/common.d.ts +8 -0
  519. package/lib/converters/octopus/common.js +18 -0
  520. package/lib/converters/octopus/common.js.map +1 -0
  521. package/lib/converters/octopus/deployments.d.ts +13 -0
  522. package/lib/converters/octopus/deployments.js +89 -0
  523. package/lib/converters/octopus/deployments.js.map +1 -0
  524. package/lib/converters/octopus/releases.d.ts +7 -0
  525. package/lib/converters/octopus/releases.js +30 -0
  526. package/lib/converters/octopus/releases.js.map +1 -0
  527. package/lib/converters/okta/common.d.ts +8 -0
  528. package/lib/converters/okta/common.js +18 -0
  529. package/lib/converters/okta/common.js.map +1 -0
  530. package/lib/converters/okta/groups.d.ts +7 -0
  531. package/lib/converters/okta/groups.js +48 -0
  532. package/lib/converters/okta/groups.js.map +1 -0
  533. package/lib/converters/okta/models.d.ts +102 -0
  534. package/lib/converters/okta/models.js +3 -0
  535. package/lib/converters/okta/models.js.map +1 -0
  536. package/lib/converters/okta/users.d.ts +8 -0
  537. package/lib/converters/okta/users.js +74 -0
  538. package/lib/converters/okta/users.js.map +1 -0
  539. package/lib/converters/okta-faros/common.d.ts +4 -0
  540. package/lib/converters/okta-faros/common.js +12 -0
  541. package/lib/converters/okta-faros/common.js.map +1 -0
  542. package/lib/converters/okta-faros/groups.d.ts +13 -0
  543. package/lib/converters/okta-faros/groups.js +24 -0
  544. package/lib/converters/okta-faros/groups.js.map +1 -0
  545. package/lib/converters/okta-faros/users.d.ts +13 -0
  546. package/lib/converters/okta-faros/users.js +24 -0
  547. package/lib/converters/okta-faros/users.js.map +1 -0
  548. package/lib/converters/opsgenie/common.d.ts +20 -0
  549. package/lib/converters/opsgenie/common.js +31 -0
  550. package/lib/converters/opsgenie/common.js.map +1 -0
  551. package/lib/converters/opsgenie/incidents.d.ts +11 -0
  552. package/lib/converters/opsgenie/incidents.js +163 -0
  553. package/lib/converters/opsgenie/incidents.js.map +1 -0
  554. package/lib/converters/opsgenie/models.d.ts +122 -0
  555. package/lib/converters/opsgenie/models.js +40 -0
  556. package/lib/converters/opsgenie/models.js.map +1 -0
  557. package/lib/converters/opsgenie/teams.d.ts +7 -0
  558. package/lib/converters/opsgenie/teams.js +27 -0
  559. package/lib/converters/opsgenie/teams.js.map +1 -0
  560. package/lib/converters/opsgenie/users.d.ts +7 -0
  561. package/lib/converters/opsgenie/users.js +39 -0
  562. package/lib/converters/opsgenie/users.js.map +1 -0
  563. package/lib/converters/pagerduty/common.d.ts +39 -0
  564. package/lib/converters/pagerduty/common.js +45 -0
  565. package/lib/converters/pagerduty/common.js.map +1 -0
  566. package/lib/converters/pagerduty/incident_log_entries.d.ts +8 -0
  567. package/lib/converters/pagerduty/incident_log_entries.js +57 -0
  568. package/lib/converters/pagerduty/incident_log_entries.js.map +1 -0
  569. package/lib/converters/pagerduty/incidents.d.ts +10 -0
  570. package/lib/converters/pagerduty/incidents.js +114 -0
  571. package/lib/converters/pagerduty/incidents.js.map +1 -0
  572. package/lib/converters/pagerduty/priorities_resource.d.ts +10 -0
  573. package/lib/converters/pagerduty/priorities_resource.js +63 -0
  574. package/lib/converters/pagerduty/priorities_resource.js.map +1 -0
  575. package/lib/converters/pagerduty/services.d.ts +9 -0
  576. package/lib/converters/pagerduty/services.js +87 -0
  577. package/lib/converters/pagerduty/services.js.map +1 -0
  578. package/lib/converters/pagerduty/users.d.ts +7 -0
  579. package/lib/converters/pagerduty/users.js +27 -0
  580. package/lib/converters/pagerduty/users.js.map +1 -0
  581. package/lib/converters/phabricator/commits.d.ts +8 -0
  582. package/lib/converters/phabricator/commits.js +81 -0
  583. package/lib/converters/phabricator/commits.js.map +1 -0
  584. package/lib/converters/phabricator/common.d.ts +39 -0
  585. package/lib/converters/phabricator/common.js +137 -0
  586. package/lib/converters/phabricator/common.js.map +1 -0
  587. package/lib/converters/phabricator/projects.d.ts +7 -0
  588. package/lib/converters/phabricator/projects.js +51 -0
  589. package/lib/converters/phabricator/projects.js.map +1 -0
  590. package/lib/converters/phabricator/repositories.d.ts +7 -0
  591. package/lib/converters/phabricator/repositories.js +68 -0
  592. package/lib/converters/phabricator/repositories.js.map +1 -0
  593. package/lib/converters/phabricator/revision_diffs.d.ts +8 -0
  594. package/lib/converters/phabricator/revision_diffs.js +48 -0
  595. package/lib/converters/phabricator/revision_diffs.js.map +1 -0
  596. package/lib/converters/phabricator/revisions.d.ts +7 -0
  597. package/lib/converters/phabricator/revisions.js +51 -0
  598. package/lib/converters/phabricator/revisions.js.map +1 -0
  599. package/lib/converters/phabricator/transactions.d.ts +10 -0
  600. package/lib/converters/phabricator/transactions.js +101 -0
  601. package/lib/converters/phabricator/transactions.js.map +1 -0
  602. package/lib/converters/phabricator/users.d.ts +7 -0
  603. package/lib/converters/phabricator/users.js +40 -0
  604. package/lib/converters/phabricator/users.js.map +1 -0
  605. package/lib/converters/semaphoreci/common.d.ts +27 -0
  606. package/lib/converters/semaphoreci/common.js +98 -0
  607. package/lib/converters/semaphoreci/common.js.map +1 -0
  608. package/lib/converters/semaphoreci/models.d.ts +128 -0
  609. package/lib/converters/semaphoreci/models.js +35 -0
  610. package/lib/converters/semaphoreci/models.js.map +1 -0
  611. package/lib/converters/semaphoreci/pipelines.d.ts +8 -0
  612. package/lib/converters/semaphoreci/pipelines.js +112 -0
  613. package/lib/converters/semaphoreci/pipelines.js.map +1 -0
  614. package/lib/converters/semaphoreci/projects.d.ts +8 -0
  615. package/lib/converters/semaphoreci/projects.js +46 -0
  616. package/lib/converters/semaphoreci/projects.js.map +1 -0
  617. package/lib/converters/servicenow/common.d.ts +39 -0
  618. package/lib/converters/servicenow/common.js +52 -0
  619. package/lib/converters/servicenow/common.js.map +1 -0
  620. package/lib/converters/servicenow/incidents.d.ts +18 -0
  621. package/lib/converters/servicenow/incidents.js +278 -0
  622. package/lib/converters/servicenow/incidents.js.map +1 -0
  623. package/lib/converters/servicenow/users.d.ts +7 -0
  624. package/lib/converters/servicenow/users.js +27 -0
  625. package/lib/converters/servicenow/users.js.map +1 -0
  626. package/lib/converters/shortcut/common.d.ts +16 -0
  627. package/lib/converters/shortcut/common.js +69 -0
  628. package/lib/converters/shortcut/common.js.map +1 -0
  629. package/lib/converters/shortcut/epics.d.ts +7 -0
  630. package/lib/converters/shortcut/epics.js +30 -0
  631. package/lib/converters/shortcut/epics.js.map +1 -0
  632. package/lib/converters/shortcut/iterations.d.ts +7 -0
  633. package/lib/converters/shortcut/iterations.js +30 -0
  634. package/lib/converters/shortcut/iterations.js.map +1 -0
  635. package/lib/converters/shortcut/members.d.ts +7 -0
  636. package/lib/converters/shortcut/members.js +27 -0
  637. package/lib/converters/shortcut/members.js.map +1 -0
  638. package/lib/converters/shortcut/models.d.ts +392 -0
  639. package/lib/converters/shortcut/models.js +31 -0
  640. package/lib/converters/shortcut/models.js.map +1 -0
  641. package/lib/converters/shortcut/projects.d.ts +7 -0
  642. package/lib/converters/shortcut/projects.js +47 -0
  643. package/lib/converters/shortcut/projects.js.map +1 -0
  644. package/lib/converters/shortcut/stories.d.ts +7 -0
  645. package/lib/converters/shortcut/stories.js +128 -0
  646. package/lib/converters/shortcut/stories.js.map +1 -0
  647. package/lib/converters/squadcast/common.d.ts +169 -0
  648. package/lib/converters/squadcast/common.js +63 -0
  649. package/lib/converters/squadcast/common.js.map +1 -0
  650. package/lib/converters/squadcast/events.d.ts +9 -0
  651. package/lib/converters/squadcast/events.js +54 -0
  652. package/lib/converters/squadcast/events.js.map +1 -0
  653. package/lib/converters/squadcast/incidents.d.ts +10 -0
  654. package/lib/converters/squadcast/incidents.js +132 -0
  655. package/lib/converters/squadcast/incidents.js.map +1 -0
  656. package/lib/converters/squadcast/services.d.ts +8 -0
  657. package/lib/converters/squadcast/services.js +30 -0
  658. package/lib/converters/squadcast/services.js.map +1 -0
  659. package/lib/converters/squadcast/users.d.ts +7 -0
  660. package/lib/converters/squadcast/users.js +28 -0
  661. package/lib/converters/squadcast/users.js.map +1 -0
  662. package/lib/converters/statuspage/common.d.ts +125 -0
  663. package/lib/converters/statuspage/common.js +118 -0
  664. package/lib/converters/statuspage/common.js.map +1 -0
  665. package/lib/converters/statuspage/component_groups.d.ts +6 -0
  666. package/lib/converters/statuspage/component_groups.js +15 -0
  667. package/lib/converters/statuspage/component_groups.js.map +1 -0
  668. package/lib/converters/statuspage/component_uptimes.d.ts +8 -0
  669. package/lib/converters/statuspage/component_uptimes.js +44 -0
  670. package/lib/converters/statuspage/component_uptimes.js.map +1 -0
  671. package/lib/converters/statuspage/components.d.ts +8 -0
  672. package/lib/converters/statuspage/components.js +29 -0
  673. package/lib/converters/statuspage/components.js.map +1 -0
  674. package/lib/converters/statuspage/incidents.d.ts +13 -0
  675. package/lib/converters/statuspage/incidents.js +221 -0
  676. package/lib/converters/statuspage/incidents.js.map +1 -0
  677. package/lib/converters/statuspage/pages.d.ts +6 -0
  678. package/lib/converters/statuspage/pages.js +15 -0
  679. package/lib/converters/statuspage/pages.js.map +1 -0
  680. package/lib/converters/statuspage/users.d.ts +7 -0
  681. package/lib/converters/statuspage/users.js +27 -0
  682. package/lib/converters/statuspage/users.js.map +1 -0
  683. package/lib/converters/testrails/cases.d.ts +7 -0
  684. package/lib/converters/testrails/cases.js +43 -0
  685. package/lib/converters/testrails/cases.js.map +1 -0
  686. package/lib/converters/testrails/common.d.ts +20 -0
  687. package/lib/converters/testrails/common.js +66 -0
  688. package/lib/converters/testrails/common.js.map +1 -0
  689. package/lib/converters/testrails/results.d.ts +7 -0
  690. package/lib/converters/testrails/results.js +41 -0
  691. package/lib/converters/testrails/results.js.map +1 -0
  692. package/lib/converters/testrails/runs.d.ts +7 -0
  693. package/lib/converters/testrails/runs.js +56 -0
  694. package/lib/converters/testrails/runs.js.map +1 -0
  695. package/lib/converters/testrails/suites.d.ts +7 -0
  696. package/lib/converters/testrails/suites.js +33 -0
  697. package/lib/converters/testrails/suites.js.map +1 -0
  698. package/lib/converters/victorops/common.d.ts +16 -0
  699. package/lib/converters/victorops/common.js +25 -0
  700. package/lib/converters/victorops/common.js.map +1 -0
  701. package/lib/converters/victorops/incidents.d.ts +12 -0
  702. package/lib/converters/victorops/incidents.js +204 -0
  703. package/lib/converters/victorops/incidents.js.map +1 -0
  704. package/lib/converters/victorops/teams.d.ts +8 -0
  705. package/lib/converters/victorops/teams.js +31 -0
  706. package/lib/converters/victorops/teams.js.map +1 -0
  707. package/lib/converters/victorops/users.d.ts +8 -0
  708. package/lib/converters/victorops/users.js +34 -0
  709. package/lib/converters/victorops/users.js.map +1 -0
  710. package/lib/destination-runner.d.ts +22 -0
  711. package/lib/destination-runner.js +34 -0
  712. package/lib/destination-runner.js.map +1 -0
  713. package/lib/destination.d.ts +57 -0
  714. package/lib/destination.js +665 -0
  715. package/lib/destination.js.map +1 -0
  716. package/lib/index.d.ts +16 -0
  717. package/lib/index.js +40 -0
  718. package/lib/index.js.map +1 -0
  719. package/lib/tsconfig.tsbuildinfo +1 -0
  720. package/package.json +78 -0
  721. package/resources/cloud.json +73 -0
  722. package/resources/community.json +39 -0
  723. package/resources/source-specific-configs/agileaccelerator.json +33 -0
  724. package/resources/source-specific-configs/azurepipeline.json +27 -0
  725. package/resources/source-specific-configs/backlog.json +24 -0
  726. package/resources/source-specific-configs/bamboohr.json +36 -0
  727. package/resources/source-specific-configs/bitbucket.json +28 -0
  728. package/resources/source-specific-configs/circleci.json +24 -0
  729. package/resources/source-specific-configs/clickup.json +35 -0
  730. package/resources/source-specific-configs/datadog.json +42 -0
  731. package/resources/source-specific-configs/docker.json +40 -0
  732. package/resources/source-specific-configs/firehydrant.json +34 -0
  733. package/resources/source-specific-configs/jenkins.json +24 -0
  734. package/resources/source-specific-configs/jira.json +45 -0
  735. package/resources/source-specific-configs/notion.json +313 -0
  736. package/resources/source-specific-configs/opsgenie.json +34 -0
  737. package/resources/source-specific-configs/pagerduty.json +48 -0
  738. package/resources/source-specific-configs/phabricator.json +24 -0
  739. package/resources/source-specific-configs/servicenow.json +72 -0
  740. package/resources/source-specific-configs/spec.json +78 -0
  741. package/resources/source-specific-configs/squadcast.json +28 -0
  742. package/resources/source-specific-configs/statuspage.json +28 -0
  743. package/resources/source-specific-configs/victorops.json +37 -0
  744. package/resources/spec.json +116 -0
@@ -0,0 +1,712 @@
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.GraphQLClient = exports.toPostgresArrayLiteral = exports.toLevels = exports.groupByKeys = exports.batchIterator = exports.mergeByPrimaryKey = exports.strictPick = exports.serialize = exports.UpsertBuffer = void 0;
7
+ const date_format_1 = __importDefault(require("date-format"));
8
+ const json_to_graphql_query_1 = require("json-to-graphql-query");
9
+ const lodash_1 = require("lodash");
10
+ const traverse_1 = __importDefault(require("traverse"));
11
+ const ts_essentials_1 = require("ts-essentials");
12
+ const verror_1 = require("verror");
13
+ const types_1 = require("./types");
14
+ const ROOT_FLAG = '__root__';
15
+ class UpsertBuffer {
16
+ constructor() {
17
+ this.upsertBuffer = new Map();
18
+ }
19
+ add(upsert) {
20
+ const modelBuffer = this.upsertBuffer.get(upsert.model);
21
+ if (!modelBuffer) {
22
+ this.upsertBuffer.set(upsert.model, [upsert]);
23
+ return;
24
+ }
25
+ modelBuffer.push(upsert);
26
+ }
27
+ size() {
28
+ // the limiting factor is size of a single request
29
+ return Array.from(this.upsertBuffer.values()).reduce((acc, arr) => (0, lodash_1.max)([acc, arr.length]), 0);
30
+ }
31
+ pop(model) {
32
+ return this.getInternal(model, true);
33
+ }
34
+ get(model) {
35
+ return this.getInternal(model, false);
36
+ }
37
+ getInternal(model, remove) {
38
+ if (this.upsertBuffer.has(model)) {
39
+ const modelUpserts = this.upsertBuffer.get(model);
40
+ if (remove) {
41
+ this.upsertBuffer.delete(model);
42
+ }
43
+ return modelUpserts;
44
+ }
45
+ return undefined;
46
+ }
47
+ clear() {
48
+ const size = this.size();
49
+ this.upsertBuffer.clear();
50
+ return size;
51
+ }
52
+ }
53
+ exports.UpsertBuffer = UpsertBuffer;
54
+ function serialize(obj) {
55
+ return (0, lodash_1.keys)(obj)
56
+ .sort()
57
+ .map((k) => `${k}:${obj[k]}`)
58
+ .join('|');
59
+ }
60
+ exports.serialize = serialize;
61
+ /**
62
+ * Like lodash pick but with null value replacement.
63
+ */
64
+ function strictPick(obj, keys, nullValue = 'null') {
65
+ return keys.reduce((result, key) => { var _a; return (0, lodash_1.set)(result, key, (_a = obj[key]) !== null && _a !== void 0 ? _a : nullValue); }, {});
66
+ }
67
+ exports.strictPick = strictPick;
68
+ /**
69
+ * Groups objects by primary key and then merges all related objects into
70
+ * a single object where last-wins for overlapping properties.
71
+ */
72
+ function mergeByPrimaryKey(objects, primaryKeys) {
73
+ const byPK = (0, lodash_1.groupBy)(objects, (o) => serialize((0, lodash_1.pick)(o, primaryKeys)));
74
+ return Object.values(byPK).map((arr) => arr.reduce((acc, obj) => ({ ...acc, ...obj }), {}));
75
+ }
76
+ exports.mergeByPrimaryKey = mergeByPrimaryKey;
77
+ /**
78
+ * Execute async callback for each batch of upserts.
79
+ */
80
+ function batchIterator(batches, callback) {
81
+ return {
82
+ async *[Symbol.asyncIterator]() {
83
+ for (const batch of batches) {
84
+ yield await callback(batch);
85
+ }
86
+ },
87
+ };
88
+ }
89
+ exports.batchIterator = batchIterator;
90
+ /**
91
+ * Separates objects into arrays of objects
92
+ * that all have the same keys.
93
+ */
94
+ function groupByKeys(objects) {
95
+ const byObjKeyNames = (0, lodash_1.groupBy)(objects, (obj) => Object.keys(obj).sort().join('|'));
96
+ return Object.values(byObjKeyNames);
97
+ }
98
+ exports.groupByKeys = groupByKeys;
99
+ /**
100
+ * Separates upserts into levels. Level 0 has no dependencies on other levels.
101
+ * Level 1 depends on Level 0, 2 on 1 and so on.
102
+ */
103
+ function toLevels(upserts) {
104
+ const withLevel = (0, lodash_1.flatMap)(upserts, (u) => addLevel(u));
105
+ const byLevel = (0, lodash_1.groupBy)(withLevel, (tuple) => tuple[1]);
106
+ const result = [];
107
+ Object.keys(byLevel)
108
+ .sort()
109
+ .forEach((level) => {
110
+ result.push((0, lodash_1.unzip)(byLevel[level])[0]);
111
+ });
112
+ return result;
113
+ }
114
+ exports.toLevels = toLevels;
115
+ /**
116
+ * Converts an Upsert (which is a tree structure) into an array of tuples.
117
+ * Each tuple contains an Upsert and its level in the tree structure.
118
+ * The level indicates the number of steps from a leaf where leaves are level 0.
119
+ * If an Upsert has multiple paths to a leaf, the level is the maximum number of
120
+ * steps.
121
+ */
122
+ function addLevel(u) {
123
+ const result = [];
124
+ let maxAncestorLevel = 0;
125
+ for (const ancestor of Object.values(u.foreignKeys)) {
126
+ if (ancestor.model === u.model) {
127
+ const ancestorsWithLevels = addLevel(ancestor);
128
+ maxAncestorLevel = (0, lodash_1.max)([ancestorsWithLevels[0][1], maxAncestorLevel]);
129
+ result.push(...ancestorsWithLevels);
130
+ }
131
+ }
132
+ const thisLevel = result.length ? maxAncestorLevel + 1 : 0;
133
+ result.unshift([u, thisLevel]);
134
+ return result;
135
+ }
136
+ function toPostgresArrayLiteral(value) {
137
+ return `{${value
138
+ .map((s) => {
139
+ if (typeof s === 'string') {
140
+ return `"${s}"`;
141
+ }
142
+ if ((0, lodash_1.isNil)(s)) {
143
+ return 'NULL';
144
+ }
145
+ return s;
146
+ })
147
+ .join(',')}}`;
148
+ }
149
+ exports.toPostgresArrayLiteral = toPostgresArrayLiteral;
150
+ /**
151
+ * Client for writing records as GraphQL mutations. The client supports 3
152
+ * kinds of writes: Upserts, Updates and Deletes.
153
+ *
154
+ * For upserts (when upsertBatchSize is greater than 0), the high-level algorithm is:
155
+ *
156
+ * > For each record, build a tree of Upserts. The tree has more than one node if the current record represents a
157
+ * nested entity (e.g. branch record referencing repo which, in-turn, references org).
158
+ * > Buffer Upserts and index each by model (e.g. vcs_Branch)
159
+ * > When batch size limit is reached, execute a single insert mutation per model. Start with leaves of Upsert tree.
160
+ * > After inserting a batch, copy the id of each record back to the Upsert object. When inserting subsequent batches,
161
+ * required foreign keys will be read from the Upsert tree and copied to the appropriate batch mutation.
162
+ *
163
+ * Note: there is a complication in this algorithm for self-referent models (i.e. org_Employee's manager relationship).
164
+ * For these models, we split the batch into "levels". The first level consists of records with no dependencies on
165
+ * records of the same type. The second depends on the first and so on.
166
+ *
167
+ * For Updates and Deletes (which are much less frequent) we have a separate write buffer. This buffer is
168
+ * flushed if it reaches capacity. There is no attempt to combine these into bulk mutations (as done w/ upserts).
169
+ */
170
+ class GraphQLClient {
171
+ constructor(logger, schemaLoader, backend, upsertBatchSize, mutationBatchSize, updateResetLimit = true) {
172
+ this.writeBuffer = [];
173
+ this.upsertBuffer = new UpsertBuffer();
174
+ this.selfReferentModels = new Set();
175
+ this.logger = logger;
176
+ this.schemaLoader = schemaLoader;
177
+ this.backend = backend;
178
+ this.upsertBatchSize = upsertBatchSize !== null && upsertBatchSize !== void 0 ? upsertBatchSize : 10000;
179
+ this.mutationBatchSize = mutationBatchSize !== null && mutationBatchSize !== void 0 ? mutationBatchSize : 100;
180
+ (0, ts_essentials_1.assert)(this.upsertBatchSize >= 0, `negative upsert batch size: ${this.upsertBatchSize}`);
181
+ (0, ts_essentials_1.assert)(this.mutationBatchSize > 0, `non-positive mutation batch size: ${this.mutationBatchSize}`);
182
+ this.updateResetLimit = updateResetLimit;
183
+ this.resetLimitMillis = updateResetLimit
184
+ ? // January 1, 2200
185
+ 7258118400000
186
+ : Date.now();
187
+ }
188
+ async healthCheck() {
189
+ try {
190
+ await this.backend.healthCheck();
191
+ }
192
+ catch (e) {
193
+ throw new verror_1.VError(e, 'Failed to check graphql backend health');
194
+ }
195
+ }
196
+ async loadSchema() {
197
+ this.schema = await this.schemaLoader.loadSchema();
198
+ // various derivative values of schema
199
+ this.tableNames = new Set(this.schema.tableNames);
200
+ this.tableDependencies = [...this.schema.sortedModelDependencies];
201
+ (0, lodash_1.reverse)(this.tableDependencies);
202
+ // self-referent models
203
+ for (const [model, modelRefs] of Object.entries(this.schema.references)) {
204
+ for (const reference of Object.values(modelRefs)) {
205
+ if (reference.model === model) {
206
+ this.selfReferentModels.add(model);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ checkSchema() {
212
+ if (!this.schema) {
213
+ throw new verror_1.VError('Schema is not initialized. Please call loadSchema first.');
214
+ }
215
+ }
216
+ async resetData(origin, models, keepReferencedRecords) {
217
+ this.checkSchema();
218
+ // ensure deletes are executed after processing records
219
+ await this.flush();
220
+ const minRefreshedAt = new Date(this.resetLimitMillis).toISOString();
221
+ this.logger.info(`Resetting data before ${minRefreshedAt} for origin ${origin}`);
222
+ for (const model of (0, lodash_1.intersection)(this.schema.sortedModelDependencies, models)) {
223
+ this.logger.info(`Resetting ${model} data for origin ${origin}`);
224
+ const deleteConditions = {
225
+ origin: { _eq: origin },
226
+ refreshedAt: { _lt: minRefreshedAt },
227
+ };
228
+ if (keepReferencedRecords) {
229
+ deleteConditions['_not'] = {
230
+ _or: this.schema.backReferences[model].map((br) => {
231
+ return {
232
+ [br.field]: {},
233
+ };
234
+ }),
235
+ };
236
+ }
237
+ const mutation = {
238
+ [`delete_${model}`]: {
239
+ __args: {
240
+ where: {
241
+ _and: { ...deleteConditions },
242
+ },
243
+ },
244
+ affected_rows: true,
245
+ },
246
+ };
247
+ await this.postQuery({ mutation }, `Failed to reset ${model} data for origin ${origin}`);
248
+ }
249
+ }
250
+ async writeRecord(model, record, origin) {
251
+ this.checkSchema();
252
+ if (!this.tableNames.has(model)) {
253
+ throw new verror_1.VError(`Table ${model} does not exist`);
254
+ }
255
+ if (this.upsertBatchSize) {
256
+ this.addUpsert(model, record, origin);
257
+ if (this.upsertBuffer.size() >= this.upsertBatchSize) {
258
+ await this.flushUpsertBuffer();
259
+ }
260
+ }
261
+ else {
262
+ const obj = this.createMutationObject(model, record, origin);
263
+ const mutation = {
264
+ [`insert_${model}_one`]: { __args: obj, id: true, refreshedAt: true },
265
+ };
266
+ await this.postQuery({ mutation }, `Failed to write ${model} record`);
267
+ }
268
+ }
269
+ async flushUpsertBuffer() {
270
+ try {
271
+ await this.doFlushUpsertBuffer();
272
+ }
273
+ catch (e) {
274
+ const numRemoved = this.upsertBuffer.clear();
275
+ throw new verror_1.VError(e, 'failed to flush upsert buffer. abandoned %d records', numRemoved);
276
+ }
277
+ }
278
+ async execUpsert(model, op) {
279
+ // write batch
280
+ const opGql = (0, json_to_graphql_query_1.jsonToGraphQLQuery)(op.query);
281
+ const start = Date.now();
282
+ const opRes = await this.backend.postQuery(opGql);
283
+ const end = Date.now();
284
+ // extract ids of newly written records and set on upserts.
285
+ // the ids are used as foreign keys by subsequent batches
286
+ // step 1: access array of results
287
+ // will be at path 'opRes.data.insert_<model>.returning'
288
+ const paths = (0, lodash_1.keys)(opRes.data);
289
+ (0, ts_essentials_1.assert)(paths.length === 1, `expected one element in ${paths}`);
290
+ const objects = (0, lodash_1.get)(opRes.data, `${paths[0]}.returning`);
291
+ (0, ts_essentials_1.assert)(Array.isArray(objects), `expected array`);
292
+ for (const obj of objects) {
293
+ // step 2: assign id to all upserts related to this object
294
+ // construct key from returned result and lookup upsert by key
295
+ const key = this.serializedPrimaryKey(model, obj);
296
+ const upserts = op.upsertsByKey.get(key);
297
+ (0, ts_essentials_1.assert)(upserts, `failed to resolve upserts for ${model} and ${key}`);
298
+ (0, ts_essentials_1.assert)(obj.id, `failed to resolve id for ${model} and ${JSON.stringify(obj)}`);
299
+ upserts.forEach((u) => (u.id = obj.id));
300
+ if (this.updateResetLimit && op.isRoot) {
301
+ const recordRefreshedAtMs = new Date(obj.refreshedAt).getTime();
302
+ this.resetLimitMillis = Math.min(recordRefreshedAtMs, this.resetLimitMillis);
303
+ }
304
+ }
305
+ return {
306
+ model,
307
+ numObjects: objects.length,
308
+ durationMs: end - start,
309
+ };
310
+ }
311
+ async doFlushUpsertBuffer() {
312
+ for (const model of this.tableDependencies) {
313
+ const modelUpserts = this.upsertBuffer.pop(model);
314
+ if (modelUpserts) {
315
+ const withLevels = this.selfReferentModels.has(model)
316
+ ? toLevels(modelUpserts)
317
+ : [modelUpserts];
318
+ const iterator = batchIterator(withLevels, (batch) => {
319
+ const ops = this.toUpsertOps(model, batch);
320
+ return Promise.all(ops.map((op) => this.execUpsert(model, op)));
321
+ });
322
+ try {
323
+ for await (const results of iterator) {
324
+ for (const result of results) {
325
+ this.logger.debug(`Executed ${model} upsert with ${result.numObjects} object(s) in ${result.durationMs}ms`);
326
+ }
327
+ }
328
+ }
329
+ catch (e) {
330
+ throw new verror_1.VError(e, `failed to write upserts for ${model}`);
331
+ }
332
+ }
333
+ }
334
+ }
335
+ async writeTimestampedRecord(record) {
336
+ switch (record.operation) {
337
+ case types_1.Operation.UPSERT:
338
+ await this.writeRecord(record.model, record.data, record.origin);
339
+ break;
340
+ case types_1.Operation.UPDATE:
341
+ await this.writeUpdateRecord(record);
342
+ break;
343
+ case types_1.Operation.DELETION:
344
+ await this.writeDeletionRecord(record);
345
+ break;
346
+ default:
347
+ throw new verror_1.VError(`Unsupported operation ${record.operation} for ${record}`);
348
+ }
349
+ }
350
+ async writeUpdateRecord(record) {
351
+ const upsertRec = {
352
+ ...record.where,
353
+ ...(0, lodash_1.pick)(record.patch, record.mask),
354
+ };
355
+ const obj = this.createMutationObject(record.model, upsertRec, record.origin, true);
356
+ const mutation = {
357
+ [`insert_${record.model}_one`]: { __args: obj, id: true },
358
+ };
359
+ await this.postQuery({ mutation }, `Failed to update ${record.model} record`);
360
+ }
361
+ async writeDeletionRecord(record) {
362
+ const mutation = {
363
+ [`delete_${record.model}`]: {
364
+ __args: {
365
+ where: this.createWhereClause(record.model, record.where),
366
+ },
367
+ affected_rows: true,
368
+ },
369
+ };
370
+ await this.postQuery({ mutation }, `Failed to delete ${record.model} record`);
371
+ }
372
+ async postQuery(query, errorMsg) {
373
+ this.writeBuffer.push({
374
+ query,
375
+ errorMsg,
376
+ });
377
+ if (this.writeBuffer.length >= this.mutationBatchSize) {
378
+ await this.flush();
379
+ }
380
+ }
381
+ async flush() {
382
+ // sequentially flush upsert then write buffer
383
+ // we do this sequentially because we may have updates
384
+ // that operate on records in the upsert buffers and
385
+ // therefore need the upserts written first
386
+ await this.flushUpsertBuffer();
387
+ await this.flushWriteBuffer();
388
+ }
389
+ async flushWriteBuffer() {
390
+ const queries = this.writeBuffer.map((op) => op.query);
391
+ const gql = GraphQLClient.batchMutation(queries);
392
+ if (gql) {
393
+ const res = await this.backend.postQuery(gql);
394
+ if (res.errors) {
395
+ this.logger.warn(`Error while saving batch: ${JSON.stringify(res.errors)}. Query: ${gql}`);
396
+ // now try mutations individually and fail on the first bad one
397
+ for (const op of this.writeBuffer) {
398
+ const opGql = (0, json_to_graphql_query_1.jsonToGraphQLQuery)(op.query);
399
+ const opRes = await this.backend.postQuery(opGql);
400
+ this.writeBuffer.shift();
401
+ if (opRes.errors) {
402
+ throw new verror_1.VError(`${op.errorMsg} with query '${opGql}': ${JSON.stringify(opRes.errors)}`);
403
+ }
404
+ }
405
+ }
406
+ else {
407
+ // res.data is expected to have one object with 'id' and 'refreshedAt' for each of the mutations
408
+ // {
409
+ // "m0": {
410
+ // "id": ...,
411
+ // "refreshedAt": ...
412
+ // },
413
+ // "m1": {
414
+ // "id": ...,
415
+ // "refreshedAt": ...
416
+ // },
417
+ // ...
418
+ // }
419
+ if (this.updateResetLimit) {
420
+ for (const mutationRes of Object.values(res.data)) {
421
+ const refreshedAt = (0, lodash_1.get)(mutationRes, 'refreshedAt');
422
+ if (refreshedAt) {
423
+ const recordRefreshedAtMs = new Date(refreshedAt).getTime();
424
+ this.resetLimitMillis = Math.min(recordRefreshedAtMs, this.resetLimitMillis);
425
+ }
426
+ }
427
+ }
428
+ // truncate the buffer
429
+ this.writeBuffer.splice(0);
430
+ }
431
+ }
432
+ }
433
+ /**
434
+ * Constructs a gql query from an array of json mutations.
435
+ * The outputted qql mutation might look like:
436
+ *
437
+ * mutation {
438
+ * i1: insert_cicd_Artifact_one(object: {uid: "u1b"}) {
439
+ * id
440
+ * refreshedAt
441
+ * }
442
+ * i2: insert_cicd_Artifact_one(object: {uid: "u2b"}) {
443
+ * id
444
+ * refreshedAt
445
+ * }
446
+ * }
447
+ *
448
+ * Notable here are the i1/i2 aliases. These are required when multiple operations
449
+ * share the same name (e.g. insert_cicd_Artifact_one) and are supported in
450
+ * jsonToGraphQLQuery with __aliasFor directive.
451
+ *
452
+ * @return batch gql mutation or undefined if the input is undefined, empty
453
+ * or doesn't contain any mutations.
454
+ */
455
+ static batchMutation(queries) {
456
+ if (queries && queries.length > 0) {
457
+ const queryObj = {};
458
+ queries.forEach((query, idx) => {
459
+ if (query.mutation) {
460
+ const queryType = Object.keys(query.mutation)[0];
461
+ const queryBody = query.mutation[queryType];
462
+ queryObj[`m${idx}`] = {
463
+ __aliasFor: queryType,
464
+ ...queryBody,
465
+ };
466
+ }
467
+ });
468
+ if (Object.keys(queryObj).length > 0) {
469
+ return (0, json_to_graphql_query_1.jsonToGraphQLQuery)({ mutation: queryObj });
470
+ }
471
+ }
472
+ return undefined;
473
+ }
474
+ createWhereClause(model, record) {
475
+ const obj = {};
476
+ for (const [field, value] of Object.entries(record)) {
477
+ const nestedModel = this.schema.references[model][field];
478
+ if (nestedModel && value) {
479
+ obj[nestedModel.field] = this.createWhereClause(nestedModel.model, value);
480
+ }
481
+ else {
482
+ const val = this.formatFieldValue(model, field, value);
483
+ if (val)
484
+ obj[field] = { _eq: val };
485
+ }
486
+ }
487
+ return obj;
488
+ }
489
+ createMutationObject(model, record, origin, keepExistingOrigin, nested) {
490
+ const obj = {};
491
+ const foreignKeys = [];
492
+ for (const [field, value] of Object.entries(record)) {
493
+ const nestedModel = this.schema.references[model][field];
494
+ if (nestedModel && value) {
495
+ foreignKeys.push(nestedModel.foreignKey);
496
+ obj[nestedModel.field] = this.createMutationObject(nestedModel.model, value, undefined, keepExistingOrigin, true);
497
+ }
498
+ else {
499
+ const val = this.formatFieldValue(model, field, value);
500
+ if (!(0, lodash_1.isNil)(val))
501
+ obj[field] = val;
502
+ }
503
+ }
504
+ if (origin) {
505
+ obj['origin'] = origin;
506
+ }
507
+ const updateFieldMask = new Set(Object.keys(obj).concat(foreignKeys));
508
+ if (keepExistingOrigin) {
509
+ updateFieldMask.delete('origin');
510
+ }
511
+ return {
512
+ [nested ? 'data' : 'object']: obj,
513
+ on_conflict: this.createConflictClause(model, nested, updateFieldMask),
514
+ };
515
+ }
516
+ addUpsert(model, record, origin) {
517
+ const object = {};
518
+ const foreignKeys = {};
519
+ for (const [field, value] of Object.entries(record)) {
520
+ const nestedModel = this.schema.references[model][field];
521
+ if (nestedModel) {
522
+ if ((0, lodash_1.isNil)(value)) {
523
+ // for explicit nil relation, set the FK of this record to null
524
+ object[nestedModel.foreignKey] = null;
525
+ }
526
+ else {
527
+ foreignKeys[field] = this.addUpsert(nestedModel.model, value);
528
+ }
529
+ }
530
+ else if (this.isValidField(model, field)) {
531
+ const val = this.formatFieldValue(model, field, value);
532
+ object[field] = (0, lodash_1.isNil)(val) ? null : val;
533
+ }
534
+ }
535
+ if (origin) {
536
+ object['origin'] = origin;
537
+ // add root flag to top-level objects
538
+ object[ROOT_FLAG] = true;
539
+ }
540
+ // since all our uids are non-null, check for nil uids early
541
+ // to prevent losing an entire batch later with db constraint
542
+ // error on flush
543
+ if ((0, lodash_1.has)(object, 'uid') && (0, lodash_1.isNil)(object['uid'])) {
544
+ throw new verror_1.VError('cannot upsert null or undefined uid for model %s with keys %s', model, JSON.stringify((0, lodash_1.pick)(record, this.schema.primaryKeys[model])));
545
+ }
546
+ const upsert = {
547
+ model,
548
+ object,
549
+ foreignKeys: foreignKeys,
550
+ };
551
+ // index by model
552
+ this.upsertBuffer.add(upsert);
553
+ return upsert;
554
+ }
555
+ objectWithForeignKeys(upsert) {
556
+ if ((0, lodash_1.isEmpty)(upsert.foreignKeys)) {
557
+ return upsert.object;
558
+ }
559
+ // for each FK, copy id of related upsert to FK field
560
+ // the upsert's id was populated after the associated batch
561
+ // was written in doFlushUpsertBuffer
562
+ const result = (0, lodash_1.clone)(upsert.object);
563
+ for (const [relName, fkUpsert] of Object.entries(upsert.foreignKeys)) {
564
+ // foreign key was constructed from schema so the following is safe to access
565
+ const fkField = this.schema.references[upsert.model][relName].foreignKey;
566
+ const fkValue = fkUpsert.id;
567
+ (0, ts_essentials_1.assert)(!(0, lodash_1.isNil)(fkValue), `failed to resolve fk value for ${relName} from ${JSON.stringify(fkUpsert)}`);
568
+ result[fkField] = fkValue;
569
+ }
570
+ return result;
571
+ }
572
+ /**
573
+ * returns serialized version of keys fields
574
+ */
575
+ serializedPrimaryKey(model, obj) {
576
+ return serialize(strictPick(obj, this.schema.primaryKeys[model]));
577
+ }
578
+ toUpsertOps(model, modelUpserts) {
579
+ // shared among all the results of this method
580
+ const upsertsByKey = new Map();
581
+ // add FKs and index upsert by primary key
582
+ // the index is needed after write to find source
583
+ // upsert and set id
584
+ const all = modelUpserts.map((u) => {
585
+ const fullObj = this.objectWithForeignKeys(u);
586
+ const key = this.serializedPrimaryKey(model, fullObj);
587
+ const upsertsForKey = upsertsByKey.get(key);
588
+ if (!upsertsForKey) {
589
+ upsertsByKey.set(key, [u]);
590
+ }
591
+ else {
592
+ upsertsForKey.push(u);
593
+ }
594
+ return fullObj;
595
+ });
596
+ const primaryKeys = this.schema.primaryKeys[model];
597
+ // there can be multiple records that represent the
598
+ // same object. merge all records into one
599
+ const allObjects = mergeByPrimaryKey(all, primaryKeys);
600
+ const keysObj = primaryKeys
601
+ .sort()
602
+ .reduce((a, v) => ({ ...a, [v]: true }), {});
603
+ // for each set of unique keys, build an UpsertOp
604
+ const groups = groupByKeys(allObjects);
605
+ return groups.map((objects) => {
606
+ (0, ts_essentials_1.assert)(objects === null || objects === void 0 ? void 0 : objects.length, 'objects should not be empty');
607
+ // all objects have same fields due to groupByKeys call
608
+ // pull out fields of first as mask for update fields to ensure
609
+ // fields that aren't in the data are not modified by the upsert
610
+ const updateColumnMask = new Set(Object.keys(objects[0]));
611
+ // determine if this group contains root objects
612
+ let isRoot = false;
613
+ if ((0, lodash_1.has)(objects[0], ROOT_FLAG)) {
614
+ isRoot = true;
615
+ // remove root flag from all objects
616
+ objects.forEach((o) => delete o[ROOT_FLAG]);
617
+ }
618
+ const onConflict = this.createUpsertConflictClause(model, updateColumnMask, isRoot);
619
+ const mutation = {
620
+ mutation: {
621
+ [`insert_${model}`]: {
622
+ __args: {
623
+ // sort objects to avoid deadlocks on concurrent inserts
624
+ objects: (0, lodash_1.orderBy)(objects, primaryKeys),
625
+ on_conflict: onConflict,
626
+ },
627
+ returning: {
628
+ id: true,
629
+ refreshedAt: true,
630
+ ...keysObj,
631
+ },
632
+ },
633
+ },
634
+ };
635
+ return {
636
+ query: mutation,
637
+ upsertsByKey,
638
+ isRoot,
639
+ };
640
+ });
641
+ }
642
+ isValidField(model, field) {
643
+ return (0, lodash_1.has)(this.schema.scalars[model], field);
644
+ }
645
+ formatFieldValue(model, field, value) {
646
+ if ((0, lodash_1.isNil)(value))
647
+ return undefined;
648
+ if (!this.isValidField(model, field)) {
649
+ this.logger.debug(`Could not find type of ${field} in ${model}`);
650
+ return undefined;
651
+ }
652
+ const type = this.schema.scalars[model][field];
653
+ if (type === 'timestamptz') {
654
+ // The field value may already be a string. E.g., if coming from the Faros Feeds source.
655
+ return typeof value === 'string' ? value : timestamptz(value);
656
+ }
657
+ else if (type.startsWith('_') && typeof value !== 'string') {
658
+ if (!Array.isArray(value)) {
659
+ throw new Error(`expected array for ${model}.${field} of type ${type}. Received: ${JSON.stringify(value)}`);
660
+ }
661
+ // format array value as postgres literal
662
+ return toPostgresArrayLiteral(value);
663
+ }
664
+ else if (typeof value === 'object' || Array.isArray(value)) {
665
+ return (0, traverse_1.default)(value).map(function (val) {
666
+ if (val instanceof Date) {
667
+ this.update(val.getTime());
668
+ }
669
+ });
670
+ }
671
+ return value;
672
+ }
673
+ createConflictClause(model, nested, updateFieldMask) {
674
+ const updateColumns = nested
675
+ ? []
676
+ : (0, lodash_1.difference)(Object.keys(this.schema.scalars[model]), this.schema.primaryKeys[model]);
677
+ const filteredUpdateFields = updateFieldMask && !nested
678
+ ? updateColumns.filter((c) => updateFieldMask.has(c))
679
+ : updateColumns;
680
+ // if empty, use model keys to ensure queries always return results
681
+ if ((0, lodash_1.isEmpty)(filteredUpdateFields)) {
682
+ filteredUpdateFields.push(...this.schema.primaryKeys[model]);
683
+ }
684
+ return {
685
+ constraint: new json_to_graphql_query_1.EnumType(`${model}_pkey`),
686
+ update_columns: filteredUpdateFields.map((c) => new json_to_graphql_query_1.EnumType(c)),
687
+ };
688
+ }
689
+ createUpsertConflictClause(model, updateFieldMask, isRoot) {
690
+ // superset of fields that can be updated
691
+ const updateColumns = (0, lodash_1.difference)(Object.keys(this.schema.scalars[model]), this.schema.primaryKeys[model]);
692
+ // filter to only those fields that are in the data
693
+ const filteredUpdateFields = updateColumns.filter((c) => updateFieldMask.has(c));
694
+ // for root objects, always update refreshedAt
695
+ if (isRoot) {
696
+ filteredUpdateFields.push('refreshedAt');
697
+ }
698
+ // if empty, use model keys to ensure queries always return results
699
+ if ((0, lodash_1.isEmpty)(filteredUpdateFields)) {
700
+ filteredUpdateFields.push(...this.schema.primaryKeys[model]);
701
+ }
702
+ return {
703
+ constraint: new json_to_graphql_query_1.EnumType(`${model}_pkey`),
704
+ update_columns: filteredUpdateFields.map((c) => new json_to_graphql_query_1.EnumType(c)),
705
+ };
706
+ }
707
+ }
708
+ exports.GraphQLClient = GraphQLClient;
709
+ function timestamptz(date) {
710
+ return date_format_1.default.asString(date_format_1.default.ISO8601_WITH_TZ_OFFSET_FORMAT, date);
711
+ }
712
+ //# sourceMappingURL=graphql-client.js.map