@squiz/job-runner-lib 1.66.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 (826) hide show
  1. package/.env.example +1 -0
  2. package/CHANGELOG.md +726 -0
  3. package/build.js +17 -0
  4. package/jest.config.ts +24 -0
  5. package/jest.integration.config.ts +27 -0
  6. package/lib/TestHelpers.d.ts +18 -0
  7. package/lib/TestHelpers.js +97 -0
  8. package/lib/TestHelpers.js.map +1 -0
  9. package/lib/domains/__test__/createPackage.d.ts +3 -0
  10. package/lib/domains/__test__/createPackage.js +45 -0
  11. package/lib/domains/__test__/createPackage.js.map +1 -0
  12. package/lib/domains/__test__/loadAllUnitTestComponents.d.ts +3 -0
  13. package/lib/domains/__test__/loadAllUnitTestComponents.js +63 -0
  14. package/lib/domains/__test__/loadAllUnitTestComponents.js.map +1 -0
  15. package/lib/domains/component/component-context/__mocks__/mockedManifestModel.d.ts +3 -0
  16. package/lib/domains/component/component-context/__mocks__/mockedManifestModel.js +33 -0
  17. package/lib/domains/component/component-context/__mocks__/mockedManifestModel.js.map +1 -0
  18. package/lib/domains/component/component-context/__mocks__/mockedUriObj.d.ts +3 -0
  19. package/lib/domains/component/component-context/__mocks__/mockedUriObj.js +38 -0
  20. package/lib/domains/component/component-context/__mocks__/mockedUriObj.js.map +1 -0
  21. package/lib/domains/component/component-context/__mocks__/mockedUriObjPreview.d.ts +3 -0
  22. package/lib/domains/component/component-context/__mocks__/mockedUriObjPreview.js +38 -0
  23. package/lib/domains/component/component-context/__mocks__/mockedUriObjPreview.js.map +1 -0
  24. package/lib/domains/component/component-context/createComponentContextualFunctions.d.ts +23 -0
  25. package/lib/domains/component/component-context/createComponentContextualFunctions.js +75 -0
  26. package/lib/domains/component/component-context/createComponentContextualFunctions.js.map +1 -0
  27. package/lib/domains/component/component-context/createComponentContextualFunctions.spec.d.ts +1 -0
  28. package/lib/domains/component/component-context/createComponentContextualFunctions.spec.js +248 -0
  29. package/lib/domains/component/component-context/createComponentContextualFunctions.spec.js.map +1 -0
  30. package/lib/domains/component/errors/ComponentError.d.ts +12 -0
  31. package/lib/domains/component/errors/ComponentError.js +20 -0
  32. package/lib/domains/component/errors/ComponentError.js.map +1 -0
  33. package/lib/domains/component/errors/JobError.d.ts +10 -0
  34. package/lib/domains/component/errors/JobError.js +18 -0
  35. package/lib/domains/component/errors/JobError.js.map +1 -0
  36. package/lib/domains/component/index.d.ts +13 -0
  37. package/lib/domains/component/index.js +30 -0
  38. package/lib/domains/component/index.js.map +1 -0
  39. package/lib/domains/component/models/Component.d.ts +7 -0
  40. package/lib/domains/component/models/Component.js +13 -0
  41. package/lib/domains/component/models/Component.js.map +1 -0
  42. package/lib/domains/component/models/Component.spec.d.ts +1 -0
  43. package/lib/domains/component/models/Component.spec.js +18 -0
  44. package/lib/domains/component/models/Component.spec.js.map +1 -0
  45. package/lib/domains/component/models/ComponentVersion.d.ts +18 -0
  46. package/lib/domains/component/models/ComponentVersion.js +35 -0
  47. package/lib/domains/component/models/ComponentVersion.js.map +1 -0
  48. package/lib/domains/component/models/ComponentVersion.spec.d.ts +1 -0
  49. package/lib/domains/component/models/ComponentVersion.spec.js +55 -0
  50. package/lib/domains/component/models/ComponentVersion.spec.js.map +1 -0
  51. package/lib/domains/component/repositories/ComponentRepository.d.ts +12 -0
  52. package/lib/domains/component/repositories/ComponentRepository.integration.spec.d.ts +1 -0
  53. package/lib/domains/component/repositories/ComponentRepository.integration.spec.js +111 -0
  54. package/lib/domains/component/repositories/ComponentRepository.integration.spec.js.map +1 -0
  55. package/lib/domains/component/repositories/ComponentRepository.js +28 -0
  56. package/lib/domains/component/repositories/ComponentRepository.js.map +1 -0
  57. package/lib/domains/component/repositories/ComponentVersionRepository.d.ts +21 -0
  58. package/lib/domains/component/repositories/ComponentVersionRepository.integration.spec.d.ts +1 -0
  59. package/lib/domains/component/repositories/ComponentVersionRepository.integration.spec.js +378 -0
  60. package/lib/domains/component/repositories/ComponentVersionRepository.integration.spec.js.map +1 -0
  61. package/lib/domains/component/repositories/ComponentVersionRepository.js +83 -0
  62. package/lib/domains/component/repositories/ComponentVersionRepository.js.map +1 -0
  63. package/lib/domains/component/services/ComponentService.d.ts +40 -0
  64. package/lib/domains/component/services/ComponentService.integration.spec.d.ts +1 -0
  65. package/lib/domains/component/services/ComponentService.integration.spec.js +614 -0
  66. package/lib/domains/component/services/ComponentService.integration.spec.js.map +1 -0
  67. package/lib/domains/component/services/ComponentService.js +254 -0
  68. package/lib/domains/component/services/ComponentService.js.map +1 -0
  69. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.d.ts +12 -0
  70. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.js +15 -0
  71. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.js.map +1 -0
  72. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.spec.d.ts +1 -0
  73. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.spec.js +75 -0
  74. package/lib/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.spec.js.map +1 -0
  75. package/lib/domains/component/utils/getComponentFileSystemFolder.d.ts +1 -0
  76. package/lib/domains/component/utils/getComponentFileSystemFolder.js +12 -0
  77. package/lib/domains/component/utils/getComponentFileSystemFolder.js.map +1 -0
  78. package/lib/domains/component/utils/getComponentFileSystemFolder.spec.d.ts +1 -0
  79. package/lib/domains/component/utils/getComponentFileSystemFolder.spec.js +13 -0
  80. package/lib/domains/component/utils/getComponentFileSystemFolder.spec.js.map +1 -0
  81. package/lib/domains/component/utils/getComponentName.d.ts +1 -0
  82. package/lib/domains/component/utils/getComponentName.js +8 -0
  83. package/lib/domains/component/utils/getComponentName.js.map +1 -0
  84. package/lib/domains/component/utils/getComponentName.spec.d.ts +1 -0
  85. package/lib/domains/component/utils/getComponentName.spec.js +9 -0
  86. package/lib/domains/component/utils/getComponentName.spec.js.map +1 -0
  87. package/lib/domains/component/utils/moveFilesAndDirectories.d.ts +1 -0
  88. package/lib/domains/component/utils/moveFilesAndDirectories.js +33 -0
  89. package/lib/domains/component/utils/moveFilesAndDirectories.js.map +1 -0
  90. package/lib/domains/component/utils/moveFilesAndDirectories.spec.d.ts +1 -0
  91. package/lib/domains/component/utils/moveFilesAndDirectories.spec.js +52 -0
  92. package/lib/domains/component/utils/moveFilesAndDirectories.spec.js.map +1 -0
  93. package/lib/domains/component/web-models/ComponentForWeb.d.ts +11 -0
  94. package/lib/domains/component/web-models/ComponentForWeb.js +3 -0
  95. package/lib/domains/component/web-models/ComponentForWeb.js.map +1 -0
  96. package/lib/domains/component/web-models/ComponentVersionWebModel.d.ts +15 -0
  97. package/lib/domains/component/web-models/ComponentVersionWebModel.js +3 -0
  98. package/lib/domains/component/web-models/ComponentVersionWebModel.js.map +1 -0
  99. package/lib/domains/component/web-models/ComponentsForWeb.d.ts +17 -0
  100. package/lib/domains/component/web-models/ComponentsForWeb.js +3 -0
  101. package/lib/domains/component/web-models/ComponentsForWeb.js.map +1 -0
  102. package/lib/domains/component-set/errors/InvalidEnvironmentVariablesError.d.ts +5 -0
  103. package/lib/domains/component-set/errors/InvalidEnvironmentVariablesError.js +14 -0
  104. package/lib/domains/component-set/errors/InvalidEnvironmentVariablesError.js.map +1 -0
  105. package/lib/domains/component-set/index.d.ts +13 -0
  106. package/lib/domains/component-set/index.js +30 -0
  107. package/lib/domains/component-set/index.js.map +1 -0
  108. package/lib/domains/component-set/models/ComponentSet.d.ts +20 -0
  109. package/lib/domains/component-set/models/ComponentSet.js +28 -0
  110. package/lib/domains/component-set/models/ComponentSet.js.map +1 -0
  111. package/lib/domains/component-set/models/ComponentSet.spec.d.ts +1 -0
  112. package/lib/domains/component-set/models/ComponentSet.spec.js +45 -0
  113. package/lib/domains/component-set/models/ComponentSet.spec.js.map +1 -0
  114. package/lib/domains/component-set/models/ComponentSetComponentVersion.d.ts +23 -0
  115. package/lib/domains/component-set/models/ComponentSetComponentVersion.js +29 -0
  116. package/lib/domains/component-set/models/ComponentSetComponentVersion.js.map +1 -0
  117. package/lib/domains/component-set/models/ComponentSetComponentVersion.spec.d.ts +1 -0
  118. package/lib/domains/component-set/models/ComponentSetComponentVersion.spec.js +83 -0
  119. package/lib/domains/component-set/models/ComponentSetComponentVersion.spec.js.map +1 -0
  120. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.d.ts +12 -0
  121. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.js +57 -0
  122. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.js.map +1 -0
  123. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.spec.d.ts +1 -0
  124. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.spec.js +60 -0
  125. package/lib/domains/component-set/models/ComponentSetComponentVersionEditable.spec.js.map +1 -0
  126. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.d.ts +11 -0
  127. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.js +17 -0
  128. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.js.map +1 -0
  129. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.spec.d.ts +1 -0
  130. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.spec.js +34 -0
  131. package/lib/domains/component-set/models/ComponentSetComponentVersionExcluded.spec.js.map +1 -0
  132. package/lib/domains/component-set/models/ComponentSetRule.d.ts +12 -0
  133. package/lib/domains/component-set/models/ComponentSetRule.js +50 -0
  134. package/lib/domains/component-set/models/ComponentSetRule.js.map +1 -0
  135. package/lib/domains/component-set/models/ComponentSetRule.spec.d.ts +1 -0
  136. package/lib/domains/component-set/models/ComponentSetRule.spec.js +29 -0
  137. package/lib/domains/component-set/models/ComponentSetRule.spec.js.map +1 -0
  138. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.d.ts +10 -0
  139. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.integration.spec.d.ts +1 -0
  140. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.integration.spec.js +127 -0
  141. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.integration.spec.js.map +1 -0
  142. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.js +37 -0
  143. package/lib/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.js.map +1 -0
  144. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.d.ts +10 -0
  145. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.integration.spec.d.ts +1 -0
  146. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.integration.spec.js +127 -0
  147. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.integration.spec.js.map +1 -0
  148. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.js +37 -0
  149. package/lib/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.js.map +1 -0
  150. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.d.ts +10 -0
  151. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.integration.spec.d.ts +1 -0
  152. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.integration.spec.js +163 -0
  153. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.integration.spec.js.map +1 -0
  154. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.js +22 -0
  155. package/lib/domains/component-set/repositories/ComponentSetComponentVersionRepository.js.map +1 -0
  156. package/lib/domains/component-set/repositories/ComponentSetRepository.d.ts +13 -0
  157. package/lib/domains/component-set/repositories/ComponentSetRepository.integration.spec.d.ts +1 -0
  158. package/lib/domains/component-set/repositories/ComponentSetRepository.integration.spec.js +161 -0
  159. package/lib/domains/component-set/repositories/ComponentSetRepository.integration.spec.js.map +1 -0
  160. package/lib/domains/component-set/repositories/ComponentSetRepository.js +48 -0
  161. package/lib/domains/component-set/repositories/ComponentSetRepository.js.map +1 -0
  162. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.d.ts +13 -0
  163. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.integration.spec.d.ts +1 -0
  164. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.integration.spec.js +88 -0
  165. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.integration.spec.js.map +1 -0
  166. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.js +55 -0
  167. package/lib/domains/component-set/repositories/ComponentSetRuleRepository.js.map +1 -0
  168. package/lib/domains/component-set/services/ComponentSetRuleService.d.ts +10 -0
  169. package/lib/domains/component-set/services/ComponentSetRuleService.integration.spec.d.ts +1 -0
  170. package/lib/domains/component-set/services/ComponentSetRuleService.integration.spec.js +107 -0
  171. package/lib/domains/component-set/services/ComponentSetRuleService.integration.spec.js.map +1 -0
  172. package/lib/domains/component-set/services/ComponentSetRuleService.js +23 -0
  173. package/lib/domains/component-set/services/ComponentSetRuleService.js.map +1 -0
  174. package/lib/domains/component-set/services/ComponentSetService.d.ts +37 -0
  175. package/lib/domains/component-set/services/ComponentSetService.js +13 -0
  176. package/lib/domains/component-set/services/ComponentSetService.js.map +1 -0
  177. package/lib/domains/component-set/services/ComponentSetService.spec.d.ts +1 -0
  178. package/lib/domains/component-set/services/ComponentSetService.spec.js +120 -0
  179. package/lib/domains/component-set/services/ComponentSetService.spec.js.map +1 -0
  180. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.d.ts +24 -0
  181. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.js +85 -0
  182. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.js.map +1 -0
  183. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.spec.d.ts +1 -0
  184. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.spec.js +141 -0
  185. package/lib/domains/component-set/services/ComponentSetServiceForLocalDev.spec.js.map +1 -0
  186. package/lib/domains/component-set/services/ComponentSetServiceForProduction.d.ts +53 -0
  187. package/lib/domains/component-set/services/ComponentSetServiceForProduction.integration.spec.d.ts +1 -0
  188. package/lib/domains/component-set/services/ComponentSetServiceForProduction.integration.spec.js +2565 -0
  189. package/lib/domains/component-set/services/ComponentSetServiceForProduction.integration.spec.js.map +1 -0
  190. package/lib/domains/component-set/services/ComponentSetServiceForProduction.js +601 -0
  191. package/lib/domains/component-set/services/ComponentSetServiceForProduction.js.map +1 -0
  192. package/lib/domains/component-set/services/EnvironmentVariables.d.ts +1 -0
  193. package/lib/domains/component-set/services/EnvironmentVariables.js +3 -0
  194. package/lib/domains/component-set/services/EnvironmentVariables.js.map +1 -0
  195. package/lib/domains/component-set/services/Headers.d.ts +1 -0
  196. package/lib/domains/component-set/services/Headers.js +3 -0
  197. package/lib/domains/component-set/services/Headers.js.map +1 -0
  198. package/lib/domains/component-set/services/RuntimeComponentSet.d.ts +6 -0
  199. package/lib/domains/component-set/services/RuntimeComponentSet.js +3 -0
  200. package/lib/domains/component-set/services/RuntimeComponentSet.js.map +1 -0
  201. package/lib/domains/component-set/web-models/ComponentSetComponentVersionForWeb.d.ts +5 -0
  202. package/lib/domains/component-set/web-models/ComponentSetComponentVersionForWeb.js +3 -0
  203. package/lib/domains/component-set/web-models/ComponentSetComponentVersionForWeb.js.map +1 -0
  204. package/lib/domains/component-set/web-models/ComponentSetForWeb.d.ts +64 -0
  205. package/lib/domains/component-set/web-models/ComponentSetForWeb.js +22 -0
  206. package/lib/domains/component-set/web-models/ComponentSetForWeb.js.map +1 -0
  207. package/lib/domains/content/index.d.ts +4 -0
  208. package/lib/domains/content/index.js +21 -0
  209. package/lib/domains/content/index.js.map +1 -0
  210. package/lib/domains/content/services/ComponentContentSchemaService.d.ts +9 -0
  211. package/lib/domains/content/services/ComponentContentSchemaService.js +45 -0
  212. package/lib/domains/content/services/ComponentContentSchemaService.js.map +1 -0
  213. package/lib/domains/content/services/ComponentContentSchemaService.spec.d.ts +1 -0
  214. package/lib/domains/content/services/ComponentContentSchemaService.spec.js +240 -0
  215. package/lib/domains/content/services/ComponentContentSchemaService.spec.js.map +1 -0
  216. package/lib/domains/content/services/ContentItemService.d.ts +7 -0
  217. package/lib/domains/content/services/ContentItemService.js +36 -0
  218. package/lib/domains/content/services/ContentItemService.js.map +1 -0
  219. package/lib/domains/content/services/ContentItemService.spec.d.ts +1 -0
  220. package/lib/domains/content/services/ContentItemService.spec.js +95 -0
  221. package/lib/domains/content/services/ContentItemService.spec.js.map +1 -0
  222. package/lib/domains/content/services/DynamicContentItemService.d.ts +8 -0
  223. package/lib/domains/content/services/DynamicContentItemService.js +31 -0
  224. package/lib/domains/content/services/DynamicContentItemService.js.map +1 -0
  225. package/lib/domains/content/services/DynamicContentItemService.spec.d.ts +1 -0
  226. package/lib/domains/content/services/DynamicContentItemService.spec.js +81 -0
  227. package/lib/domains/content/services/DynamicContentItemService.spec.js.map +1 -0
  228. package/lib/domains/content/utils/getContentSchemaName.d.ts +1 -0
  229. package/lib/domains/content/utils/getContentSchemaName.js +8 -0
  230. package/lib/domains/content/utils/getContentSchemaName.js.map +1 -0
  231. package/lib/domains/content/utils/getContentSchemaName.spec.d.ts +1 -0
  232. package/lib/domains/content/utils/getContentSchemaName.spec.js +9 -0
  233. package/lib/domains/content/utils/getContentSchemaName.spec.js.map +1 -0
  234. package/lib/domains/db/ComponentConnectionManager.d.ts +3 -0
  235. package/lib/domains/db/ComponentConnectionManager.js +3 -0
  236. package/lib/domains/db/ComponentConnectionManager.js.map +1 -0
  237. package/lib/domains/db/ComponentRepositories.d.ts +19 -0
  238. package/lib/domains/db/ComponentRepositories.js +23 -0
  239. package/lib/domains/db/ComponentRepositories.js.map +1 -0
  240. package/lib/domains/db/createConnectionManager.d.ts +5 -0
  241. package/lib/domains/db/createConnectionManager.js +16 -0
  242. package/lib/domains/db/createConnectionManager.js.map +1 -0
  243. package/lib/domains/db/index.d.ts +3 -0
  244. package/lib/domains/db/index.js +20 -0
  245. package/lib/domains/db/index.js.map +1 -0
  246. package/lib/domains/db/migration-list.d.ts +2 -0
  247. package/lib/domains/db/migration-list.js +19 -0
  248. package/lib/domains/db/migration-list.js.map +1 -0
  249. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.d.ts +2 -0
  250. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.js +24 -0
  251. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.js.map +1 -0
  252. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.spec.d.ts +5 -0
  253. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.spec.js +24 -0
  254. package/lib/domains/job/ParsePartitionKey/ParsePartitionKey.spec.js.map +1 -0
  255. package/lib/domains/job/ParsePartitionKey/index.d.ts +1 -0
  256. package/lib/domains/job/ParsePartitionKey/index.js +18 -0
  257. package/lib/domains/job/ParsePartitionKey/index.js.map +1 -0
  258. package/lib/domains/job/constants/JobExecutionStatus.constants.d.ts +8 -0
  259. package/lib/domains/job/constants/JobExecutionStatus.constants.js +12 -0
  260. package/lib/domains/job/constants/JobExecutionStatus.constants.js.map +1 -0
  261. package/lib/domains/job/constants/QueryParams.d.ts +14 -0
  262. package/lib/domains/job/constants/QueryParams.js +19 -0
  263. package/lib/domains/job/constants/QueryParams.js.map +1 -0
  264. package/lib/domains/job/constants/Repository.constants.d.ts +12 -0
  265. package/lib/domains/job/constants/Repository.constants.js +15 -0
  266. package/lib/domains/job/constants/Repository.constants.js.map +1 -0
  267. package/lib/domains/job/core/dynamoClient.mock.d.ts +8 -0
  268. package/lib/domains/job/core/dynamoClient.mock.js +32 -0
  269. package/lib/domains/job/core/dynamoClient.mock.js.map +1 -0
  270. package/lib/domains/job/core/pagination/index.d.ts +3 -0
  271. package/lib/domains/job/core/pagination/index.js +20 -0
  272. package/lib/domains/job/core/pagination/index.js.map +1 -0
  273. package/lib/domains/job/core/pagination/model/PageQuery.d.ts +28 -0
  274. package/lib/domains/job/core/pagination/model/PageQuery.js +7 -0
  275. package/lib/domains/job/core/pagination/model/PageQuery.js.map +1 -0
  276. package/lib/domains/job/core/pagination/model/PaginationInfo.d.ts +35 -0
  277. package/lib/domains/job/core/pagination/model/PaginationInfo.js +7 -0
  278. package/lib/domains/job/core/pagination/model/PaginationInfo.js.map +1 -0
  279. package/lib/domains/job/core/pagination/model/PaginationKey.d.ts +2 -0
  280. package/lib/domains/job/core/pagination/model/PaginationKey.js +3 -0
  281. package/lib/domains/job/core/pagination/model/PaginationKey.js.map +1 -0
  282. package/lib/domains/job/core/pagination/model/PaginationLinks.d.ts +27 -0
  283. package/lib/domains/job/core/pagination/model/PaginationLinks.js +7 -0
  284. package/lib/domains/job/core/pagination/model/PaginationLinks.js.map +1 -0
  285. package/lib/domains/job/core/pagination/model/PaginationQueryParams.d.ts +14 -0
  286. package/lib/domains/job/core/pagination/model/PaginationQueryParams.js +3 -0
  287. package/lib/domains/job/core/pagination/model/PaginationQueryParams.js.map +1 -0
  288. package/lib/domains/job/core/pagination/model/PaginationQueryResponse.d.ts +24 -0
  289. package/lib/domains/job/core/pagination/model/PaginationQueryResponse.js +7 -0
  290. package/lib/domains/job/core/pagination/model/PaginationQueryResponse.js.map +1 -0
  291. package/lib/domains/job/core/pagination/model/PaginationResponse.d.ts +43 -0
  292. package/lib/domains/job/core/pagination/model/PaginationResponse.js +7 -0
  293. package/lib/domains/job/core/pagination/model/PaginationResponse.js.map +1 -0
  294. package/lib/domains/job/core/pagination/model/PaginationTypes.d.ts +39 -0
  295. package/lib/domains/job/core/pagination/model/PaginationTypes.js +29 -0
  296. package/lib/domains/job/core/pagination/model/PaginationTypes.js.map +1 -0
  297. package/lib/domains/job/core/pagination/model/index.d.ts +8 -0
  298. package/lib/domains/job/core/pagination/model/index.js +25 -0
  299. package/lib/domains/job/core/pagination/model/index.js.map +1 -0
  300. package/lib/domains/job/core/pagination/services/PaginationService.d.ts +41 -0
  301. package/lib/domains/job/core/pagination/services/PaginationService.js +129 -0
  302. package/lib/domains/job/core/pagination/services/PaginationService.js.map +1 -0
  303. package/lib/domains/job/core/pagination/services/PaginationService.spec.d.ts +5 -0
  304. package/lib/domains/job/core/pagination/services/PaginationService.spec.js +179 -0
  305. package/lib/domains/job/core/pagination/services/PaginationService.spec.js.map +1 -0
  306. package/lib/domains/job/core/pagination/services/index.d.ts +1 -0
  307. package/lib/domains/job/core/pagination/services/index.js +18 -0
  308. package/lib/domains/job/core/pagination/services/index.js.map +1 -0
  309. package/lib/domains/job/core/pagination/utils/PaginationUtils.d.ts +48 -0
  310. package/lib/domains/job/core/pagination/utils/PaginationUtils.js +139 -0
  311. package/lib/domains/job/core/pagination/utils/PaginationUtils.js.map +1 -0
  312. package/lib/domains/job/core/pagination/utils/PaginationUtils.spec.d.ts +5 -0
  313. package/lib/domains/job/core/pagination/utils/PaginationUtils.spec.js +212 -0
  314. package/lib/domains/job/core/pagination/utils/PaginationUtils.spec.js.map +1 -0
  315. package/lib/domains/job/core/pagination/utils/index.d.ts +1 -0
  316. package/lib/domains/job/core/pagination/utils/index.js +18 -0
  317. package/lib/domains/job/core/pagination/utils/index.js.map +1 -0
  318. package/lib/domains/job/errors/BadRequestError.d.ts +15 -0
  319. package/lib/domains/job/errors/BadRequestError.js +23 -0
  320. package/lib/domains/job/errors/BadRequestError.js.map +1 -0
  321. package/lib/domains/job/errors/Error.constants.d.ts +32 -0
  322. package/lib/domains/job/errors/Error.constants.js +36 -0
  323. package/lib/domains/job/errors/Error.constants.js.map +1 -0
  324. package/lib/domains/job/errors/ErrorWithHttpStatusCode.d.ts +16 -0
  325. package/lib/domains/job/errors/ErrorWithHttpStatusCode.js +23 -0
  326. package/lib/domains/job/errors/ErrorWithHttpStatusCode.js.map +1 -0
  327. package/lib/domains/job/errors/ExecutionStatusError.d.ts +3 -0
  328. package/lib/domains/job/errors/ExecutionStatusError.js +11 -0
  329. package/lib/domains/job/errors/ExecutionStatusError.js.map +1 -0
  330. package/lib/domains/job/errors/InternalServerError.d.ts +15 -0
  331. package/lib/domains/job/errors/InternalServerError.js +23 -0
  332. package/lib/domains/job/errors/InternalServerError.js.map +1 -0
  333. package/lib/domains/job/errors/NotFoundError.d.ts +14 -0
  334. package/lib/domains/job/errors/NotFoundError.js +22 -0
  335. package/lib/domains/job/errors/NotFoundError.js.map +1 -0
  336. package/lib/domains/job/errors/NotImplementedError.d.ts +15 -0
  337. package/lib/domains/job/errors/NotImplementedError.js +23 -0
  338. package/lib/domains/job/errors/NotImplementedError.js.map +1 -0
  339. package/lib/domains/job/errors/UnprocessableContent.d.ts +15 -0
  340. package/lib/domains/job/errors/UnprocessableContent.js +23 -0
  341. package/lib/domains/job/errors/UnprocessableContent.js.map +1 -0
  342. package/lib/domains/job/errors/index.d.ts +8 -0
  343. package/lib/domains/job/errors/index.js +25 -0
  344. package/lib/domains/job/errors/index.js.map +1 -0
  345. package/lib/domains/job/index.d.ts +16 -0
  346. package/lib/domains/job/index.js +33 -0
  347. package/lib/domains/job/index.js.map +1 -0
  348. package/lib/domains/job/manifest/JobManifestTypes.d.ts +126 -0
  349. package/lib/domains/job/manifest/JobManifestTypes.js +7 -0
  350. package/lib/domains/job/manifest/JobManifestTypes.js.map +1 -0
  351. package/lib/domains/job/manifest/JobManifestV1.d.ts +17 -0
  352. package/lib/domains/job/manifest/JobManifestV1.js +58 -0
  353. package/lib/domains/job/manifest/JobManifestV1.js.map +1 -0
  354. package/lib/domains/job/manifest/JobManifestV1.spec.d.ts +1 -0
  355. package/lib/domains/job/manifest/JobManifestV1.spec.js +136 -0
  356. package/lib/domains/job/manifest/JobManifestV1.spec.js.map +1 -0
  357. package/lib/domains/job/manifest/index.d.ts +5 -0
  358. package/lib/domains/job/manifest/index.js +22 -0
  359. package/lib/domains/job/manifest/index.js.map +1 -0
  360. package/lib/domains/job/manifest/mocks/JobManifest.mock.d.ts +7 -0
  361. package/lib/domains/job/manifest/mocks/JobManifest.mock.js +36 -0
  362. package/lib/domains/job/manifest/mocks/JobManifest.mock.js.map +1 -0
  363. package/lib/domains/job/manifest/mocks/JobManifestDto.mock.d.ts +7 -0
  364. package/lib/domains/job/manifest/mocks/JobManifestDto.mock.js +48 -0
  365. package/lib/domains/job/manifest/mocks/JobManifestDto.mock.js.map +1 -0
  366. package/lib/domains/job/manifest/mocks/JobManifestRecord.mock.d.ts +7 -0
  367. package/lib/domains/job/manifest/mocks/JobManifestRecord.mock.js +38 -0
  368. package/lib/domains/job/manifest/mocks/JobManifestRecord.mock.js.map +1 -0
  369. package/lib/domains/job/manifest/mocks/JobManifestRequest.mock.d.ts +6 -0
  370. package/lib/domains/job/manifest/mocks/JobManifestRequest.mock.js +29 -0
  371. package/lib/domains/job/manifest/mocks/JobManifestRequest.mock.js.map +1 -0
  372. package/lib/domains/job/model/Base/Base.d.ts +40 -0
  373. package/lib/domains/job/model/Base/Base.js +3 -0
  374. package/lib/domains/job/model/Base/Base.js.map +1 -0
  375. package/lib/domains/job/model/Base/index.d.ts +1 -0
  376. package/lib/domains/job/model/Base/index.js +18 -0
  377. package/lib/domains/job/model/Base/index.js.map +1 -0
  378. package/lib/domains/job/model/Job/Job.d.ts +85 -0
  379. package/lib/domains/job/model/Job/Job.js +7 -0
  380. package/lib/domains/job/model/Job/Job.js.map +1 -0
  381. package/lib/domains/job/model/Job/index.d.ts +5 -0
  382. package/lib/domains/job/model/Job/index.js +22 -0
  383. package/lib/domains/job/model/Job/index.js.map +1 -0
  384. package/lib/domains/job/model/Job/mocks/Job.mock.d.ts +7 -0
  385. package/lib/domains/job/model/Job/mocks/Job.mock.js +28 -0
  386. package/lib/domains/job/model/Job/mocks/Job.mock.js.map +1 -0
  387. package/lib/domains/job/model/Job/mocks/JobDto.mock.d.ts +7 -0
  388. package/lib/domains/job/model/Job/mocks/JobDto.mock.js +39 -0
  389. package/lib/domains/job/model/Job/mocks/JobDto.mock.js.map +1 -0
  390. package/lib/domains/job/model/Job/mocks/JobRecord.mock.d.ts +7 -0
  391. package/lib/domains/job/model/Job/mocks/JobRecord.mock.js +29 -0
  392. package/lib/domains/job/model/Job/mocks/JobRecord.mock.js.map +1 -0
  393. package/lib/domains/job/model/Job/mocks/JobRequest.mock.d.ts +6 -0
  394. package/lib/domains/job/model/Job/mocks/JobRequest.mock.js +21 -0
  395. package/lib/domains/job/model/Job/mocks/JobRequest.mock.js.map +1 -0
  396. package/lib/domains/job/model/JobContext/JobContext.d.ts +87 -0
  397. package/lib/domains/job/model/JobContext/JobContext.js +7 -0
  398. package/lib/domains/job/model/JobContext/JobContext.js.map +1 -0
  399. package/lib/domains/job/model/JobContext/index.d.ts +5 -0
  400. package/lib/domains/job/model/JobContext/index.js +22 -0
  401. package/lib/domains/job/model/JobContext/index.js.map +1 -0
  402. package/lib/domains/job/model/JobContext/mocks/JobContext.mock.d.ts +7 -0
  403. package/lib/domains/job/model/JobContext/mocks/JobContext.mock.js +35 -0
  404. package/lib/domains/job/model/JobContext/mocks/JobContext.mock.js.map +1 -0
  405. package/lib/domains/job/model/JobContext/mocks/JobContextDto.mock.d.ts +7 -0
  406. package/lib/domains/job/model/JobContext/mocks/JobContextDto.mock.js +46 -0
  407. package/lib/domains/job/model/JobContext/mocks/JobContextDto.mock.js.map +1 -0
  408. package/lib/domains/job/model/JobContext/mocks/JobContextRecord.mock.d.ts +7 -0
  409. package/lib/domains/job/model/JobContext/mocks/JobContextRecord.mock.js +34 -0
  410. package/lib/domains/job/model/JobContext/mocks/JobContextRecord.mock.js.map +1 -0
  411. package/lib/domains/job/model/JobContext/mocks/JobContextRequest.mock.d.ts +6 -0
  412. package/lib/domains/job/model/JobContext/mocks/JobContextRequest.mock.js +25 -0
  413. package/lib/domains/job/model/JobContext/mocks/JobContextRequest.mock.js.map +1 -0
  414. package/lib/domains/job/model/JobExecution/JobExecution.d.ts +189 -0
  415. package/lib/domains/job/model/JobExecution/JobExecution.js +7 -0
  416. package/lib/domains/job/model/JobExecution/JobExecution.js.map +1 -0
  417. package/lib/domains/job/model/JobExecution/index.d.ts +5 -0
  418. package/lib/domains/job/model/JobExecution/index.js +22 -0
  419. package/lib/domains/job/model/JobExecution/index.js.map +1 -0
  420. package/lib/domains/job/model/JobExecution/mocks/JobExecution.mock.d.ts +7 -0
  421. package/lib/domains/job/model/JobExecution/mocks/JobExecution.mock.js +45 -0
  422. package/lib/domains/job/model/JobExecution/mocks/JobExecution.mock.js.map +1 -0
  423. package/lib/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.d.ts +7 -0
  424. package/lib/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.js +64 -0
  425. package/lib/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.js.map +1 -0
  426. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.d.ts +7 -0
  427. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.js +48 -0
  428. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.js.map +1 -0
  429. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRequest.mock.d.ts +6 -0
  430. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRequest.mock.js +25 -0
  431. package/lib/domains/job/model/JobExecution/mocks/JobExecutionRequest.mock.js.map +1 -0
  432. package/lib/domains/job/repository/AbstractRepository.d.ts +73 -0
  433. package/lib/domains/job/repository/AbstractRepository.js +174 -0
  434. package/lib/domains/job/repository/AbstractRepository.js.map +1 -0
  435. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.d.ts +24 -0
  436. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.js +169 -0
  437. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.js.map +1 -0
  438. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.spec.d.ts +5 -0
  439. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.spec.js +246 -0
  440. package/lib/domains/job/repository/JobContextRepository/JobContextRepository.spec.js.map +1 -0
  441. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.d.ts +47 -0
  442. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.js +276 -0
  443. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.js.map +1 -0
  444. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.d.ts +5 -0
  445. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.js +296 -0
  446. package/lib/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.js.map +1 -0
  447. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.d.ts +16 -0
  448. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.js +133 -0
  449. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.js.map +1 -0
  450. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.d.ts +5 -0
  451. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.js +162 -0
  452. package/lib/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.js.map +1 -0
  453. package/lib/domains/job/repository/JobRepository/JobRepository.d.ts +30 -0
  454. package/lib/domains/job/repository/JobRepository/JobRepository.js +189 -0
  455. package/lib/domains/job/repository/JobRepository/JobRepository.js.map +1 -0
  456. package/lib/domains/job/repository/JobRepository/JobRepository.spec.d.ts +5 -0
  457. package/lib/domains/job/repository/JobRepository/JobRepository.spec.js +270 -0
  458. package/lib/domains/job/repository/JobRepository/JobRepository.spec.js.map +1 -0
  459. package/lib/domains/job/repository/index.d.ts +5 -0
  460. package/lib/domains/job/repository/index.js +22 -0
  461. package/lib/domains/job/repository/index.js.map +1 -0
  462. package/lib/domains/job/repository/mocks/mockIoc.d.ts +5 -0
  463. package/lib/domains/job/repository/mocks/mockIoc.js +40 -0
  464. package/lib/domains/job/repository/mocks/mockIoc.js.map +1 -0
  465. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.d.ts +13 -0
  466. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.d.ts +39 -0
  467. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.js +3 -0
  468. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.js.map +1 -0
  469. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.js +139 -0
  470. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.js.map +1 -0
  471. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.d.ts +1 -0
  472. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.js +78 -0
  473. package/lib/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.js.map +1 -0
  474. package/lib/domains/job/services/index.d.ts +1 -0
  475. package/lib/domains/job/services/index.js +18 -0
  476. package/lib/domains/job/services/index.js.map +1 -0
  477. package/lib/domains/job/singletonProvider.d.ts +6 -0
  478. package/lib/domains/job/singletonProvider.js +14 -0
  479. package/lib/domains/job/singletonProvider.js.map +1 -0
  480. package/lib/domains/job/transientProvider.d.ts +6 -0
  481. package/lib/domains/job/transientProvider.js +14 -0
  482. package/lib/domains/job/transientProvider.js.map +1 -0
  483. package/lib/domains/job/utils/SlackClient/SlackClient.d.ts +44 -0
  484. package/lib/domains/job/utils/SlackClient/SlackClient.js +113 -0
  485. package/lib/domains/job/utils/SlackClient/SlackClient.js.map +1 -0
  486. package/lib/domains/job/utils/SlackClient/SlackClient.spec.d.ts +5 -0
  487. package/lib/domains/job/utils/SlackClient/SlackClient.spec.js +116 -0
  488. package/lib/domains/job/utils/SlackClient/SlackClient.spec.js.map +1 -0
  489. package/lib/domains/job/utils/SlackClient/types/SlackClient.types.d.ts +56 -0
  490. package/lib/domains/job/utils/SlackClient/types/SlackClient.types.js +28 -0
  491. package/lib/domains/job/utils/SlackClient/types/SlackClient.types.js.map +1 -0
  492. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.d.ts +9 -0
  493. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.js +21 -0
  494. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.js.map +1 -0
  495. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.spec.d.ts +5 -0
  496. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.spec.js +26 -0
  497. package/lib/domains/job/utils/SortByTimeQueued/SortByTimeQueued.spec.js.map +1 -0
  498. package/lib/domains/job/utils/index.d.ts +3 -0
  499. package/lib/domains/job/utils/index.js +20 -0
  500. package/lib/domains/job/utils/index.js.map +1 -0
  501. package/lib/domains/manifest/AbstractManifest.d.ts +38 -0
  502. package/lib/domains/manifest/AbstractManifest.js +45 -0
  503. package/lib/domains/manifest/AbstractManifest.js.map +1 -0
  504. package/lib/domains/manifest/ManifestModel.d.ts +7 -0
  505. package/lib/domains/manifest/ManifestModel.js +3 -0
  506. package/lib/domains/manifest/ManifestModel.js.map +1 -0
  507. package/lib/domains/manifest/ManifestV1.d.ts +18 -0
  508. package/lib/domains/manifest/ManifestV1.js +124 -0
  509. package/lib/domains/manifest/ManifestV1.js.map +1 -0
  510. package/lib/domains/manifest/ManifestV1.spec.d.ts +1 -0
  511. package/lib/domains/manifest/ManifestV1.spec.js +347 -0
  512. package/lib/domains/manifest/ManifestV1.spec.js.map +1 -0
  513. package/lib/domains/manifest/errors/ManifestLocationError.d.ts +5 -0
  514. package/lib/domains/manifest/errors/ManifestLocationError.js +13 -0
  515. package/lib/domains/manifest/errors/ManifestLocationError.js.map +1 -0
  516. package/lib/domains/manifest/errors/ManifestValidationError.d.ts +3 -0
  517. package/lib/domains/manifest/errors/ManifestValidationError.js +12 -0
  518. package/lib/domains/manifest/errors/ManifestValidationError.js.map +1 -0
  519. package/lib/domains/manifest/index.d.ts +16 -0
  520. package/lib/domains/manifest/index.js +33 -0
  521. package/lib/domains/manifest/index.js.map +1 -0
  522. package/lib/domains/manifest/services/AbstractManifestService.d.ts +49 -0
  523. package/lib/domains/manifest/services/AbstractManifestService.js +235 -0
  524. package/lib/domains/manifest/services/AbstractManifestService.js.map +1 -0
  525. package/lib/domains/manifest/services/AbstractManifestService.spec.d.ts +1 -0
  526. package/lib/domains/manifest/services/AbstractManifestService.spec.js +301 -0
  527. package/lib/domains/manifest/services/AbstractManifestService.spec.js.map +1 -0
  528. package/lib/domains/manifest/services/ComponentFunctionService.d.ts +35 -0
  529. package/lib/domains/manifest/services/ComponentFunctionService.js +129 -0
  530. package/lib/domains/manifest/services/ComponentFunctionService.js.map +1 -0
  531. package/lib/domains/manifest/services/ComponentFunctionService.spec.d.ts +1 -0
  532. package/lib/domains/manifest/services/ComponentFunctionService.spec.js +567 -0
  533. package/lib/domains/manifest/services/ComponentFunctionService.spec.js.map +1 -0
  534. package/lib/domains/manifest/services/ComponentInputValidationService.d.ts +5 -0
  535. package/lib/domains/manifest/services/ComponentInputValidationService.js +11 -0
  536. package/lib/domains/manifest/services/ComponentInputValidationService.js.map +1 -0
  537. package/lib/domains/manifest/services/ComponentSchemaValidationService.d.ts +5 -0
  538. package/lib/domains/manifest/services/ComponentSchemaValidationService.js +11 -0
  539. package/lib/domains/manifest/services/ComponentSchemaValidationService.js.map +1 -0
  540. package/lib/domains/manifest/services/JobFunctionService.d.ts +12 -0
  541. package/lib/domains/manifest/services/JobFunctionService.js +23 -0
  542. package/lib/domains/manifest/services/JobFunctionService.js.map +1 -0
  543. package/lib/domains/manifest/services/JobFunctionService.spec.d.ts +1 -0
  544. package/lib/domains/manifest/services/JobFunctionService.spec.js +132 -0
  545. package/lib/domains/manifest/services/JobFunctionService.spec.js.map +1 -0
  546. package/lib/domains/manifest/services/ManifestServiceForDev.d.ts +18 -0
  547. package/lib/domains/manifest/services/ManifestServiceForDev.js +83 -0
  548. package/lib/domains/manifest/services/ManifestServiceForDev.js.map +1 -0
  549. package/lib/domains/manifest/services/ManifestServiceForDev.spec.d.ts +1 -0
  550. package/lib/domains/manifest/services/ManifestServiceForDev.spec.js +184 -0
  551. package/lib/domains/manifest/services/ManifestServiceForDev.spec.js.map +1 -0
  552. package/lib/domains/manifest/services/ManifestServiceForProduction.d.ts +12 -0
  553. package/lib/domains/manifest/services/ManifestServiceForProduction.js +81 -0
  554. package/lib/domains/manifest/services/ManifestServiceForProduction.js.map +1 -0
  555. package/lib/domains/manifest/services/ManifestServiceForProduction.spec.d.ts +1 -0
  556. package/lib/domains/manifest/services/ManifestServiceForProduction.spec.js +81 -0
  557. package/lib/domains/manifest/services/ManifestServiceForProduction.spec.js.map +1 -0
  558. package/lib/domains/manifest/utils/assertFuncEntryFilesAreValid.d.ts +3 -0
  559. package/lib/domains/manifest/utils/assertFuncEntryFilesAreValid.js +14 -0
  560. package/lib/domains/manifest/utils/assertFuncEntryFilesAreValid.js.map +1 -0
  561. package/lib/domains/manifest/utils/assertStaticFilesAreValid.d.ts +3 -0
  562. package/lib/domains/manifest/utils/assertStaticFilesAreValid.js +27 -0
  563. package/lib/domains/manifest/utils/assertStaticFilesAreValid.js.map +1 -0
  564. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.d.ts +2 -0
  565. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.js +16 -0
  566. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.js.map +1 -0
  567. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.spec.d.ts +1 -0
  568. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.spec.js +111 -0
  569. package/lib/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.spec.js.map +1 -0
  570. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.d.ts +3 -0
  571. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.js +28 -0
  572. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.js.map +1 -0
  573. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.spec.d.ts +1 -0
  574. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.spec.js +115 -0
  575. package/lib/domains/manifest/utils/getAndAssertJobManifestVersion.spec.js.map +1 -0
  576. package/lib/domains/manifest/utils/getAndAssertManifestVersion.d.ts +3 -0
  577. package/lib/domains/manifest/utils/getAndAssertManifestVersion.js +23 -0
  578. package/lib/domains/manifest/utils/getAndAssertManifestVersion.js.map +1 -0
  579. package/lib/domains/manifest/utils/getAndAssertManifestVersion.spec.d.ts +1 -0
  580. package/lib/domains/manifest/utils/getAndAssertManifestVersion.spec.js +109 -0
  581. package/lib/domains/manifest/utils/getAndAssertManifestVersion.spec.js.map +1 -0
  582. package/lib/domains/manifest/utils/isValidManifestVersion.d.ts +2 -0
  583. package/lib/domains/manifest/utils/isValidManifestVersion.js +12 -0
  584. package/lib/domains/manifest/utils/isValidManifestVersion.js.map +1 -0
  585. package/lib/domains/manifest/utils/isValidManifestVersion.spec.d.ts +1 -0
  586. package/lib/domains/manifest/utils/isValidManifestVersion.spec.js +19 -0
  587. package/lib/domains/manifest/utils/isValidManifestVersion.spec.js.map +1 -0
  588. package/lib/domains/url/convertFunctionStaticFilesToFqdn.d.ts +1 -0
  589. package/lib/domains/url/convertFunctionStaticFilesToFqdn.js +22 -0
  590. package/lib/domains/url/convertFunctionStaticFilesToFqdn.js.map +1 -0
  591. package/lib/domains/url/convertFunctionStaticFilesToFqdn.spec.d.ts +1 -0
  592. package/lib/domains/url/convertFunctionStaticFilesToFqdn.spec.js +16 -0
  593. package/lib/domains/url/convertFunctionStaticFilesToFqdn.spec.js.map +1 -0
  594. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.d.ts +1 -0
  595. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.js +22 -0
  596. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.js.map +1 -0
  597. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.spec.d.ts +1 -0
  598. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.spec.js +16 -0
  599. package/lib/domains/url/convertFunctionStaticFilesToFqdnForPreview.spec.js.map +1 -0
  600. package/lib/domains/url/index.d.ts +1 -0
  601. package/lib/domains/url/index.js +18 -0
  602. package/lib/domains/url/index.js.map +1 -0
  603. package/lib/index.d.ts +9 -0
  604. package/lib/index.js +39 -0
  605. package/lib/index.js.map +1 -0
  606. package/lib/jest-global-setup.d.ts +3 -0
  607. package/lib/jest-global-setup.js +22 -0
  608. package/lib/jest-global-setup.js.map +1 -0
  609. package/package.json +59 -0
  610. package/src/TestHelpers.ts +111 -0
  611. package/src/custom-types.d.ts +7 -0
  612. package/src/domains/__test__/createPackage.ts +48 -0
  613. package/src/domains/__test__/loadAllUnitTestComponents.ts +73 -0
  614. package/src/domains/component/component-context/__mocks__/mockedManifestModel.ts +30 -0
  615. package/src/domains/component/component-context/__mocks__/mockedUriObj.ts +38 -0
  616. package/src/domains/component/component-context/__mocks__/mockedUriObjPreview.ts +38 -0
  617. package/src/domains/component/component-context/createComponentContextualFunctions.spec.ts +299 -0
  618. package/src/domains/component/component-context/createComponentContextualFunctions.ts +108 -0
  619. package/src/domains/component/errors/ComponentError.ts +22 -0
  620. package/src/domains/component/errors/JobError.ts +20 -0
  621. package/src/domains/component/index.ts +17 -0
  622. package/src/domains/component/models/Component.spec.ts +21 -0
  623. package/src/domains/component/models/Component.ts +16 -0
  624. package/src/domains/component/models/ComponentVersion.spec.ts +77 -0
  625. package/src/domains/component/models/ComponentVersion.ts +55 -0
  626. package/src/domains/component/repositories/ComponentRepository.integration.spec.ts +148 -0
  627. package/src/domains/component/repositories/ComponentRepository.ts +37 -0
  628. package/src/domains/component/repositories/ComponentVersionRepository.integration.spec.ts +523 -0
  629. package/src/domains/component/repositories/ComponentVersionRepository.ts +138 -0
  630. package/src/domains/component/services/ComponentService.integration.spec.ts +721 -0
  631. package/src/domains/component/services/ComponentService.ts +350 -0
  632. package/src/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.spec.ts +78 -0
  633. package/src/domains/component/services/content-item-uri-resolver/ComponentContentUriResolverForPreview.ts +18 -0
  634. package/src/domains/component/utils/getComponentFileSystemFolder.spec.ts +8 -0
  635. package/src/domains/component/utils/getComponentFileSystemFolder.ts +5 -0
  636. package/src/domains/component/utils/getComponentName.spec.ts +7 -0
  637. package/src/domains/component/utils/getComponentName.ts +3 -0
  638. package/src/domains/component/utils/moveFilesAndDirectories.spec.ts +62 -0
  639. package/src/domains/component/utils/moveFilesAndDirectories.ts +27 -0
  640. package/src/domains/component/web-models/ComponentForWeb.ts +11 -0
  641. package/src/domains/component/web-models/ComponentVersionWebModel.ts +16 -0
  642. package/src/domains/component/web-models/ComponentsForWeb.ts +17 -0
  643. package/src/domains/component-set/errors/InvalidEnvironmentVariablesError.ts +11 -0
  644. package/src/domains/component-set/index.ts +18 -0
  645. package/src/domains/component-set/models/ComponentSet.spec.ts +66 -0
  646. package/src/domains/component-set/models/ComponentSet.ts +67 -0
  647. package/src/domains/component-set/models/ComponentSetComponentVersion.spec.ts +106 -0
  648. package/src/domains/component-set/models/ComponentSetComponentVersion.ts +54 -0
  649. package/src/domains/component-set/models/ComponentSetComponentVersionEditable.spec.ts +82 -0
  650. package/src/domains/component-set/models/ComponentSetComponentVersionEditable.ts +46 -0
  651. package/src/domains/component-set/models/ComponentSetComponentVersionExcluded.spec.ts +46 -0
  652. package/src/domains/component-set/models/ComponentSetComponentVersionExcluded.ts +26 -0
  653. package/src/domains/component-set/models/ComponentSetRule.spec.ts +39 -0
  654. package/src/domains/component-set/models/ComponentSetRule.ts +37 -0
  655. package/src/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.integration.spec.ts +172 -0
  656. package/src/domains/component-set/repositories/ComponentSetComponentVersionEditableRepository.ts +47 -0
  657. package/src/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.integration.spec.ts +172 -0
  658. package/src/domains/component-set/repositories/ComponentSetComponentVersionExcludedRepository.ts +47 -0
  659. package/src/domains/component-set/repositories/ComponentSetComponentVersionRepository.integration.spec.ts +229 -0
  660. package/src/domains/component-set/repositories/ComponentSetComponentVersionRepository.ts +37 -0
  661. package/src/domains/component-set/repositories/ComponentSetRepository.integration.spec.ts +199 -0
  662. package/src/domains/component-set/repositories/ComponentSetRepository.ts +68 -0
  663. package/src/domains/component-set/repositories/ComponentSetRuleRepository.integration.spec.ts +107 -0
  664. package/src/domains/component-set/repositories/ComponentSetRuleRepository.ts +40 -0
  665. package/src/domains/component-set/services/ComponentSetRuleService.integration.spec.ts +137 -0
  666. package/src/domains/component-set/services/ComponentSetRuleService.ts +34 -0
  667. package/src/domains/component-set/services/ComponentSetService.spec.ts +144 -0
  668. package/src/domains/component-set/services/ComponentSetService.ts +82 -0
  669. package/src/domains/component-set/services/ComponentSetServiceForLocalDev.spec.ts +209 -0
  670. package/src/domains/component-set/services/ComponentSetServiceForLocalDev.ts +111 -0
  671. package/src/domains/component-set/services/ComponentSetServiceForProduction.integration.spec.ts +2898 -0
  672. package/src/domains/component-set/services/ComponentSetServiceForProduction.ts +839 -0
  673. package/src/domains/component-set/services/EnvironmentVariables.ts +1 -0
  674. package/src/domains/component-set/services/Headers.ts +1 -0
  675. package/src/domains/component-set/services/RuntimeComponentSet.ts +7 -0
  676. package/src/domains/component-set/web-models/ComponentSetComponentVersionForWeb.ts +7 -0
  677. package/src/domains/component-set/web-models/ComponentSetForWeb.ts +83 -0
  678. package/src/domains/content/index.ts +4 -0
  679. package/src/domains/content/services/ComponentContentSchemaService.spec.ts +264 -0
  680. package/src/domains/content/services/ComponentContentSchemaService.ts +53 -0
  681. package/src/domains/content/services/ContentItemService.spec.ts +108 -0
  682. package/src/domains/content/services/ContentItemService.ts +34 -0
  683. package/src/domains/content/services/DynamicContentItemService.spec.ts +97 -0
  684. package/src/domains/content/services/DynamicContentItemService.ts +30 -0
  685. package/src/domains/content/utils/getContentSchemaName.spec.ts +7 -0
  686. package/src/domains/content/utils/getContentSchemaName.ts +7 -0
  687. package/src/domains/db/ComponentConnectionManager.ts +4 -0
  688. package/src/domains/db/ComponentRepositories.ts +31 -0
  689. package/src/domains/db/createConnectionManager.ts +24 -0
  690. package/src/domains/db/index.ts +3 -0
  691. package/src/domains/db/migration-list.ts +16 -0
  692. package/src/domains/job/ParsePartitionKey/ParsePartitionKey.spec.ts +27 -0
  693. package/src/domains/job/ParsePartitionKey/ParsePartitionKey.ts +19 -0
  694. package/src/domains/job/ParsePartitionKey/index.ts +1 -0
  695. package/src/domains/job/constants/JobExecutionStatus.constants.ts +9 -0
  696. package/src/domains/job/constants/QueryParams.ts +16 -0
  697. package/src/domains/job/constants/Repository.constants.ts +18 -0
  698. package/src/domains/job/core/dynamoClient.mock.ts +34 -0
  699. package/src/domains/job/core/pagination/index.ts +3 -0
  700. package/src/domains/job/core/pagination/model/PageQuery.ts +31 -0
  701. package/src/domains/job/core/pagination/model/PaginationInfo.ts +40 -0
  702. package/src/domains/job/core/pagination/model/PaginationKey.ts +4 -0
  703. package/src/domains/job/core/pagination/model/PaginationLinks.ts +30 -0
  704. package/src/domains/job/core/pagination/model/PaginationQueryParams.ts +15 -0
  705. package/src/domains/job/core/pagination/model/PaginationQueryResponse.ts +27 -0
  706. package/src/domains/job/core/pagination/model/PaginationResponse.ts +48 -0
  707. package/src/domains/job/core/pagination/model/PaginationTypes.ts +45 -0
  708. package/src/domains/job/core/pagination/model/index.ts +8 -0
  709. package/src/domains/job/core/pagination/services/PaginationService.spec.ts +248 -0
  710. package/src/domains/job/core/pagination/services/PaginationService.ts +142 -0
  711. package/src/domains/job/core/pagination/services/index.ts +1 -0
  712. package/src/domains/job/core/pagination/utils/PaginationUtils.spec.ts +263 -0
  713. package/src/domains/job/core/pagination/utils/PaginationUtils.ts +156 -0
  714. package/src/domains/job/core/pagination/utils/index.ts +1 -0
  715. package/src/domains/job/errors/BadRequestError.ts +19 -0
  716. package/src/domains/job/errors/Error.constants.ts +34 -0
  717. package/src/domains/job/errors/ErrorWithHttpStatusCode.ts +16 -0
  718. package/src/domains/job/errors/ExecutionStatusError.ts +3 -0
  719. package/src/domains/job/errors/InternalServerError.ts +19 -0
  720. package/src/domains/job/errors/NotFoundError.ts +19 -0
  721. package/src/domains/job/errors/NotImplementedError.ts +19 -0
  722. package/src/domains/job/errors/UnprocessableContent.ts +19 -0
  723. package/src/domains/job/errors/index.ts +8 -0
  724. package/src/domains/job/index.ts +21 -0
  725. package/src/domains/job/manifest/JobManifestTypes.ts +145 -0
  726. package/src/domains/job/manifest/JobManifestV1.spec.ts +148 -0
  727. package/src/domains/job/manifest/JobManifestV1.ts +60 -0
  728. package/src/domains/job/manifest/index.ts +5 -0
  729. package/src/domains/job/manifest/mocks/JobManifest.mock.ts +35 -0
  730. package/src/domains/job/manifest/mocks/JobManifestDto.mock.ts +46 -0
  731. package/src/domains/job/manifest/mocks/JobManifestRecord.mock.ts +37 -0
  732. package/src/domains/job/manifest/mocks/JobManifestRequest.mock.ts +30 -0
  733. package/src/domains/job/model/Base/Base.ts +44 -0
  734. package/src/domains/job/model/Base/index.ts +1 -0
  735. package/src/domains/job/model/Job/Job.ts +98 -0
  736. package/src/domains/job/model/Job/index.ts +5 -0
  737. package/src/domains/job/model/Job/mocks/Job.mock.ts +26 -0
  738. package/src/domains/job/model/Job/mocks/JobDto.mock.ts +37 -0
  739. package/src/domains/job/model/Job/mocks/JobRecord.mock.ts +28 -0
  740. package/src/domains/job/model/Job/mocks/JobRequest.mock.ts +20 -0
  741. package/src/domains/job/model/JobContext/JobContext.ts +101 -0
  742. package/src/domains/job/model/JobContext/index.ts +5 -0
  743. package/src/domains/job/model/JobContext/mocks/JobContext.mock.ts +34 -0
  744. package/src/domains/job/model/JobContext/mocks/JobContextDto.mock.ts +46 -0
  745. package/src/domains/job/model/JobContext/mocks/JobContextRecord.mock.ts +32 -0
  746. package/src/domains/job/model/JobContext/mocks/JobContextRequest.mock.ts +26 -0
  747. package/src/domains/job/model/JobExecution/JobExecution.ts +220 -0
  748. package/src/domains/job/model/JobExecution/index.ts +5 -0
  749. package/src/domains/job/model/JobExecution/mocks/JobExecution.mock.ts +43 -0
  750. package/src/domains/job/model/JobExecution/mocks/JobExecutionDto.mock.ts +62 -0
  751. package/src/domains/job/model/JobExecution/mocks/JobExecutionRecord.mock.ts +47 -0
  752. package/src/domains/job/model/JobExecution/mocks/JobExecutionRequest.mock.ts +26 -0
  753. package/src/domains/job/repository/AbstractRepository.ts +219 -0
  754. package/src/domains/job/repository/JobContextRepository/JobContextRepository.spec.ts +301 -0
  755. package/src/domains/job/repository/JobContextRepository/JobContextRepository.ts +168 -0
  756. package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.spec.ts +371 -0
  757. package/src/domains/job/repository/JobExecutionRepository/JobExecutionRepository.ts +293 -0
  758. package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.spec.ts +222 -0
  759. package/src/domains/job/repository/JobManifestRepository/JobManifestRepository.ts +120 -0
  760. package/src/domains/job/repository/JobRepository/JobRepository.spec.ts +337 -0
  761. package/src/domains/job/repository/JobRepository/JobRepository.ts +188 -0
  762. package/src/domains/job/repository/index.ts +5 -0
  763. package/src/domains/job/repository/mocks/mockIoc.ts +42 -0
  764. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.defs.ts +40 -0
  765. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.spec.ts +95 -0
  766. package/src/domains/job/services/JobExecutionTaskService/JobExecutionTaskService.ts +138 -0
  767. package/src/domains/job/services/index.ts +1 -0
  768. package/src/domains/job/singletonProvider.ts +12 -0
  769. package/src/domains/job/transientProvider.ts +12 -0
  770. package/src/domains/job/utils/SlackClient/SlackClient.spec.ts +176 -0
  771. package/src/domains/job/utils/SlackClient/SlackClient.ts +132 -0
  772. package/src/domains/job/utils/SlackClient/types/SlackClient.types.ts +70 -0
  773. package/src/domains/job/utils/SortByTimeQueued/SortByTimeQueued.spec.ts +28 -0
  774. package/src/domains/job/utils/SortByTimeQueued/SortByTimeQueued.ts +21 -0
  775. package/src/domains/job/utils/index.ts +3 -0
  776. package/src/domains/manifest/AbstractManifest.ts +57 -0
  777. package/src/domains/manifest/ManifestModel.ts +9 -0
  778. package/src/domains/manifest/ManifestV1.spec.ts +436 -0
  779. package/src/domains/manifest/ManifestV1.ts +146 -0
  780. package/src/domains/manifest/errors/ManifestLocationError.ts +9 -0
  781. package/src/domains/manifest/errors/ManifestValidationError.ts +7 -0
  782. package/src/domains/manifest/index.ts +18 -0
  783. package/src/domains/manifest/services/AbstractManifestService.spec.ts +427 -0
  784. package/src/domains/manifest/services/AbstractManifestService.ts +316 -0
  785. package/src/domains/manifest/services/ComponentFunctionService.spec.ts +683 -0
  786. package/src/domains/manifest/services/ComponentFunctionService.ts +178 -0
  787. package/src/domains/manifest/services/ComponentInputValidationService.ts +22 -0
  788. package/src/domains/manifest/services/ComponentSchemaValidationService.ts +22 -0
  789. package/src/domains/manifest/services/JobFunctionService.spec.ts +165 -0
  790. package/src/domains/manifest/services/JobFunctionService.ts +25 -0
  791. package/src/domains/manifest/services/ManifestServiceForDev.spec.ts +199 -0
  792. package/src/domains/manifest/services/ManifestServiceForDev.ts +96 -0
  793. package/src/domains/manifest/services/ManifestServiceForProduction.spec.ts +90 -0
  794. package/src/domains/manifest/services/ManifestServiceForProduction.ts +98 -0
  795. package/src/domains/manifest/utils/assertFuncEntryFilesAreValid.ts +19 -0
  796. package/src/domains/manifest/utils/assertStaticFilesAreValid.ts +37 -0
  797. package/src/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.spec.ts +121 -0
  798. package/src/domains/manifest/utils/assertStaticFilesHaveAbsolutePath.ts +15 -0
  799. package/src/domains/manifest/utils/getAndAssertJobManifestVersion.spec.ts +145 -0
  800. package/src/domains/manifest/utils/getAndAssertJobManifestVersion.ts +31 -0
  801. package/src/domains/manifest/utils/getAndAssertManifestVersion.spec.ts +134 -0
  802. package/src/domains/manifest/utils/getAndAssertManifestVersion.ts +27 -0
  803. package/src/domains/manifest/utils/isValidManifestVersion.spec.ts +19 -0
  804. package/src/domains/manifest/utils/isValidManifestVersion.ts +9 -0
  805. package/src/domains/url/convertFunctionStaticFilesToFqdn.spec.ts +24 -0
  806. package/src/domains/url/convertFunctionStaticFilesToFqdn.ts +25 -0
  807. package/src/domains/url/convertFunctionStaticFilesToFqdnForPreview.spec.ts +48 -0
  808. package/src/domains/url/convertFunctionStaticFilesToFqdnForPreview.ts +25 -0
  809. package/src/domains/url/index.ts +1 -0
  810. package/src/index.ts +10 -0
  811. package/src/jest-global-setup.ts +20 -0
  812. package/src/migrations/20220704054051_initial.sql +19 -0
  813. package/src/migrations/20220718172237_adding_component_sets.sql +23 -0
  814. package/src/migrations/20220728113941_add_env_vars_field.sql +1 -0
  815. package/src/migrations/20220817113300_removing_null_props_from_jsonb.sql +41 -0
  816. package/src/migrations/20221027151225_dummy.sql +2 -0
  817. package/src/migrations/20221117151200_add_detail_columns_to_component_version.js +49 -0
  818. package/src/migrations/20221220151200_add_required_to_manifests.js +61 -0
  819. package/src/migrations/20221222151200_add_required_to_manifests.js +138 -0
  820. package/src/migrations/20223525103556_component_set_rule.sql +19 -0
  821. package/src/migrations/20230111095522_update_environment_property.js +72 -0
  822. package/src/migrations/20230203084900_ensure_static_root_exists.js +57 -0
  823. package/src/migrations/20230210143300_lowercase_all_uri_names.js +106 -0
  824. package/src/migrations/20230217151212_component_set_component_version_updates.sql +38 -0
  825. package/src/migrations/20230218121212_add_component_set_rules.js +31 -0
  826. package/tsconfig.json +16 -0
@@ -0,0 +1,2565 @@
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
+ const unzipper_1 = __importDefault(require("unzipper"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const dx_logger_lib_1 = require("@squiz/dx-logger-lib");
11
+ const db_1 = require("../../db");
12
+ const ComponentSetServiceForProduction_1 = require("./ComponentSetServiceForProduction");
13
+ const ComponentService_1 = require("../../component/services/ComponentService");
14
+ const createPackage_1 = require("../../__test__/createPackage");
15
+ const manifest_1 = require("../../manifest");
16
+ const crypto_1 = require("crypto");
17
+ const loadAllUnitTestComponents_1 = require("../../__test__/loadAllUnitTestComponents");
18
+ const ComponentSetComponentVersion_1 = require("../models/ComponentSetComponentVersion");
19
+ describe('ComponentSetServiceForProduction', () => {
20
+ let db;
21
+ const logger = (0, dx_logger_lib_1.getLogger)({
22
+ name: 'component-lib',
23
+ });
24
+ let service;
25
+ let componentService;
26
+ let manifestService;
27
+ const mockInfo = jest.fn();
28
+ const mockFlush = jest.fn();
29
+ const componentLoggingService = { info: mockInfo, flush: mockFlush };
30
+ const namespace = 'unit-test-components';
31
+ let componentTempLocation1 = '';
32
+ let componentTempLocation2 = '';
33
+ async function createComponentAtTempLocation(componentTempLocation, componentName, version) {
34
+ const newComponent = (0, createPackage_1.createPackage)(namespace, componentName, version);
35
+ await newComponent.finalize();
36
+ await newComponent.pipe(unzipper_1.default.Extract({ path: componentTempLocation })).promise();
37
+ }
38
+ beforeAll(async () => {
39
+ db = await (0, db_1.createConnectionManager)('management-api-test', {
40
+ databaseConnectionString: process.env.COMPONENT_DB_CONNECTION_STRING,
41
+ }, '');
42
+ await db.applyMigrations();
43
+ manifestService = new manifest_1.ManifestServiceForProduction(process.env.DATA_MOUNT_POINT, logger);
44
+ await (0, loadAllUnitTestComponents_1.loadAllUnitTestComponents)(process.env.DATA_MOUNT_POINT, db, manifestService);
45
+ service = new ComponentSetServiceForProduction_1.ComponentSetServiceForProduction(db, logger, manifestService, componentLoggingService);
46
+ componentService = new ComponentService_1.ComponentService(db, console, process.env.DATA_MOUNT_POINT, manifestService);
47
+ await db.repositories.component.delete({ name: 'foo' });
48
+ // create two versions for a test component "foo"
49
+ // for all the tests
50
+ componentTempLocation1 = fs_1.default.mkdtempSync('test1-');
51
+ await createComponentAtTempLocation(componentTempLocation1, 'foo', '1.0.0');
52
+ await componentService.saveComponent(componentTempLocation1);
53
+ componentTempLocation2 = fs_1.default.mkdtempSync('test2-');
54
+ await createComponentAtTempLocation(componentTempLocation2, 'foo', '2.0.0');
55
+ await componentService.saveComponent(componentTempLocation2);
56
+ });
57
+ beforeEach(() => {
58
+ jest.clearAllMocks();
59
+ });
60
+ afterAll(async () => {
61
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation1)) {
62
+ fs_extra_1.default.rmSync(componentTempLocation1, { force: true, recursive: true });
63
+ }
64
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation2)) {
65
+ fs_extra_1.default.rmSync(componentTempLocation2, { force: true, recursive: true });
66
+ }
67
+ await componentService.deleteComponent(namespace, 'foo');
68
+ await db.close();
69
+ });
70
+ describe('addComponentSet', () => {
71
+ const webPath = 'set-web-path';
72
+ const testWebPaths = ['set-web-path'];
73
+ afterAll(async () => {
74
+ for (const webPath of testWebPaths) {
75
+ await db.repositories.componentSet.delete({ webPath });
76
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
77
+ }
78
+ });
79
+ it('should create new component set with all the data in the respective tables and return component object', async () => {
80
+ const componentSet = await service.addComponentSet({
81
+ webPath: webPath,
82
+ displayName: 'some-display-name',
83
+ description: 'some-description',
84
+ environmentVariables: {
85
+ 'some-var': 'some-val',
86
+ },
87
+ headers: {
88
+ 'some-header-name': 'some-header-val',
89
+ },
90
+ components: {
91
+ 'unit-test-components/foo': [
92
+ {
93
+ version: '1.0.0',
94
+ environmentVariables: {
95
+ 'some-var': 'some-custom-var',
96
+ },
97
+ },
98
+ ],
99
+ },
100
+ componentVersionRules: {
101
+ 'unit-test-components/foo': {
102
+ renderableVersionPattern: '^1.0.0',
103
+ excludedVersions: ['2.2.2', '3.3.3'],
104
+ editableVersions: ['1.0.0', '2.0.0'],
105
+ },
106
+ },
107
+ });
108
+ expect(componentSet).toEqual({
109
+ webPath: webPath,
110
+ displayName: 'some-display-name',
111
+ description: 'some-description',
112
+ environmentVariables: {
113
+ 'some-var': 'some-val',
114
+ },
115
+ headers: {
116
+ 'some-header-name': 'some-header-val',
117
+ },
118
+ components: {
119
+ 'unit-test-components/foo': [
120
+ {
121
+ version: '1.0.0',
122
+ environmentVariables: {
123
+ 'some-var': 'some-custom-var',
124
+ },
125
+ description: 'some-description',
126
+ displayName: 'some-display-name',
127
+ icon: undefined,
128
+ editable: true,
129
+ },
130
+ ],
131
+ },
132
+ componentVersionRules: {
133
+ 'unit-test-components/foo': {
134
+ renderableVersionPattern: '^1.0.0',
135
+ excludedVersions: ['3.3.3', '2.2.2'],
136
+ editableVersions: ['2.0.0', '1.0.0'],
137
+ },
138
+ },
139
+ });
140
+ const csResult = await db.repositories.componentSet.getComponentSetByWebPath(webPath);
141
+ expect(csResult).toEqual({
142
+ webPath: webPath,
143
+ displayName: 'some-display-name',
144
+ description: 'some-description',
145
+ environmentVariables: {
146
+ 'some-var': 'some-val',
147
+ },
148
+ headers: {
149
+ 'some-header-name': 'some-header-val',
150
+ },
151
+ });
152
+ const cscvResult = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
153
+ expect(cscvResult).toHaveLength(1);
154
+ expect(cscvResult[0]).toEqual({
155
+ componentSetWebPath: 'set-web-path',
156
+ componentName: 'unit-test-components/foo',
157
+ componentVersion: '1.0.0',
158
+ environmentVariables: {
159
+ 'some-var': 'some-custom-var',
160
+ },
161
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
162
+ });
163
+ await expect(db.repositories.componentSetRule.getComponentSetRulesForSet(webPath)).resolves.toEqual({
164
+ 'unit-test-components/foo': '^1.0.0',
165
+ });
166
+ await expect(db.repositories.componentSetComponentVersionExcluded.getComponentSetExcludedVersions(webPath)).resolves.toEqual({
167
+ 'unit-test-components/foo': ['3.3.3', '2.2.2'],
168
+ });
169
+ await expect(db.repositories.componentSetComponentVersionEditable.getComponentSetEditableVersions(webPath)).resolves.toEqual({
170
+ 'unit-test-components/foo': ['2.0.0', '1.0.0'],
171
+ });
172
+ await expect(service.componentVersionExcludedFromSet(webPath, 'unit-test-components/foo', '2.2.2')).resolves.toEqual(true);
173
+ await expect(service.componentVersionExcludedFromSet(webPath, 'unit-test-components/foo', '3.3.3')).resolves.toEqual(true);
174
+ await expect(service.componentVersionExcludedFromSet(webPath, 'unit-test-components/foo', '1.0.0')).resolves.toEqual(false);
175
+ expect(mockInfo).toHaveBeenCalledWith('Component set added: set-web-path.', undefined, undefined, 'componentSetId:set-web-path');
176
+ expect(mockFlush).toHaveBeenCalled();
177
+ }, 15000);
178
+ it('should add components automatically matching component rules', async () => {
179
+ const webPath = 'set-web-path-2';
180
+ testWebPaths.push('set-web-path-2');
181
+ const componentSet = await service.addComponentSet({
182
+ webPath: webPath,
183
+ displayName: 'some-display-name',
184
+ description: 'some-description',
185
+ environmentVariables: {
186
+ 'some-var': 'some-val',
187
+ },
188
+ headers: {
189
+ 'some-header-name': 'some-header-val',
190
+ },
191
+ componentVersionRules: {
192
+ 'unit-test-components/foo': {
193
+ renderableVersionPattern: '1.0.0 || 2.0.0',
194
+ excludedVersions: [],
195
+ editableVersions: ['2.0.0', '1.0.0'],
196
+ },
197
+ },
198
+ });
199
+ expect(componentSet).toMatchInlineSnapshot(`
200
+ {
201
+ "componentVersionRules": {
202
+ "unit-test-components/foo": {
203
+ "editableVersions": [
204
+ "2.0.0",
205
+ "1.0.0",
206
+ ],
207
+ "excludedVersions": [],
208
+ "renderableVersionPattern": "1.0.0 || 2.0.0",
209
+ },
210
+ },
211
+ "components": {
212
+ "unit-test-components/foo": [
213
+ {
214
+ "description": "some-description",
215
+ "displayName": "some-display-name",
216
+ "editable": true,
217
+ "environmentVariables": {},
218
+ "icon": undefined,
219
+ "version": "2.0.0",
220
+ },
221
+ {
222
+ "description": "some-description",
223
+ "displayName": "some-display-name",
224
+ "editable": true,
225
+ "environmentVariables": {},
226
+ "icon": undefined,
227
+ "version": "1.0.0",
228
+ },
229
+ ],
230
+ },
231
+ "description": "some-description",
232
+ "displayName": "some-display-name",
233
+ "environmentVariables": {
234
+ "some-var": "some-val",
235
+ },
236
+ "headers": {
237
+ "some-header-name": "some-header-val",
238
+ },
239
+ "webPath": "set-web-path-2",
240
+ }
241
+ `);
242
+ }, 15000);
243
+ it('should not add any components of renderable version rule is set as empty string', async () => {
244
+ const webPath = 'set-web-path-empty-renderable-rule';
245
+ testWebPaths.push('set-web-path-empty-renderable-rule');
246
+ const componentSet = await service.addComponentSet({
247
+ webPath: webPath,
248
+ displayName: 'some-display-name',
249
+ description: 'some-description',
250
+ environmentVariables: {
251
+ 'some-var': 'some-val',
252
+ },
253
+ headers: {
254
+ 'some-header-name': 'some-header-val',
255
+ },
256
+ componentVersionRules: {
257
+ 'unit-test-components/foo': {
258
+ renderableVersionPattern: '',
259
+ excludedVersions: [],
260
+ editableVersions: ['2.0.0', '1.0.0'],
261
+ },
262
+ },
263
+ });
264
+ expect(componentSet).toMatchInlineSnapshot(`
265
+ {
266
+ "componentVersionRules": {
267
+ "unit-test-components/foo": {
268
+ "editableVersions": [
269
+ "2.0.0",
270
+ "1.0.0",
271
+ ],
272
+ "excludedVersions": [],
273
+ "renderableVersionPattern": "",
274
+ },
275
+ },
276
+ "components": {},
277
+ "description": "some-description",
278
+ "displayName": "some-display-name",
279
+ "environmentVariables": {
280
+ "some-var": "some-val",
281
+ },
282
+ "headers": {
283
+ "some-header-name": "some-header-val",
284
+ },
285
+ "webPath": "set-web-path-empty-renderable-rule",
286
+ }
287
+ `);
288
+ }, 15000);
289
+ it('should should all component versions as non-editable if editable rule not specified', async () => {
290
+ const webPath = 'set-web-path-edit';
291
+ testWebPaths.push('set-web-path-edit');
292
+ const componentSet = await service.addComponentSet({
293
+ webPath: webPath,
294
+ displayName: 'some-display-name',
295
+ description: 'some-description',
296
+ environmentVariables: {
297
+ 'some-var': 'some-val',
298
+ },
299
+ headers: {
300
+ 'some-header-name': 'some-header-val',
301
+ },
302
+ componentVersionRules: {
303
+ 'unit-test-components/foo': {
304
+ renderableVersionPattern: '1.0.0 || 2.0.0',
305
+ excludedVersions: [],
306
+ editableVersions: [],
307
+ },
308
+ },
309
+ });
310
+ expect(componentSet).toMatchInlineSnapshot(`
311
+ {
312
+ "componentVersionRules": {
313
+ "unit-test-components/foo": {
314
+ "editableVersions": [],
315
+ "excludedVersions": [],
316
+ "renderableVersionPattern": "1.0.0 || 2.0.0",
317
+ },
318
+ },
319
+ "components": {
320
+ "unit-test-components/foo": [
321
+ {
322
+ "description": "some-description",
323
+ "displayName": "some-display-name",
324
+ "editable": false,
325
+ "environmentVariables": {},
326
+ "icon": undefined,
327
+ "version": "2.0.0",
328
+ },
329
+ {
330
+ "description": "some-description",
331
+ "displayName": "some-display-name",
332
+ "editable": false,
333
+ "environmentVariables": {},
334
+ "icon": undefined,
335
+ "version": "1.0.0",
336
+ },
337
+ ],
338
+ },
339
+ "description": "some-description",
340
+ "displayName": "some-display-name",
341
+ "environmentVariables": {
342
+ "some-var": "some-val",
343
+ },
344
+ "headers": {
345
+ "some-header-name": "some-header-val",
346
+ },
347
+ "webPath": "set-web-path-edit",
348
+ }
349
+ `);
350
+ }, 15000);
351
+ it('should set latest version in add components as "editable" if editable rule is set as "latest"', async () => {
352
+ const webPath = 'set-web-path-edit-4';
353
+ testWebPaths.push('set-web-path-edit-4');
354
+ const componentSet = await service.addComponentSet({
355
+ webPath: webPath,
356
+ displayName: 'some-display-name',
357
+ description: 'some-description',
358
+ environmentVariables: {
359
+ 'some-var': 'some-val',
360
+ },
361
+ headers: {
362
+ 'some-header-name': 'some-header-val',
363
+ },
364
+ componentVersionRules: {
365
+ 'unit-test-components/foo': {
366
+ renderableVersionPattern: '1.0.0 || 2.0.0',
367
+ excludedVersions: [],
368
+ editableVersions: 'latest',
369
+ },
370
+ },
371
+ });
372
+ expect(componentSet).toMatchInlineSnapshot(`
373
+ {
374
+ "componentVersionRules": {
375
+ "unit-test-components/foo": {
376
+ "editableVersions": [
377
+ "latest",
378
+ ],
379
+ "excludedVersions": [],
380
+ "renderableVersionPattern": "1.0.0 || 2.0.0",
381
+ },
382
+ },
383
+ "components": {
384
+ "unit-test-components/foo": [
385
+ {
386
+ "description": "some-description",
387
+ "displayName": "some-display-name",
388
+ "editable": true,
389
+ "environmentVariables": {},
390
+ "icon": undefined,
391
+ "version": "2.0.0",
392
+ },
393
+ {
394
+ "description": "some-description",
395
+ "displayName": "some-display-name",
396
+ "editable": false,
397
+ "environmentVariables": {},
398
+ "icon": undefined,
399
+ "version": "1.0.0",
400
+ },
401
+ ],
402
+ },
403
+ "description": "some-description",
404
+ "displayName": "some-display-name",
405
+ "environmentVariables": {
406
+ "some-var": "some-val",
407
+ },
408
+ "headers": {
409
+ "some-header-name": "some-header-val",
410
+ },
411
+ "webPath": "set-web-path-edit-4",
412
+ }
413
+ `);
414
+ }, 15000);
415
+ it('should set latest version in add components as "editable" if not editable rule is set as "latest" - with excluded version specified', async () => {
416
+ const webPath = 'set-web-path-edit-2';
417
+ testWebPaths.push('set-web-path-edit-2');
418
+ const componentSet = await service.addComponentSet({
419
+ webPath: webPath,
420
+ displayName: 'some-display-name',
421
+ description: 'some-description',
422
+ environmentVariables: {
423
+ 'some-var': 'some-val',
424
+ },
425
+ headers: {
426
+ 'some-header-name': 'some-header-val',
427
+ },
428
+ componentVersionRules: {
429
+ 'unit-test-components/foo': {
430
+ renderableVersionPattern: '1.0.0 || 2.0.0',
431
+ excludedVersions: ['2.0.0'],
432
+ editableVersions: 'latest',
433
+ },
434
+ },
435
+ });
436
+ expect(componentSet).toMatchInlineSnapshot(`
437
+ {
438
+ "componentVersionRules": {
439
+ "unit-test-components/foo": {
440
+ "editableVersions": [
441
+ "latest",
442
+ ],
443
+ "excludedVersions": [
444
+ "2.0.0",
445
+ ],
446
+ "renderableVersionPattern": "1.0.0 || 2.0.0",
447
+ },
448
+ },
449
+ "components": {
450
+ "unit-test-components/foo": [
451
+ {
452
+ "description": "some-description",
453
+ "displayName": "some-display-name",
454
+ "editable": true,
455
+ "environmentVariables": {},
456
+ "icon": undefined,
457
+ "version": "1.0.0",
458
+ },
459
+ ],
460
+ },
461
+ "description": "some-description",
462
+ "displayName": "some-display-name",
463
+ "environmentVariables": {
464
+ "some-var": "some-val",
465
+ },
466
+ "headers": {
467
+ "some-header-name": "some-header-val",
468
+ },
469
+ "webPath": "set-web-path-edit-2",
470
+ }
471
+ `);
472
+ }, 15000);
473
+ it('should add components automatically matching component rules but should not add "excluded" ones', async () => {
474
+ const webPath = 'set-web-path-3';
475
+ testWebPaths.push('set-web-path-3');
476
+ const componentSet = await service.addComponentSet({
477
+ webPath: webPath,
478
+ displayName: 'some-display-name',
479
+ description: 'some-description',
480
+ environmentVariables: {
481
+ 'some-var': 'some-val',
482
+ },
483
+ headers: {
484
+ 'some-header-name': 'some-header-val',
485
+ },
486
+ componentVersionRules: {
487
+ 'unit-test-components/foo': {
488
+ renderableVersionPattern: '1.0.0 || 2.0.0',
489
+ excludedVersions: ['1.0.0', '2.2.2'],
490
+ editableVersions: [],
491
+ },
492
+ },
493
+ });
494
+ expect(componentSet).toMatchInlineSnapshot(`
495
+ {
496
+ "componentVersionRules": {
497
+ "unit-test-components/foo": {
498
+ "editableVersions": [],
499
+ "excludedVersions": [
500
+ "2.2.2",
501
+ "1.0.0",
502
+ ],
503
+ "renderableVersionPattern": "1.0.0 || 2.0.0",
504
+ },
505
+ },
506
+ "components": {
507
+ "unit-test-components/foo": [
508
+ {
509
+ "description": "some-description",
510
+ "displayName": "some-display-name",
511
+ "editable": false,
512
+ "environmentVariables": {},
513
+ "icon": undefined,
514
+ "version": "2.0.0",
515
+ },
516
+ ],
517
+ },
518
+ "description": "some-description",
519
+ "displayName": "some-display-name",
520
+ "environmentVariables": {
521
+ "some-var": "some-val",
522
+ },
523
+ "headers": {
524
+ "some-header-name": "some-header-val",
525
+ },
526
+ "webPath": "set-web-path-3",
527
+ }
528
+ `);
529
+ }, 15000);
530
+ it('should not be case-sensitive when finding component set', async () => {
531
+ await expect(service.getComponentSet(webPath.toUpperCase())).resolves.toEqual(await service.getComponentSet(webPath));
532
+ });
533
+ it('should throw error if creating duplicate component set', async () => {
534
+ await expect(service.addComponentSet({
535
+ webPath: webPath,
536
+ displayName: 'some-display-name',
537
+ description: 'some-description',
538
+ environmentVariables: {
539
+ 'some-var': 'some-val',
540
+ },
541
+ headers: {
542
+ 'some-header-name': 'some-header-val',
543
+ },
544
+ components: {
545
+ 'unit-test-components/foo': [
546
+ {
547
+ version: '1.0.0',
548
+ environmentVariables: {
549
+ 'some-var': 'some-custom-var',
550
+ },
551
+ },
552
+ ],
553
+ },
554
+ componentVersionRules: {},
555
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Component set with web path set-web-path already exists"`);
556
+ }, 15000);
557
+ it('should throw error webPath is empty', async () => {
558
+ await expect(service.addComponentSet({
559
+ webPath: '',
560
+ displayName: 'some-display-name',
561
+ description: 'some-description',
562
+ environmentVariables: {
563
+ 'some-var': 'some-val',
564
+ },
565
+ headers: {
566
+ 'some-header-name': 'some-header-val',
567
+ },
568
+ components: {
569
+ 'unit-test-components/foo': [
570
+ {
571
+ version: '1.0.0',
572
+ environmentVariables: {},
573
+ },
574
+ ],
575
+ },
576
+ componentVersionRules: {},
577
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component set \'webPath\' must be specificed and non-empty"');
578
+ }, 15000);
579
+ it('should throw error webPath has invalid chars', async () => {
580
+ await expect(service.addComponentSet({
581
+ webPath: 'invali@d-name',
582
+ displayName: 'some-display-name',
583
+ description: 'some-description',
584
+ environmentVariables: {
585
+ 'some-var': 'some-val',
586
+ },
587
+ headers: {
588
+ 'some-header-name': 'some-header-val',
589
+ },
590
+ components: {
591
+ 'unit-test-components/foo': [
592
+ {
593
+ version: '1.0.0',
594
+ environmentVariables: {},
595
+ },
596
+ ],
597
+ },
598
+ componentVersionRules: {},
599
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Invalid Component Set web path. Only [A-Za-z0-9_-.] chars are allowed"');
600
+ }, 15000);
601
+ it('should throw error if component name does not exist', async () => {
602
+ await expect(service.addComponentSet({
603
+ webPath: 'some-other-webpath',
604
+ displayName: 'some-display-name',
605
+ description: 'some-description',
606
+ environmentVariables: {
607
+ 'some-var': 'some-val',
608
+ },
609
+ headers: {
610
+ 'some-header-name': 'some-header-val',
611
+ },
612
+ components: {
613
+ 'unit-test-components/foo2': [
614
+ {
615
+ version: '1.0.0',
616
+ environmentVariables: {},
617
+ },
618
+ ],
619
+ },
620
+ componentVersionRules: {},
621
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component unit-test-components/foo2 with version 1.0.0 does not exists"');
622
+ }, 15000);
623
+ it('should throw error if component version does not exist', async () => {
624
+ await expect(service.addComponentSet({
625
+ webPath: 'some-other-webpath',
626
+ displayName: 'some-display-name',
627
+ description: 'some-description',
628
+ environmentVariables: {
629
+ 'some-var': 'some-val',
630
+ },
631
+ headers: {
632
+ 'some-header-name': 'some-header-val',
633
+ },
634
+ components: {
635
+ 'unit-test-components/foo': [
636
+ {
637
+ version: '1.1.1',
638
+ environmentVariables: {},
639
+ },
640
+ ],
641
+ },
642
+ componentVersionRules: {},
643
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component unit-test-components/foo with version 1.1.1 does not exists"');
644
+ }, 15000);
645
+ it('should throw error if duplicate component versions in components', async () => {
646
+ await expect(service.addComponentSet({
647
+ webPath: (0, crypto_1.randomUUID)(),
648
+ displayName: 'some-display-name',
649
+ description: 'some-description',
650
+ environmentVariables: {
651
+ 'some-var': 'some-val',
652
+ },
653
+ headers: {
654
+ 'some-header-name': 'some-header-val',
655
+ },
656
+ components: {
657
+ 'unit-test-components/foo': [
658
+ {
659
+ version: '1.0.0',
660
+ environmentVariables: {
661
+ 'some-var': 'some-custom-var',
662
+ },
663
+ },
664
+ {
665
+ version: '1.0.0',
666
+ environmentVariables: {
667
+ 'some-var2': 'some-custom-var2',
668
+ },
669
+ },
670
+ ],
671
+ },
672
+ componentVersionRules: {},
673
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Multiple componet version entries for component unit-test-components/foo with version 1.0.0"`);
674
+ }, 15000);
675
+ it('should error if added component does not satisfy componentVersionRules', async () => {
676
+ await expect(service.addComponentSet({
677
+ webPath: (0, crypto_1.randomUUID)(),
678
+ displayName: 'some-display-name',
679
+ description: 'some-description',
680
+ environmentVariables: {
681
+ 'some-var': 'some-val',
682
+ },
683
+ headers: {
684
+ 'some-header-name': 'some-header-val',
685
+ },
686
+ components: {
687
+ 'unit-test-components/foo': [
688
+ {
689
+ version: '1.0.0',
690
+ environmentVariables: {
691
+ 'some-var': 'some-custom-var',
692
+ },
693
+ },
694
+ ],
695
+ },
696
+ componentVersionRules: {
697
+ 'unit-test-components/foo': {
698
+ renderableVersionPattern: '^2.0.0',
699
+ excludedVersions: [],
700
+ editableVersions: [],
701
+ },
702
+ },
703
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Component versions must satisfy version rule"`);
704
+ });
705
+ });
706
+ describe('updateComponentSet', () => {
707
+ const webPath = 'set-web-path';
708
+ beforeAll(async () => {
709
+ await service.addComponentSet({
710
+ webPath: webPath,
711
+ displayName: 'some-display-name',
712
+ description: 'some-description',
713
+ environmentVariables: {
714
+ 'some-var': 'some-val',
715
+ },
716
+ headers: {
717
+ 'some-header-name': 'some-header-val',
718
+ },
719
+ components: {
720
+ 'unit-test-components/foo': [
721
+ {
722
+ version: '1.0.0',
723
+ environmentVariables: {
724
+ 'some-var': 'some-custom-var',
725
+ },
726
+ },
727
+ ],
728
+ },
729
+ componentVersionRules: {
730
+ 'unit-test-components/foo': {
731
+ renderableVersionPattern: '1.0.0',
732
+ excludedVersions: [],
733
+ editableVersions: [],
734
+ },
735
+ },
736
+ });
737
+ });
738
+ afterAll(async () => {
739
+ await db.repositories.componentSet.delete({ webPath });
740
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
741
+ });
742
+ it('should update existing component set with all the data in the respective tables and return component object', async () => {
743
+ const componentSet = await service.updateComponentSet(webPath, {
744
+ displayName: 'some-display-name - updated',
745
+ description: 'some-description - updated',
746
+ environmentVariables: {
747
+ 'some-var': 'some-val',
748
+ 'some-var2': 'some-val2',
749
+ },
750
+ headers: {
751
+ 'some-header-name': 'some-header-val - updated',
752
+ },
753
+ componentVersionRules: {
754
+ 'unit-test-components/foo': {
755
+ renderableVersionPattern: '*',
756
+ excludedVersions: ['2.2.2', '3.3.3'],
757
+ editableVersions: ['1.0.0', '2.0.0'],
758
+ },
759
+ },
760
+ });
761
+ expect(componentSet).toEqual({
762
+ webPath: webPath,
763
+ displayName: 'some-display-name - updated',
764
+ description: 'some-description - updated',
765
+ environmentVariables: {
766
+ 'some-var': 'some-val',
767
+ 'some-var2': 'some-val2',
768
+ },
769
+ headers: {
770
+ 'some-header-name': 'some-header-val - updated',
771
+ },
772
+ components: {
773
+ 'unit-test-components/foo': [
774
+ {
775
+ version: '2.0.0',
776
+ environmentVariables: {},
777
+ description: 'some-description',
778
+ displayName: 'some-display-name',
779
+ icon: undefined,
780
+ editable: true,
781
+ },
782
+ {
783
+ version: '1.0.0',
784
+ environmentVariables: {
785
+ 'some-var': 'some-custom-var',
786
+ },
787
+ description: 'some-description',
788
+ displayName: 'some-display-name',
789
+ icon: undefined,
790
+ editable: true,
791
+ },
792
+ ],
793
+ },
794
+ componentVersionRules: {
795
+ 'unit-test-components/foo': {
796
+ renderableVersionPattern: '*',
797
+ excludedVersions: ['3.3.3', '2.2.2'],
798
+ editableVersions: ['2.0.0', '1.0.0'],
799
+ },
800
+ },
801
+ });
802
+ const csResult = await db.repositories.componentSet.getComponentSetByWebPath(webPath);
803
+ expect(csResult).toEqual({
804
+ webPath: webPath,
805
+ displayName: 'some-display-name - updated',
806
+ description: 'some-description - updated',
807
+ environmentVariables: {
808
+ 'some-var': 'some-val',
809
+ 'some-var2': 'some-val2',
810
+ },
811
+ headers: {
812
+ 'some-header-name': 'some-header-val - updated',
813
+ },
814
+ });
815
+ const cscvResult = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
816
+ expect(cscvResult).toHaveLength(2);
817
+ const versionV1 = cscvResult.find((result) => result.componentVersion === '1.0.0');
818
+ const versionV2 = cscvResult.find((result) => result.componentVersion === '2.0.0');
819
+ expect(versionV2).toEqual({
820
+ componentSetWebPath: 'set-web-path',
821
+ componentName: 'unit-test-components/foo',
822
+ componentVersion: '2.0.0',
823
+ environmentVariables: {},
824
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
825
+ });
826
+ expect(versionV1).toEqual({
827
+ componentSetWebPath: 'set-web-path',
828
+ componentName: 'unit-test-components/foo',
829
+ componentVersion: '1.0.0',
830
+ environmentVariables: {
831
+ 'some-var': 'some-custom-var',
832
+ },
833
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
834
+ });
835
+ await expect(db.repositories.componentSetRule.find({ componentSet: webPath })).resolves.toEqual([
836
+ { componentSet: webPath, componentName: 'unit-test-components/foo', versionPattern: '*' },
837
+ ]);
838
+ await expect(db.repositories.componentSetComponentVersionExcluded.getComponentSetExcludedVersions(webPath)).resolves.toEqual({
839
+ 'unit-test-components/foo': ['3.3.3', '2.2.2'],
840
+ });
841
+ await expect(db.repositories.componentSetComponentVersionEditable.getComponentSetEditableVersions(webPath)).resolves.toEqual({
842
+ 'unit-test-components/foo': ['2.0.0', '1.0.0'],
843
+ });
844
+ expect(mockInfo).toHaveBeenCalledWith(`Component set updated: "set-web-path". Changed from {"unit-test-components/foo":[{"version":"1.0.0","description":"some-description","displayName":"some-display-name","editable":false}]} to {"unit-test-components/foo":[{"version":"2.0.0","description":"some-description","displayName":"some-display-name","editable":true},{"version":"1.0.0","description":"some-description","displayName":"some-display-name","editable":true}]}.`, undefined, undefined, 'componentSetId:set-web-path ');
845
+ expect(mockFlush).toHaveBeenCalled();
846
+ }, 15000);
847
+ it('should log the change to the component if the component itself was changed', async () => {
848
+ const webPath = 'newpath';
849
+ await service.addComponentSet({
850
+ webPath: webPath,
851
+ displayName: 'some-display-name',
852
+ description: 'some-description',
853
+ environmentVariables: {
854
+ 'some-var': 'some-val',
855
+ },
856
+ headers: {
857
+ 'some-header-name': 'some-header-val',
858
+ },
859
+ components: {
860
+ 'unit-test-components/foo': [
861
+ {
862
+ version: '1.0.0',
863
+ environmentVariables: {
864
+ 'some-var': 'some-custom-var',
865
+ },
866
+ },
867
+ ],
868
+ },
869
+ componentVersionRules: {
870
+ 'unit-test-components/foo': {
871
+ renderableVersionPattern: '1.0.0',
872
+ excludedVersions: [],
873
+ editableVersions: [],
874
+ },
875
+ },
876
+ });
877
+ await service.updateComponentSet(webPath, {
878
+ components: {
879
+ 'unit-test-components/foo': [
880
+ {
881
+ version: '1.0.0',
882
+ environmentVariables: {
883
+ 'some-var': 'some-custom-var - updated',
884
+ },
885
+ },
886
+ ],
887
+ },
888
+ });
889
+ expect(mockInfo).toHaveBeenCalledWith(`Component set updated: "${webPath}". Changed from ${JSON.stringify({
890
+ 'unit-test-components/foo': [
891
+ {
892
+ version: '1.0.0',
893
+ description: 'some-description',
894
+ displayName: 'some-display-name',
895
+ editable: false,
896
+ },
897
+ ],
898
+ })} to ${JSON.stringify({
899
+ 'unit-test-components/foo': [
900
+ {
901
+ version: '1.0.0',
902
+ description: 'some-description',
903
+ displayName: 'some-display-name',
904
+ editable: false,
905
+ },
906
+ ],
907
+ })}.`, undefined, undefined, 'componentSetId:newpath ');
908
+ expect(mockFlush).toHaveBeenCalled();
909
+ });
910
+ it('should set latest version as "editable" if editable rule not specified', async () => {
911
+ const componentSet = await service.updateComponentSet(webPath, {
912
+ displayName: 'some-display-name - updated',
913
+ description: 'some-description - updated',
914
+ environmentVariables: {
915
+ 'some-var': 'some-val',
916
+ 'some-var2': 'some-val2',
917
+ },
918
+ headers: {
919
+ 'some-header-name': 'some-header-val - updated',
920
+ },
921
+ componentVersionRules: {
922
+ 'unit-test-components/foo': {
923
+ renderableVersionPattern: '*',
924
+ excludedVersions: ['3.3.3', '2.2.2'],
925
+ editableVersions: 'latest',
926
+ },
927
+ },
928
+ });
929
+ expect(componentSet.components).toMatchInlineSnapshot(`
930
+ {
931
+ "unit-test-components/foo": [
932
+ {
933
+ "description": "some-description",
934
+ "displayName": "some-display-name",
935
+ "editable": true,
936
+ "environmentVariables": {},
937
+ "icon": undefined,
938
+ "version": "2.0.0",
939
+ },
940
+ {
941
+ "description": "some-description",
942
+ "displayName": "some-display-name",
943
+ "editable": false,
944
+ "environmentVariables": {
945
+ "some-var": "some-custom-var",
946
+ },
947
+ "icon": undefined,
948
+ "version": "1.0.0",
949
+ },
950
+ ],
951
+ }
952
+ `);
953
+ }, 15000);
954
+ it('should set latest version as "editable" if editable rule not specified - with latest "excluded"', async () => {
955
+ const componentSet = await service.updateComponentSet(webPath, {
956
+ displayName: 'some-display-name - updated',
957
+ description: 'some-description - updated',
958
+ environmentVariables: {
959
+ 'some-var': 'some-val',
960
+ 'some-var2': 'some-val2',
961
+ },
962
+ headers: {
963
+ 'some-header-name': 'some-header-val - updated',
964
+ },
965
+ componentVersionRules: {
966
+ 'unit-test-components/foo': {
967
+ renderableVersionPattern: '*',
968
+ excludedVersions: ['2.0.0'],
969
+ editableVersions: 'latest',
970
+ },
971
+ },
972
+ });
973
+ expect(componentSet.components).toMatchInlineSnapshot(`
974
+ {
975
+ "unit-test-components/foo": [
976
+ {
977
+ "description": "some-description",
978
+ "displayName": "some-display-name",
979
+ "editable": true,
980
+ "environmentVariables": {
981
+ "some-var": "some-custom-var",
982
+ },
983
+ "icon": undefined,
984
+ "version": "1.0.0",
985
+ },
986
+ ],
987
+ }
988
+ `);
989
+ }, 15000);
990
+ it('should make components in the set not active if componentVersionRule is updated to not include it', async () => {
991
+ const componentSet = await service.updateComponentSet(webPath, {
992
+ componentVersionRules: {
993
+ 'unit-test-components/foo': {
994
+ renderableVersionPattern: '^2.0.0',
995
+ excludedVersions: [],
996
+ editableVersions: ['latest', '2.0.0', '1.1.1'],
997
+ },
998
+ },
999
+ });
1000
+ expect(componentSet.components).toEqual({
1001
+ 'unit-test-components/foo': [
1002
+ {
1003
+ version: '2.0.0',
1004
+ environmentVariables: {},
1005
+ description: 'some-description',
1006
+ displayName: 'some-display-name',
1007
+ icon: undefined,
1008
+ editable: true,
1009
+ },
1010
+ ],
1011
+ });
1012
+ const cscvResult = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
1013
+ expect(cscvResult.find((c) => c.componentVersion === '1.0.0')).toHaveProperty('status', ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.excluded);
1014
+ expect(cscvResult.find((c) => c.componentVersion === '2.0.0')).toHaveProperty('status', ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active);
1015
+ });
1016
+ it('should remove components from set if the componentVersionRule is removed', async () => {
1017
+ const componentSet = await service.updateComponentSet(webPath, { componentVersionRules: {} });
1018
+ expect(componentSet.components).toEqual({});
1019
+ expect(componentSet.componentVersionRules).toEqual({});
1020
+ });
1021
+ it('should exclude the "excluded" component version from the set', async () => {
1022
+ // this shouldn't exclude any of the components
1023
+ // since "excluded" versions are not there
1024
+ const componentSet = await service.updateComponentSet(webPath, {
1025
+ componentVersionRules: {
1026
+ 'unit-test-components/foo': {
1027
+ renderableVersionPattern: '*',
1028
+ excludedVersions: ['5.0.0', '3.3.3'],
1029
+ editableVersions: ['1.0.0', '2.0.0'],
1030
+ },
1031
+ },
1032
+ });
1033
+ expect(componentSet.components).toMatchInlineSnapshot(`
1034
+ {
1035
+ "unit-test-components/foo": [
1036
+ {
1037
+ "description": "some-description",
1038
+ "displayName": "some-display-name",
1039
+ "editable": true,
1040
+ "environmentVariables": {},
1041
+ "icon": undefined,
1042
+ "version": "2.0.0",
1043
+ },
1044
+ {
1045
+ "description": "some-description",
1046
+ "displayName": "some-display-name",
1047
+ "editable": true,
1048
+ "environmentVariables": {
1049
+ "some-var": "some-custom-var",
1050
+ },
1051
+ "icon": undefined,
1052
+ "version": "1.0.0",
1053
+ },
1054
+ ],
1055
+ }
1056
+ `);
1057
+ const cscvResult = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
1058
+ const versionV1 = cscvResult.find((result) => result.componentVersion === '1.0.0');
1059
+ const versionV2 = cscvResult.find((result) => result.componentVersion === '2.0.0');
1060
+ expect(versionV2).toEqual({
1061
+ componentSetWebPath: 'set-web-path',
1062
+ componentName: 'unit-test-components/foo',
1063
+ componentVersion: '2.0.0',
1064
+ environmentVariables: {},
1065
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
1066
+ });
1067
+ expect(versionV1).toEqual({
1068
+ componentSetWebPath: 'set-web-path',
1069
+ componentName: 'unit-test-components/foo',
1070
+ componentVersion: '1.0.0',
1071
+ environmentVariables: {
1072
+ 'some-var': 'some-custom-var',
1073
+ },
1074
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
1075
+ });
1076
+ // this should exclude "1.0.0" version
1077
+ const componentSet2 = await service.updateComponentSet(webPath, {
1078
+ componentVersionRules: {
1079
+ 'unit-test-components/foo': {
1080
+ renderableVersionPattern: '*',
1081
+ excludedVersions: ['1.0.0', '3.3.3'],
1082
+ editableVersions: ['1.0.0', '2.0.0'],
1083
+ },
1084
+ },
1085
+ });
1086
+ expect(componentSet2.components).toMatchInlineSnapshot(`
1087
+ {
1088
+ "unit-test-components/foo": [
1089
+ {
1090
+ "description": "some-description",
1091
+ "displayName": "some-display-name",
1092
+ "editable": true,
1093
+ "environmentVariables": {},
1094
+ "icon": undefined,
1095
+ "version": "2.0.0",
1096
+ },
1097
+ ],
1098
+ }
1099
+ `);
1100
+ const cscvResult_2 = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
1101
+ const versionV1_2 = cscvResult_2.find((result) => result.componentVersion === '1.0.0');
1102
+ const versionV2_2 = cscvResult_2.find((result) => result.componentVersion === '2.0.0');
1103
+ expect(versionV2_2).toEqual({
1104
+ componentSetWebPath: 'set-web-path',
1105
+ componentName: 'unit-test-components/foo',
1106
+ componentVersion: '2.0.0',
1107
+ environmentVariables: {},
1108
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.active,
1109
+ });
1110
+ expect(versionV1_2).toEqual({
1111
+ componentSetWebPath: 'set-web-path',
1112
+ componentName: 'unit-test-components/foo',
1113
+ componentVersion: '1.0.0',
1114
+ environmentVariables: {
1115
+ 'some-var': 'some-custom-var',
1116
+ },
1117
+ status: ComponentSetComponentVersion_1.ComponentSetComponentVersionStatus.excluded,
1118
+ });
1119
+ }, 15000);
1120
+ it('should retain the existing env vars data even after being "excluded" from the set', async () => {
1121
+ let componentSet = await service.updateComponentSet(webPath, {
1122
+ componentVersionRules: {
1123
+ 'unit-test-components/foo': {
1124
+ renderableVersionPattern: '*',
1125
+ excludedVersions: ['1.0.0'],
1126
+ editableVersions: ['1.0.0', '2.0.0'],
1127
+ },
1128
+ },
1129
+ });
1130
+ expect(componentSet.components).toMatchInlineSnapshot(`
1131
+ {
1132
+ "unit-test-components/foo": [
1133
+ {
1134
+ "description": "some-description",
1135
+ "displayName": "some-display-name",
1136
+ "editable": true,
1137
+ "environmentVariables": {},
1138
+ "icon": undefined,
1139
+ "version": "2.0.0",
1140
+ },
1141
+ ],
1142
+ }
1143
+ `);
1144
+ componentSet = await service.updateComponentSet(webPath, {
1145
+ componentVersionRules: {
1146
+ 'unit-test-components/foo': {
1147
+ renderableVersionPattern: '*',
1148
+ excludedVersions: [],
1149
+ editableVersions: ['1.0.0', '2.0.0'],
1150
+ },
1151
+ },
1152
+ });
1153
+ // env var set in "1.0.0" is still there
1154
+ expect(componentSet.components).toMatchInlineSnapshot(`
1155
+ {
1156
+ "unit-test-components/foo": [
1157
+ {
1158
+ "description": "some-description",
1159
+ "displayName": "some-display-name",
1160
+ "editable": true,
1161
+ "environmentVariables": {},
1162
+ "icon": undefined,
1163
+ "version": "2.0.0",
1164
+ },
1165
+ {
1166
+ "description": "some-description",
1167
+ "displayName": "some-display-name",
1168
+ "editable": true,
1169
+ "environmentVariables": {
1170
+ "some-var": "some-custom-var",
1171
+ },
1172
+ "icon": undefined,
1173
+ "version": "1.0.0",
1174
+ },
1175
+ ],
1176
+ }
1177
+ `);
1178
+ }, 15000);
1179
+ it('should retain the existing env vars data even after being "excluded" from the set - via rules', async () => {
1180
+ let componentSet = await service.updateComponentSet(webPath, {
1181
+ componentVersionRules: {
1182
+ 'unit-test-components/foo': {
1183
+ renderableVersionPattern: '2.0.0',
1184
+ excludedVersions: [],
1185
+ editableVersions: ['1.0.0', '2.0.0'],
1186
+ },
1187
+ },
1188
+ });
1189
+ expect(componentSet.components).toMatchInlineSnapshot(`
1190
+ {
1191
+ "unit-test-components/foo": [
1192
+ {
1193
+ "description": "some-description",
1194
+ "displayName": "some-display-name",
1195
+ "editable": true,
1196
+ "environmentVariables": {},
1197
+ "icon": undefined,
1198
+ "version": "2.0.0",
1199
+ },
1200
+ ],
1201
+ }
1202
+ `);
1203
+ componentSet = await service.updateComponentSet(webPath, {
1204
+ componentVersionRules: {
1205
+ 'unit-test-components/foo': {
1206
+ renderableVersionPattern: '*',
1207
+ excludedVersions: [],
1208
+ editableVersions: ['1.0.0', '2.0.0'],
1209
+ },
1210
+ },
1211
+ });
1212
+ // env var set in "1.0.0" is still there
1213
+ expect(componentSet.components).toMatchInlineSnapshot(`
1214
+ {
1215
+ "unit-test-components/foo": [
1216
+ {
1217
+ "description": "some-description",
1218
+ "displayName": "some-display-name",
1219
+ "editable": true,
1220
+ "environmentVariables": {},
1221
+ "icon": undefined,
1222
+ "version": "2.0.0",
1223
+ },
1224
+ {
1225
+ "description": "some-description",
1226
+ "displayName": "some-display-name",
1227
+ "editable": true,
1228
+ "environmentVariables": {
1229
+ "some-var": "some-custom-var",
1230
+ },
1231
+ "icon": undefined,
1232
+ "version": "1.0.0",
1233
+ },
1234
+ ],
1235
+ }
1236
+ `);
1237
+ }, 15000);
1238
+ it('should throw error if added componentVersion does not satisfy existing componentVersionRules', async () => {
1239
+ const componentSet = await service.updateComponentSet(webPath, {
1240
+ componentVersionRules: {
1241
+ 'unit-test-components/foo': {
1242
+ renderableVersionPattern: '^1.0.0',
1243
+ excludedVersions: [],
1244
+ editableVersions: [],
1245
+ },
1246
+ },
1247
+ components: { 'unit-test-components/foo': [{ version: '1.0.0', environmentVariables: {} }] },
1248
+ });
1249
+ const componentVersions = [
1250
+ ...componentSet.components['unit-test-components/foo'],
1251
+ {
1252
+ version: '2.0.0',
1253
+ environmentVariables: {},
1254
+ },
1255
+ ];
1256
+ await expect(service.updateComponentSet(webPath, {
1257
+ components: {
1258
+ 'unit-test-components/foo': componentVersions,
1259
+ },
1260
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Component versions must satisfy version rule"`);
1261
+ });
1262
+ it('should allow setting componentVersion env vars if it satisfies added componentVersionRules in same update', async () => {
1263
+ await service.updateComponentSet(webPath, {
1264
+ componentVersionRules: {
1265
+ 'unit-test-components/foo': {
1266
+ renderableVersionPattern: '*',
1267
+ excludedVersions: [],
1268
+ editableVersions: [],
1269
+ },
1270
+ },
1271
+ });
1272
+ const result = await service.updateComponentSet(webPath, {
1273
+ componentVersionRules: {
1274
+ 'unit-test-components/foo': {
1275
+ renderableVersionPattern: '*',
1276
+ excludedVersions: [],
1277
+ editableVersions: [],
1278
+ },
1279
+ },
1280
+ components: {
1281
+ 'unit-test-components/foo': [
1282
+ {
1283
+ version: '1.0.0',
1284
+ environmentVariables: {
1285
+ 'some-var': 'some-custom-var-1',
1286
+ },
1287
+ },
1288
+ {
1289
+ version: '2.0.0',
1290
+ environmentVariables: {
1291
+ 'some-var': 'some-custom-var-2',
1292
+ },
1293
+ },
1294
+ ],
1295
+ },
1296
+ });
1297
+ expect(result.components).toMatchInlineSnapshot(`
1298
+ {
1299
+ "unit-test-components/foo": [
1300
+ {
1301
+ "description": "some-description",
1302
+ "displayName": "some-display-name",
1303
+ "editable": false,
1304
+ "environmentVariables": {
1305
+ "some-var": "some-custom-var-2",
1306
+ },
1307
+ "icon": undefined,
1308
+ "version": "2.0.0",
1309
+ },
1310
+ {
1311
+ "description": "some-description",
1312
+ "displayName": "some-display-name",
1313
+ "editable": false,
1314
+ "environmentVariables": {
1315
+ "some-var": "some-custom-var-1",
1316
+ },
1317
+ "icon": undefined,
1318
+ "version": "1.0.0",
1319
+ },
1320
+ ],
1321
+ }
1322
+ `);
1323
+ });
1324
+ it('should throw error if specified componentVersion does not satisfy a new componentVersionRule', async () => {
1325
+ const version = [
1326
+ {
1327
+ version: '2.0.0',
1328
+ environmentVariables: {},
1329
+ },
1330
+ ];
1331
+ await expect(service.updateComponentSet(webPath, {
1332
+ componentVersionRules: {
1333
+ 'unit-test-components/foo': {
1334
+ renderableVersionPattern: '^1.0.0',
1335
+ excludedVersions: [],
1336
+ editableVersions: [],
1337
+ },
1338
+ },
1339
+ components: {
1340
+ 'unit-test-components/foo': version,
1341
+ },
1342
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Component versions must satisfy version rule"`);
1343
+ });
1344
+ it('should throw error if component set web path does not exist', async () => {
1345
+ await expect(service.updateComponentSet('idontexist', {
1346
+ displayName: 'some-display-name',
1347
+ description: 'some-description',
1348
+ environmentVariables: {
1349
+ 'some-var': 'some-val',
1350
+ },
1351
+ headers: {
1352
+ 'some-header-name': 'some-header-val',
1353
+ },
1354
+ components: {
1355
+ 'unit-test-components/foo2': [
1356
+ {
1357
+ version: '1.0.0',
1358
+ environmentVariables: {},
1359
+ },
1360
+ ],
1361
+ },
1362
+ componentVersionRules: {},
1363
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component set with web path idontexist does not exist"');
1364
+ }, 15000);
1365
+ it('should throw error if component name does not exist', async () => {
1366
+ await expect(service.updateComponentSet(webPath, {
1367
+ displayName: 'some-display-name',
1368
+ description: 'some-description',
1369
+ environmentVariables: {
1370
+ 'some-var': 'some-val',
1371
+ },
1372
+ headers: {
1373
+ 'some-header-name': 'some-header-val',
1374
+ },
1375
+ components: {
1376
+ 'unit-test-components/foo2': [
1377
+ {
1378
+ version: '1.0.0',
1379
+ environmentVariables: {},
1380
+ },
1381
+ ],
1382
+ },
1383
+ componentVersionRules: {},
1384
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component unit-test-components/foo2 with version 1.0.0 does not exists"');
1385
+ }, 15000);
1386
+ it('should throw error if component version does not exist', async () => {
1387
+ await expect(service.updateComponentSet(webPath, {
1388
+ displayName: 'some-display-name',
1389
+ description: 'some-description',
1390
+ environmentVariables: {
1391
+ 'some-var': 'some-val',
1392
+ },
1393
+ headers: {
1394
+ 'some-header-name': 'some-header-val',
1395
+ },
1396
+ components: {
1397
+ 'unit-test-components/foo2': [
1398
+ {
1399
+ version: '1.1.1',
1400
+ environmentVariables: {},
1401
+ },
1402
+ ],
1403
+ },
1404
+ componentVersionRules: {},
1405
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Component unit-test-components/foo2 with version 1.1.1 does not exists"');
1406
+ }, 15000);
1407
+ it('should throw error if env var set on component version is not defined on the component set', async () => {
1408
+ await expect(service.updateComponentSet(webPath, {
1409
+ displayName: 'some-display-name',
1410
+ description: 'some-description',
1411
+ environmentVariables: {
1412
+ 'some-var': 'some-val',
1413
+ },
1414
+ headers: {
1415
+ 'some-header-name': 'some-header-val',
1416
+ },
1417
+ components: {
1418
+ 'unit-test-components/foo2': [
1419
+ {
1420
+ version: '1.0.0',
1421
+ environmentVariables: {
1422
+ 'some-var': 'some-val',
1423
+ 'some-other-var': 'some-val',
1424
+ },
1425
+ },
1426
+ ],
1427
+ },
1428
+ componentVersionRules: {},
1429
+ })).rejects.toThrowErrorMatchingInlineSnapshot('"Env var(s) \'some-other-var\' defined on component unit-test-components/foo2 with version 1.0.0 is/are not defined on the component set"');
1430
+ }, 15000);
1431
+ it('should throw error if componentVersionRules has an invalid semver range', async () => {
1432
+ await expect(service.updateComponentSet(webPath, {
1433
+ componentVersionRules: {
1434
+ 'unit-test-components/foo': {
1435
+ renderableVersionPattern: 'abcd',
1436
+ excludedVersions: [],
1437
+ editableVersions: [],
1438
+ },
1439
+ },
1440
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Invalid renderable component version semver value: abcd"`);
1441
+ });
1442
+ it('should throw error if the header name contains invalid characters', async () => {
1443
+ await expect(service.updateComponentSet(webPath, {
1444
+ headers: {
1445
+ 'inv@lid-n@m3': 'value',
1446
+ },
1447
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Invalid 'header' name for 'inv@lid-n@m3'. Only [A-Za-z0-9_-.] chars are allowed"`);
1448
+ });
1449
+ it('should throw error if the header name contains whitespace', async () => {
1450
+ await expect(service.updateComponentSet(webPath, {
1451
+ headers: {
1452
+ 'variable name': 'value',
1453
+ },
1454
+ })).rejects.toThrowErrorMatchingInlineSnapshot(`"Invalid 'header' name for 'variable name'. Only [A-Za-z0-9_-.] chars are allowed"`);
1455
+ });
1456
+ });
1457
+ describe('getComponentSet', () => {
1458
+ const webPath = 'set-web-path';
1459
+ const setWithIconWebPath = (0, crypto_1.randomUUID)();
1460
+ beforeAll(async () => {
1461
+ await service.addComponentSet({
1462
+ webPath: webPath,
1463
+ displayName: 'some-display-name',
1464
+ description: 'some-description',
1465
+ environmentVariables: {
1466
+ 'some-var': 'some-val',
1467
+ },
1468
+ headers: {
1469
+ 'some-header-name': 'some-header-val',
1470
+ },
1471
+ components: {
1472
+ 'unit-test-components/foo': [
1473
+ {
1474
+ version: '1.0.0',
1475
+ environmentVariables: {},
1476
+ },
1477
+ ],
1478
+ },
1479
+ componentVersionRules: {
1480
+ 'unit-test-components/foo': {
1481
+ renderableVersionPattern: '^1.0.0',
1482
+ excludedVersions: [],
1483
+ editableVersions: [],
1484
+ },
1485
+ },
1486
+ });
1487
+ });
1488
+ afterAll(async () => {
1489
+ await db.repositories.componentSet.delete({ webPath });
1490
+ await db.repositories.componentSet.delete({ webPath: setWithIconWebPath });
1491
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
1492
+ });
1493
+ it('should return the component set object', async () => {
1494
+ const componentSet = await service.getComponentSetWebModel(webPath);
1495
+ expect(componentSet).toEqual({
1496
+ webPath: webPath,
1497
+ displayName: 'some-display-name',
1498
+ description: 'some-description',
1499
+ environmentVariables: {
1500
+ 'some-var': 'some-val',
1501
+ },
1502
+ headers: {
1503
+ 'some-header-name': 'some-header-val',
1504
+ },
1505
+ components: {
1506
+ 'unit-test-components/foo': [
1507
+ {
1508
+ environmentVariables: {},
1509
+ version: '1.0.0',
1510
+ description: 'some-description',
1511
+ displayName: 'some-display-name',
1512
+ icon: undefined,
1513
+ editable: false,
1514
+ },
1515
+ ],
1516
+ },
1517
+ componentVersionRules: {
1518
+ 'unit-test-components/foo': {
1519
+ renderableVersionPattern: '^1.0.0',
1520
+ excludedVersions: [],
1521
+ editableVersions: [],
1522
+ },
1523
+ },
1524
+ });
1525
+ }, 15000);
1526
+ it('should return the icon, displayName and description of each component version in the set', async () => {
1527
+ const componentSetFromCreate = await service.addComponentSet({
1528
+ webPath: setWithIconWebPath,
1529
+ description: 'component set description',
1530
+ displayName: 'test - ' + setWithIconWebPath,
1531
+ componentVersionRules: {
1532
+ 'unit-test-components/test-icon-component': {
1533
+ renderableVersionPattern: '1.0.0 || 1.0.3',
1534
+ excludedVersions: [],
1535
+ editableVersions: [],
1536
+ },
1537
+ },
1538
+ });
1539
+ const expected = {
1540
+ webPath: setWithIconWebPath,
1541
+ description: 'component set description',
1542
+ displayName: 'test - ' + setWithIconWebPath,
1543
+ componentVersionRules: {
1544
+ 'unit-test-components/test-icon-component': {
1545
+ renderableVersionPattern: '1.0.0 || 1.0.3',
1546
+ excludedVersions: [],
1547
+ editableVersions: [],
1548
+ },
1549
+ },
1550
+ environmentVariables: {},
1551
+ headers: {},
1552
+ components: {
1553
+ 'unit-test-components/test-icon-component': [
1554
+ {
1555
+ version: '1.0.3',
1556
+ environmentVariables: {},
1557
+ description: 'test with hex icon colour',
1558
+ displayName: 'test icon component',
1559
+ icon: {
1560
+ color: {
1561
+ type: 'hex',
1562
+ value: '#2D2D2D',
1563
+ },
1564
+ id: 'zoom_in',
1565
+ },
1566
+ editable: false,
1567
+ },
1568
+ {
1569
+ version: '1.0.0',
1570
+ environmentVariables: {},
1571
+ description: 'test icon component with enum colour',
1572
+ displayName: 'test icon component',
1573
+ icon: {
1574
+ color: {
1575
+ type: 'enum',
1576
+ value: 'gray',
1577
+ },
1578
+ id: 'add_box',
1579
+ },
1580
+ editable: false,
1581
+ },
1582
+ ],
1583
+ },
1584
+ };
1585
+ expect(componentSetFromCreate).toEqual(expected);
1586
+ const requestedSet = await service.getComponentSetWebModel(setWithIconWebPath);
1587
+ expect(requestedSet).toEqual(expected);
1588
+ }, 15000);
1589
+ it('should throw error if component set web path does not exist', async () => {
1590
+ await expect(service.getComponentSetWebModel('idontexist')).rejects.toThrowErrorMatchingInlineSnapshot('"Component set with web path idontexist does not exist"');
1591
+ }, 15000);
1592
+ });
1593
+ describe('getAllComponentSets', () => {
1594
+ const webPath = 'set-web-path';
1595
+ beforeAll(async () => {
1596
+ await service.addComponentSet({
1597
+ webPath: webPath,
1598
+ displayName: 'some-display-name',
1599
+ description: 'some-description',
1600
+ environmentVariables: {
1601
+ 'some-var': 'some-val',
1602
+ },
1603
+ headers: {
1604
+ 'some-header-name': 'some-header-val',
1605
+ },
1606
+ componentVersionRules: {
1607
+ 'unit-test-components/foo': {
1608
+ renderableVersionPattern: '1.0.0',
1609
+ excludedVersions: [],
1610
+ editableVersions: [],
1611
+ },
1612
+ },
1613
+ });
1614
+ });
1615
+ afterAll(async () => {
1616
+ await db.repositories.componentSet.delete({ webPath });
1617
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
1618
+ });
1619
+ it('should return all the component set objects', async () => {
1620
+ const componentSets = await service.getAllComponentSets();
1621
+ expect(componentSets.filter((c) => c.webPath === webPath)).toEqual([
1622
+ {
1623
+ webPath: webPath,
1624
+ displayName: 'some-display-name',
1625
+ description: 'some-description',
1626
+ environmentVariables: {
1627
+ 'some-var': 'some-val',
1628
+ },
1629
+ headers: {
1630
+ 'some-header-name': 'some-header-val',
1631
+ },
1632
+ components: {
1633
+ 'unit-test-components/foo': [
1634
+ {
1635
+ version: '1.0.0',
1636
+ environmentVariables: {},
1637
+ description: 'some-description',
1638
+ displayName: 'some-display-name',
1639
+ icon: undefined,
1640
+ editable: false,
1641
+ },
1642
+ ],
1643
+ },
1644
+ componentVersionRules: {
1645
+ 'unit-test-components/foo': {
1646
+ renderableVersionPattern: '1.0.0',
1647
+ excludedVersions: [],
1648
+ editableVersions: [],
1649
+ },
1650
+ },
1651
+ },
1652
+ ]);
1653
+ });
1654
+ });
1655
+ describe('componentVersionInSet', () => {
1656
+ let componentVersionSet;
1657
+ let manifest100;
1658
+ let manifest110;
1659
+ beforeAll(async () => {
1660
+ manifest100 = await manifestService.loadManifest('unit-test-components', 'test-component', '1.0.0');
1661
+ manifest110 = await manifestService.loadManifest('unit-test-components', 'test-component', '1.1.0');
1662
+ componentVersionSet = await service.addComponentSet({
1663
+ webPath: (0, crypto_1.randomUUID)(),
1664
+ displayName: 'some-display-name',
1665
+ description: 'some-description',
1666
+ environmentVariables: {},
1667
+ headers: {},
1668
+ componentVersionRules: {
1669
+ 'unit-test-components/test-component': {
1670
+ renderableVersionPattern: '1.0.0',
1671
+ excludedVersions: [],
1672
+ editableVersions: [],
1673
+ },
1674
+ },
1675
+ });
1676
+ });
1677
+ afterAll(async () => {
1678
+ await service.deleteComponentSet(componentVersionSet.webPath);
1679
+ });
1680
+ it('should check if component version exists in the set', async () => {
1681
+ const resultTrue = await service.componentVersionInSet(manifest100, componentVersionSet.webPath);
1682
+ expect(resultTrue).toEqual(true);
1683
+ const resultFalse = await service.componentVersionInSet(manifest110, componentVersionSet.webPath);
1684
+ expect(resultFalse).toEqual(false);
1685
+ });
1686
+ });
1687
+ describe('getComponentsRuntimeSetData', () => {
1688
+ const webPath = (0, crypto_1.randomUUID)();
1689
+ const componentName = 'test-environment-variables';
1690
+ const componentRoot = path_1.default.resolve(path_1.default.join(__dirname, '..', '..', '..', '..', '..', '..', 'test-components'));
1691
+ const manifestService = new manifest_1.ManifestServiceForProduction(componentRoot, logger);
1692
+ let testEnvVar100;
1693
+ let testEnvVar102;
1694
+ let testSet;
1695
+ beforeAll(async () => {
1696
+ testEnvVar100 = await manifestService.loadManifest('unit-test-components', 'test-environment-variables', '1.0.0');
1697
+ testEnvVar102 = await manifestService.loadManifest('unit-test-components', 'test-environment-variables', '1.0.2');
1698
+ testSet = await service.addComponentSet({
1699
+ webPath: webPath,
1700
+ displayName: 'some-display-name',
1701
+ description: 'some-description',
1702
+ environmentVariables: {
1703
+ TEST_VARIABLE: 'value',
1704
+ ADDITIONAL_VAR: '123',
1705
+ },
1706
+ headers: {},
1707
+ components: {},
1708
+ componentVersionRules: {},
1709
+ });
1710
+ });
1711
+ afterAll(async () => {
1712
+ await service.deleteComponentSet(testSet.webPath);
1713
+ });
1714
+ it('should return run time component set with component environment variable thats been overridden', async () => {
1715
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1716
+ const update = {
1717
+ displayName: 'some-display-name',
1718
+ description: 'some-description',
1719
+ environmentVariables: {
1720
+ TEST_VARIABLE: 'some-default-val',
1721
+ },
1722
+ headers: {},
1723
+ components: {
1724
+ [`${namespace}/${componentName}`]: [
1725
+ {
1726
+ version: '1.0.0',
1727
+ environmentVariables: {
1728
+ TEST_VARIABLE: '1.0.0 value',
1729
+ },
1730
+ },
1731
+ ],
1732
+ },
1733
+ componentVersionRules: {
1734
+ [`${namespace}/${componentName}`]: {
1735
+ renderableVersionPattern: '1.0.0',
1736
+ excludedVersions: [],
1737
+ editableVersions: [],
1738
+ },
1739
+ },
1740
+ };
1741
+ await service.updateComponentSet(testSet.webPath, update);
1742
+ const nextSet = await service.getComponentSet(testSet.webPath);
1743
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1744
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1745
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1746
+ expect(compRuntimeSetData.environment).toEqual({ TEST_VARIABLE: '1.0.0 value' });
1747
+ });
1748
+ it('should return render runtime set with requested variable', async () => {
1749
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1750
+ const update = {
1751
+ displayName: 'some-display-name',
1752
+ description: 'some-description',
1753
+ environmentVariables: {
1754
+ TEST_VARIABLE: 'some-default-val',
1755
+ },
1756
+ headers: {
1757
+ 'some-header-name': 'some-header-val',
1758
+ },
1759
+ components: {
1760
+ [`${namespace}/${componentName}`]: [
1761
+ {
1762
+ version: '1.0.0',
1763
+ environmentVariables: {},
1764
+ },
1765
+ ],
1766
+ },
1767
+ componentVersionRules: {
1768
+ [`${namespace}/${componentName}`]: {
1769
+ renderableVersionPattern: '1.0.0',
1770
+ excludedVersions: [],
1771
+ editableVersions: [],
1772
+ },
1773
+ },
1774
+ };
1775
+ await service.updateComponentSet(testSet.webPath, update);
1776
+ const nextSet = await service.getComponentSet(testSet.webPath);
1777
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1778
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1779
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1780
+ expect(compRuntimeSetData.environment).toEqual({ TEST_VARIABLE: 'some-default-val' });
1781
+ });
1782
+ it('should return render runtime set with only component requested variables', async () => {
1783
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1784
+ const update = {
1785
+ displayName: 'some-display-name',
1786
+ description: 'some-description',
1787
+ environmentVariables: {
1788
+ TEST_VARIABLE: 'some value',
1789
+ 'some-var1': 'some value1',
1790
+ 'some-var2': 'some value2',
1791
+ 'some-var3': 'some value3',
1792
+ },
1793
+ headers: {
1794
+ 'some-header-name': 'some-header-val',
1795
+ },
1796
+ components: {
1797
+ [`${namespace}/${componentName}`]: [
1798
+ {
1799
+ version: '1.0.0',
1800
+ environmentVariables: {},
1801
+ },
1802
+ ],
1803
+ },
1804
+ componentVersionRules: {
1805
+ [`${namespace}/${componentName}`]: {
1806
+ renderableVersionPattern: '1.0.0',
1807
+ excludedVersions: [],
1808
+ editableVersions: [],
1809
+ },
1810
+ },
1811
+ };
1812
+ await service.updateComponentSet(testSet.webPath, update);
1813
+ const nextSet = await service.getComponentSet(testSet.webPath);
1814
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1815
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1816
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1817
+ expect(compRuntimeSetData.environment).toEqual({
1818
+ TEST_VARIABLE: 'some value',
1819
+ });
1820
+ });
1821
+ it('should return nothing if no env vars requested', async () => {
1822
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.1');
1823
+ const update = {
1824
+ displayName: 'some-display-name',
1825
+ description: 'some-description',
1826
+ environmentVariables: {
1827
+ TEST_VARIABLE: 'some value',
1828
+ 'some-var1': 'some value1',
1829
+ 'some-var2': 'some value2',
1830
+ 'some-var3': 'some value3',
1831
+ },
1832
+ headers: {
1833
+ 'some-header-name': 'some-header-val',
1834
+ },
1835
+ components: {
1836
+ [`${namespace}/${componentName}`]: [
1837
+ {
1838
+ version: '1.0.1',
1839
+ environmentVariables: {},
1840
+ },
1841
+ ],
1842
+ },
1843
+ componentVersionRules: {
1844
+ [`${namespace}/${componentName}`]: {
1845
+ renderableVersionPattern: '1.0.1',
1846
+ excludedVersions: [],
1847
+ editableVersions: [],
1848
+ },
1849
+ },
1850
+ };
1851
+ await service.updateComponentSet(testSet.webPath, update);
1852
+ const nextSet = await service.getComponentSet(testSet.webPath);
1853
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1854
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1855
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1856
+ expect(compRuntimeSetData.environment).toEqual({});
1857
+ });
1858
+ it('should allow multiple components to have different values for same env var', async () => {
1859
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1860
+ const manifest2 = await manifestService.loadManifest(namespace, componentName, '1.0.2');
1861
+ const update = {
1862
+ displayName: 'some-display-name',
1863
+ description: 'some-description',
1864
+ environmentVariables: {
1865
+ TEST_VARIABLE: 'some value',
1866
+ 'some-var1': 'some value1',
1867
+ },
1868
+ headers: {
1869
+ 'some-header-name': 'some-header-val',
1870
+ },
1871
+ components: {
1872
+ [`${namespace}/${componentName}`]: [
1873
+ {
1874
+ version: '1.0.0',
1875
+ environmentVariables: { TEST_VARIABLE: '1.0.0' },
1876
+ },
1877
+ {
1878
+ version: '1.0.2',
1879
+ environmentVariables: { TEST_VARIABLE: '1.0.2' },
1880
+ },
1881
+ ],
1882
+ },
1883
+ componentVersionRules: {
1884
+ [`${namespace}/${componentName}`]: {
1885
+ renderableVersionPattern: '1.0.0 || 1.0.2',
1886
+ excludedVersions: [],
1887
+ editableVersions: [],
1888
+ },
1889
+ },
1890
+ };
1891
+ await service.updateComponentSet(testSet.webPath, update);
1892
+ const nextSet = await service.getComponentSet(testSet.webPath);
1893
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1894
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1895
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1896
+ expect(compRuntimeSetData.environment).toEqual({ TEST_VARIABLE: '1.0.0' });
1897
+ const compRuntimeSetData2 = await service.getComponentsRuntimeSetData(manifest2, nextSet);
1898
+ expect(compRuntimeSetData2.displayName).toEqual('some-display-name');
1899
+ expect(compRuntimeSetData2.webPath).toEqual(testSet.webPath);
1900
+ expect(compRuntimeSetData2.environment).toEqual({ TEST_VARIABLE: '1.0.2' });
1901
+ });
1902
+ it('should throw an error if env var is not available', async () => {
1903
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1904
+ const update = {
1905
+ displayName: 'some-display-name',
1906
+ description: 'some-description',
1907
+ environmentVariables: {},
1908
+ headers: {
1909
+ 'some-header-name': 'some-header-val',
1910
+ },
1911
+ components: {
1912
+ [`${namespace}/${componentName}`]: [
1913
+ {
1914
+ version: '1.0.0',
1915
+ environmentVariables: {},
1916
+ },
1917
+ {
1918
+ version: '1.0.2',
1919
+ environmentVariables: {},
1920
+ },
1921
+ ],
1922
+ },
1923
+ componentVersionRules: {
1924
+ [`${namespace}/${componentName}`]: {
1925
+ renderableVersionPattern: '1.0.0 || 1.0.2',
1926
+ excludedVersions: [],
1927
+ editableVersions: [],
1928
+ },
1929
+ },
1930
+ };
1931
+ await service.updateComponentSet(testSet.webPath, update);
1932
+ const nextSet = await service.getComponentSet(testSet.webPath);
1933
+ await expect(service.getComponentsRuntimeSetData(manifest, nextSet)).rejects.toThrowError(new Error('Missing required environment variables: "TEST_VARIABLE"'));
1934
+ });
1935
+ it('should throw an error if only override is provided', async () => {
1936
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.0');
1937
+ const update = {
1938
+ displayName: 'some-display-name',
1939
+ description: 'some-description',
1940
+ environmentVariables: { TEST_VARIABLE: 'value' },
1941
+ headers: {
1942
+ 'some-header-name': 'some-header-val',
1943
+ },
1944
+ components: {
1945
+ [`${namespace}/${componentName}`]: [
1946
+ {
1947
+ version: '1.0.0',
1948
+ environmentVariables: { TEST_VARIABLE: 'value' },
1949
+ },
1950
+ ],
1951
+ },
1952
+ componentVersionRules: {
1953
+ [`${namespace}/${componentName}`]: {
1954
+ renderableVersionPattern: '1.0.0',
1955
+ excludedVersions: [],
1956
+ editableVersions: [],
1957
+ },
1958
+ },
1959
+ };
1960
+ await service.updateComponentSet(testSet.webPath, update);
1961
+ const nextSet = await service.getComponentSet(testSet.webPath);
1962
+ nextSet.environmentVariables = {};
1963
+ await expect(service.getComponentsRuntimeSetData(manifest, nextSet)).rejects.toThrowError(new Error('Missing required environment variables: "TEST_VARIABLE"'));
1964
+ });
1965
+ it('should not throw an error for missing env vars if env vars are defined as non-mandatory', async () => {
1966
+ // this component manifest defines a non-mandatory env var
1967
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.3');
1968
+ const update = {
1969
+ displayName: 'some-display-name',
1970
+ description: 'some-description',
1971
+ environmentVariables: {},
1972
+ headers: {
1973
+ 'some-header-name': 'some-header-val',
1974
+ },
1975
+ components: {
1976
+ [`${namespace}/${componentName}`]: [
1977
+ {
1978
+ version: '1.0.3',
1979
+ environmentVariables: {},
1980
+ },
1981
+ ],
1982
+ },
1983
+ componentVersionRules: {
1984
+ [`${namespace}/${componentName}`]: {
1985
+ renderableVersionPattern: '1.0.3',
1986
+ excludedVersions: [],
1987
+ editableVersions: [],
1988
+ },
1989
+ },
1990
+ };
1991
+ await service.updateComponentSet(testSet.webPath, update);
1992
+ const nextSet = await service.getComponentSet(testSet.webPath);
1993
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
1994
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
1995
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
1996
+ expect(compRuntimeSetData.environment).toEqual({});
1997
+ });
1998
+ it('should throw error for all missing mandatory env vars', async () => {
1999
+ // manifest defines M_VAR and M_VAR2 as mandatory vars and NM_VAR as non-mandatory
2000
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.4');
2001
+ const update = {
2002
+ displayName: 'some-display-name',
2003
+ description: 'some-description',
2004
+ environmentVariables: {},
2005
+ headers: {
2006
+ 'some-header-name': 'some-header-val',
2007
+ },
2008
+ components: {
2009
+ [`${namespace}/${componentName}`]: [
2010
+ {
2011
+ version: '1.0.4',
2012
+ },
2013
+ ],
2014
+ },
2015
+ componentVersionRules: {
2016
+ [`${namespace}/${componentName}`]: {
2017
+ renderableVersionPattern: '1.0.4',
2018
+ excludedVersions: [],
2019
+ editableVersions: [],
2020
+ },
2021
+ },
2022
+ };
2023
+ await service.updateComponentSet(testSet.webPath, update);
2024
+ const nextSet = await service.getComponentSet(testSet.webPath);
2025
+ await expect(service.getComponentsRuntimeSetData(manifest, nextSet)).rejects.toThrowError(new Error('Missing required environment variables: "M_VAR","M_VAR2"'));
2026
+ });
2027
+ it('should have runtime set return all defined env vars in the manifest that are provided', async () => {
2028
+ // manifest defines M_VAR and M_VAR2 as mandatory vars and NM_VAR as non-mandatory
2029
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.4');
2030
+ const update = {
2031
+ displayName: 'some-display-name',
2032
+ description: 'some-description',
2033
+ environmentVariables: {
2034
+ M_VAR: 'm-var-val',
2035
+ M_VAR2: 'm-var2-val',
2036
+ NM_VAR: 'nm-var-val',
2037
+ },
2038
+ headers: {
2039
+ 'some-header-name': 'some-header-val',
2040
+ },
2041
+ components: {
2042
+ [`${namespace}/${componentName}`]: [
2043
+ {
2044
+ version: '1.0.4',
2045
+ },
2046
+ ],
2047
+ },
2048
+ componentVersionRules: {
2049
+ [`${namespace}/${componentName}`]: {
2050
+ renderableVersionPattern: '1.0.4',
2051
+ excludedVersions: [],
2052
+ editableVersions: [],
2053
+ },
2054
+ },
2055
+ };
2056
+ await service.updateComponentSet(testSet.webPath, update);
2057
+ const nextSet = await service.getComponentSet(testSet.webPath);
2058
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
2059
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
2060
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
2061
+ expect(compRuntimeSetData.environment).toEqual({
2062
+ M_VAR: 'm-var-val',
2063
+ M_VAR2: 'm-var2-val',
2064
+ NM_VAR: 'nm-var-val',
2065
+ });
2066
+ });
2067
+ it('should have runtime set not return non-mandatory env vars that are not provided', async () => {
2068
+ // manifest defines M_VAR and M_VAR2 as mandatory vars and NM_VAR as non-mandatory
2069
+ const manifest = await manifestService.loadManifest(namespace, componentName, '1.0.4');
2070
+ const update = {
2071
+ displayName: 'some-display-name',
2072
+ description: 'some-description',
2073
+ environmentVariables: {
2074
+ M_VAR: 'm-var-val',
2075
+ M_VAR2: 'm-var2-val',
2076
+ },
2077
+ headers: {
2078
+ 'some-header-name': 'some-header-val',
2079
+ },
2080
+ components: {
2081
+ [`${namespace}/${componentName}`]: [
2082
+ {
2083
+ version: '1.0.4',
2084
+ },
2085
+ ],
2086
+ },
2087
+ componentVersionRules: {
2088
+ [`${namespace}/${componentName}`]: {
2089
+ renderableVersionPattern: '1.0.4',
2090
+ excludedVersions: [],
2091
+ editableVersions: [],
2092
+ },
2093
+ },
2094
+ };
2095
+ await service.updateComponentSet(testSet.webPath, update);
2096
+ const nextSet = await service.getComponentSet(testSet.webPath);
2097
+ const compRuntimeSetData = await service.getComponentsRuntimeSetData(manifest, nextSet);
2098
+ expect(compRuntimeSetData.displayName).toEqual('some-display-name');
2099
+ expect(compRuntimeSetData.webPath).toEqual(testSet.webPath);
2100
+ expect(compRuntimeSetData.environment).toEqual({
2101
+ M_VAR: 'm-var-val',
2102
+ M_VAR2: 'm-var2-val',
2103
+ });
2104
+ });
2105
+ describe('getComponentsRuntimeSetData environment variables', () => {
2106
+ let set;
2107
+ let testComponent100;
2108
+ beforeAll(async () => {
2109
+ testComponent100 = await manifestService.loadManifest('unit-test-components', 'test-component', '1.0.0');
2110
+ const setWebModel = await service.addComponentSet({
2111
+ webPath: (0, crypto_1.randomUUID)(),
2112
+ displayName: 'some-display-name',
2113
+ description: 'some-description',
2114
+ environmentVariables: {
2115
+ TEST_VARIABLE: 'value',
2116
+ ADDITIONAL_VAR: '123',
2117
+ },
2118
+ headers: {},
2119
+ components: {
2120
+ 'unit-test-components/test-environment-variables': [
2121
+ {
2122
+ version: '1.0.0',
2123
+ environmentVariables: { TEST_VARIABLE: 'test-component-override-1.0.1' },
2124
+ },
2125
+ {
2126
+ version: '1.0.2',
2127
+ environmentVariables: { TEST_VARIABLE: 'test-component-override-1.0.2' },
2128
+ },
2129
+ ],
2130
+ 'unit-test-components/test-component': [
2131
+ {
2132
+ version: '1.0.0',
2133
+ environmentVariables: {},
2134
+ },
2135
+ ],
2136
+ },
2137
+ componentVersionRules: {
2138
+ 'unit-test-components/test-environment-variables': {
2139
+ renderableVersionPattern: '1.0.0 || 1.0.2',
2140
+ excludedVersions: [],
2141
+ editableVersions: [],
2142
+ },
2143
+ 'unit-test-components/test-component': {
2144
+ renderableVersionPattern: '1.0.0',
2145
+ excludedVersions: [],
2146
+ editableVersions: [],
2147
+ },
2148
+ },
2149
+ });
2150
+ set = await service.getComponentSet(setWebModel.webPath);
2151
+ });
2152
+ afterAll(async () => {
2153
+ await service.deleteComponentSet(set.webPath);
2154
+ });
2155
+ it('should not return any environment variables if none are requested by component', async () => {
2156
+ const runtimeSetData = await service.getComponentsRuntimeSetData(testComponent100, set);
2157
+ expect(runtimeSetData).toEqual({
2158
+ displayName: 'some-display-name',
2159
+ webPath: set.webPath,
2160
+ environment: {},
2161
+ });
2162
+ });
2163
+ it('should not return any environment variables if none are requested by component even if value overridden for component', async () => {
2164
+ const update = {
2165
+ displayName: 'some-display-name',
2166
+ description: 'some-description',
2167
+ environmentVariables: {
2168
+ TEST_VARIABLE: 'value',
2169
+ ADDITIONAL_VAR: '123',
2170
+ },
2171
+ headers: {},
2172
+ components: {
2173
+ 'unit-test-components/test-component': [
2174
+ {
2175
+ version: '1.0.0',
2176
+ environmentVariables: { ADDITIONAL_VAR: 'a value' },
2177
+ },
2178
+ ],
2179
+ },
2180
+ componentVersionRules: {
2181
+ 'unit-test-components/test-component': {
2182
+ renderableVersionPattern: '1.0.0',
2183
+ excludedVersions: [],
2184
+ editableVersions: [],
2185
+ },
2186
+ },
2187
+ };
2188
+ await service.updateComponentSet(set.webPath, update);
2189
+ const runtimeSet = await service.getComponentSet(set.webPath);
2190
+ const runtimeSetData = await service.getComponentsRuntimeSetData(testComponent100, runtimeSet);
2191
+ expect(runtimeSetData).toEqual({
2192
+ displayName: 'some-display-name',
2193
+ webPath: set.webPath,
2194
+ environment: {},
2195
+ });
2196
+ });
2197
+ it('should allow components to have individual environment variable value overrides', async () => {
2198
+ const update = {
2199
+ displayName: 'some-display-name',
2200
+ description: 'some-description',
2201
+ environmentVariables: {
2202
+ TEST_VARIABLE: 'value',
2203
+ ADDITIONAL_VAR: '123',
2204
+ },
2205
+ headers: {},
2206
+ components: {
2207
+ 'unit-test-components/test-environment-variables': [
2208
+ {
2209
+ version: '1.0.0',
2210
+ environmentVariables: { TEST_VARIABLE: 'test-component-override-1.0.1' },
2211
+ },
2212
+ {
2213
+ version: '1.0.2',
2214
+ environmentVariables: { TEST_VARIABLE: 'test-component-override-1.0.2' },
2215
+ },
2216
+ ],
2217
+ 'unit-test-components/test-component': [
2218
+ {
2219
+ version: '1.0.0',
2220
+ environmentVariables: {},
2221
+ },
2222
+ ],
2223
+ },
2224
+ componentVersionRules: {
2225
+ 'unit-test-components/test-environment-variables': {
2226
+ renderableVersionPattern: '1.0.0 || 1.0.2',
2227
+ excludedVersions: [],
2228
+ editableVersions: [],
2229
+ },
2230
+ 'unit-test-components/test-component': {
2231
+ renderableVersionPattern: '1.0.0',
2232
+ excludedVersions: [],
2233
+ editableVersions: [],
2234
+ },
2235
+ },
2236
+ };
2237
+ await service.updateComponentSet(set.webPath, update);
2238
+ const runtimeSet = await service.getComponentSet(set.webPath);
2239
+ let runtimeSetData = await service.getComponentsRuntimeSetData(testEnvVar100, runtimeSet);
2240
+ expect(runtimeSetData).toEqual({
2241
+ displayName: 'some-display-name',
2242
+ webPath: set.webPath,
2243
+ environment: { TEST_VARIABLE: 'test-component-override-1.0.1' },
2244
+ });
2245
+ runtimeSetData = await service.getComponentsRuntimeSetData(testEnvVar102, set);
2246
+ expect(runtimeSetData).toEqual({
2247
+ displayName: 'some-display-name',
2248
+ webPath: set.webPath,
2249
+ environment: { TEST_VARIABLE: 'test-component-override-1.0.2' },
2250
+ });
2251
+ });
2252
+ it('should use toplevel envvars is no override', async () => {
2253
+ const update = {
2254
+ displayName: 'some-display-name',
2255
+ description: 'some-description',
2256
+ environmentVariables: {
2257
+ TEST_VARIABLE: 'value',
2258
+ ADDITIONAL_VAR: '123',
2259
+ },
2260
+ headers: {},
2261
+ components: {
2262
+ 'unit-test-components/test-environment-variables': [
2263
+ {
2264
+ version: '1.0.0',
2265
+ environmentVariables: {},
2266
+ },
2267
+ ],
2268
+ },
2269
+ componentVersionRules: {
2270
+ 'unit-test-components/test-environment-variables': {
2271
+ renderableVersionPattern: '1.0.0',
2272
+ excludedVersions: [],
2273
+ editableVersions: [],
2274
+ },
2275
+ },
2276
+ };
2277
+ await service.updateComponentSet(set.webPath, update);
2278
+ const runtimeSetData = await service.getComponentsRuntimeSetData(testEnvVar100, set);
2279
+ expect(runtimeSetData).toEqual({
2280
+ displayName: 'some-display-name',
2281
+ webPath: set.webPath,
2282
+ environment: { TEST_VARIABLE: 'value' },
2283
+ });
2284
+ });
2285
+ });
2286
+ });
2287
+ describe('deleteComponentSet', () => {
2288
+ const webPath = 'set-web-path';
2289
+ beforeAll(async () => {
2290
+ await service.addComponentSet({
2291
+ webPath: webPath,
2292
+ displayName: 'some-display-name',
2293
+ description: 'some-description',
2294
+ environmentVariables: {
2295
+ 'some-var': 'some-val',
2296
+ },
2297
+ headers: {
2298
+ 'some-header-name': 'some-header-val',
2299
+ },
2300
+ components: {
2301
+ [`${namespace}/foo`]: [
2302
+ {
2303
+ version: '1.0.0',
2304
+ environmentVariables: {},
2305
+ },
2306
+ {
2307
+ version: '2.0.0',
2308
+ environmentVariables: {},
2309
+ },
2310
+ ],
2311
+ },
2312
+ componentVersionRules: {
2313
+ [`${namespace}/foo`]: {
2314
+ renderableVersionPattern: '1.0.0 || 2.0.0',
2315
+ excludedVersions: [],
2316
+ editableVersions: [],
2317
+ },
2318
+ },
2319
+ });
2320
+ });
2321
+ afterAll(async () => {
2322
+ await db.repositories.componentSet.delete({ webPath });
2323
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
2324
+ });
2325
+ it('should delete the existing component set in all of the relevant tables', async () => {
2326
+ const result = await service.deleteComponentSet(webPath);
2327
+ expect(result).toEqual(1);
2328
+ const csResult = await db.repositories.componentSet.getComponentSetByWebPath(webPath);
2329
+ expect(csResult).toEqual(undefined);
2330
+ const cscvResult = await db.repositories.componentSetComponentVersion.find({ componentSetWebPath: webPath });
2331
+ expect(cscvResult).toHaveLength(0);
2332
+ expect(mockInfo).toHaveBeenCalledWith(`Component set deleted: set-web-path.`, undefined, undefined, 'componentSetId:set-web-path');
2333
+ expect(mockFlush).toHaveBeenCalled();
2334
+ }, 15000);
2335
+ it('should throw error if component set web path does not exist', async () => {
2336
+ await expect(service.deleteComponentSet('idontexist')).rejects.toThrowErrorMatchingInlineSnapshot('"Component set with web path idontexist does not exist"');
2337
+ }, 15000);
2338
+ });
2339
+ describe('getPaginatedComponentSets', () => {
2340
+ beforeAll(async () => {
2341
+ const allComponents = await service.getAllComponentSets();
2342
+ for (const cSet of allComponents) {
2343
+ await db.repositories.componentSet.delete({ webPath: cSet.webPath });
2344
+ }
2345
+ await service.addComponentSet({
2346
+ webPath: 'wp-1',
2347
+ displayName: 'some-display-name',
2348
+ description: 'some-description',
2349
+ environmentVariables: {},
2350
+ headers: {},
2351
+ components: {},
2352
+ });
2353
+ await service.addComponentSet({
2354
+ webPath: 'wp-2',
2355
+ displayName: 'some-display-name',
2356
+ description: 'some-description',
2357
+ environmentVariables: {},
2358
+ headers: {},
2359
+ components: {},
2360
+ });
2361
+ });
2362
+ afterAll(async () => {
2363
+ await db.repositories.componentSet.delete({ webPath: 'wp-1' });
2364
+ await db.repositories.componentSet.delete({ webPath: 'wp-2' });
2365
+ });
2366
+ it('should return all the component sets list and page info', async () => {
2367
+ const componentSets = await service.getPaginatedComponentSets();
2368
+ expect(componentSets).toEqual({
2369
+ items: [
2370
+ {
2371
+ components: {},
2372
+ description: 'some-description',
2373
+ displayName: 'some-display-name',
2374
+ environmentVariables: {},
2375
+ headers: {},
2376
+ webPath: 'wp-1',
2377
+ componentVersionRules: {},
2378
+ },
2379
+ {
2380
+ components: {},
2381
+ description: 'some-description',
2382
+ displayName: 'some-display-name',
2383
+ environmentVariables: {},
2384
+ headers: {},
2385
+ webPath: 'wp-2',
2386
+ componentVersionRules: {},
2387
+ },
2388
+ ],
2389
+ pageInfo: {
2390
+ current: 1,
2391
+ next: null,
2392
+ pageSize: 20,
2393
+ previous: null,
2394
+ totalItems: 2,
2395
+ totalPages: 1,
2396
+ },
2397
+ });
2398
+ });
2399
+ it('should return all the component sets list based on given specified sorting options', async () => {
2400
+ const componentSets = await service.getPaginatedComponentSets(1, ['webPath'], 'desc');
2401
+ expect(componentSets).toEqual({
2402
+ items: [
2403
+ {
2404
+ components: {},
2405
+ description: 'some-description',
2406
+ displayName: 'some-display-name',
2407
+ environmentVariables: {},
2408
+ headers: {},
2409
+ webPath: 'wp-2',
2410
+ componentVersionRules: {},
2411
+ },
2412
+ {
2413
+ components: {},
2414
+ description: 'some-description',
2415
+ displayName: 'some-display-name',
2416
+ environmentVariables: {},
2417
+ headers: {},
2418
+ webPath: 'wp-1',
2419
+ componentVersionRules: {},
2420
+ },
2421
+ ],
2422
+ pageInfo: {
2423
+ current: 1,
2424
+ next: null,
2425
+ pageSize: 20,
2426
+ previous: null,
2427
+ totalItems: 2,
2428
+ totalPages: 1,
2429
+ },
2430
+ });
2431
+ });
2432
+ });
2433
+ describe('addToComponentSet - more components with non standard versions', () => {
2434
+ const testWebPaths = ['set-web-path'];
2435
+ let componentTempLocation3 = '';
2436
+ let componentTempLocation4 = '';
2437
+ let componentTempLocation5 = '';
2438
+ let componentTempLocation6 = '';
2439
+ beforeAll(async () => {
2440
+ componentTempLocation3 = fs_1.default.mkdtempSync('test3-');
2441
+ await createComponentAtTempLocation(componentTempLocation3, 'foo', '0.0.11');
2442
+ await componentService.saveComponent(componentTempLocation3);
2443
+ componentTempLocation4 = fs_1.default.mkdtempSync('test4-');
2444
+ await createComponentAtTempLocation(componentTempLocation4, 'foo', '0.0.12');
2445
+ await componentService.saveComponent(componentTempLocation4);
2446
+ componentTempLocation5 = fs_1.default.mkdtempSync('test5-');
2447
+ await createComponentAtTempLocation(componentTempLocation5, 'foo', '10.5.2');
2448
+ await componentService.saveComponent(componentTempLocation5);
2449
+ componentTempLocation6 = fs_1.default.mkdtempSync('test6-');
2450
+ await createComponentAtTempLocation(componentTempLocation6, 'foo', '9.0.1');
2451
+ await componentService.saveComponent(componentTempLocation6);
2452
+ });
2453
+ afterAll(async () => {
2454
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation3)) {
2455
+ fs_extra_1.default.rmSync(componentTempLocation3, { force: true, recursive: true });
2456
+ }
2457
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation4)) {
2458
+ fs_extra_1.default.rmSync(componentTempLocation4, { force: true, recursive: true });
2459
+ }
2460
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation5)) {
2461
+ fs_extra_1.default.rmSync(componentTempLocation5, { force: true, recursive: true });
2462
+ }
2463
+ if (fs_extra_1.default.pathExistsSync(componentTempLocation6)) {
2464
+ fs_extra_1.default.rmSync(componentTempLocation6, { force: true, recursive: true });
2465
+ }
2466
+ for (const webPath of testWebPaths) {
2467
+ await db.repositories.componentSet.delete({ webPath });
2468
+ await db.repositories.componentSetComponentVersion.delete({ componentSetWebPath: webPath });
2469
+ }
2470
+ });
2471
+ it('should have only the highest semver version as editable true when the editable rule is latest and there is a higher number of components with non uniform versions', async () => {
2472
+ const webPath = 'set-web-path-3';
2473
+ testWebPaths.push('set-web-path-3');
2474
+ const componentSet = await service.addComponentSet({
2475
+ webPath: webPath,
2476
+ displayName: 'some-display-name',
2477
+ description: 'some-description',
2478
+ environmentVariables: {
2479
+ 'some-var': 'some-val',
2480
+ },
2481
+ headers: {
2482
+ 'some-header-name': 'some-header-val',
2483
+ },
2484
+ componentVersionRules: {
2485
+ 'unit-test-components/foo': {
2486
+ renderableVersionPattern: '*',
2487
+ excludedVersions: ['0.0.11'],
2488
+ editableVersions: 'latest',
2489
+ },
2490
+ },
2491
+ });
2492
+ expect(componentSet).toMatchInlineSnapshot(`
2493
+ {
2494
+ "componentVersionRules": {
2495
+ "unit-test-components/foo": {
2496
+ "editableVersions": [
2497
+ "latest",
2498
+ ],
2499
+ "excludedVersions": [
2500
+ "0.0.11",
2501
+ ],
2502
+ "renderableVersionPattern": "*",
2503
+ },
2504
+ },
2505
+ "components": {
2506
+ "unit-test-components/foo": [
2507
+ {
2508
+ "description": "some-description",
2509
+ "displayName": "some-display-name",
2510
+ "editable": false,
2511
+ "environmentVariables": {},
2512
+ "icon": undefined,
2513
+ "version": "9.0.1",
2514
+ },
2515
+ {
2516
+ "description": "some-description",
2517
+ "displayName": "some-display-name",
2518
+ "editable": false,
2519
+ "environmentVariables": {},
2520
+ "icon": undefined,
2521
+ "version": "2.0.0",
2522
+ },
2523
+ {
2524
+ "description": "some-description",
2525
+ "displayName": "some-display-name",
2526
+ "editable": true,
2527
+ "environmentVariables": {},
2528
+ "icon": undefined,
2529
+ "version": "10.5.2",
2530
+ },
2531
+ {
2532
+ "description": "some-description",
2533
+ "displayName": "some-display-name",
2534
+ "editable": false,
2535
+ "environmentVariables": {},
2536
+ "icon": undefined,
2537
+ "version": "1.0.0",
2538
+ },
2539
+ {
2540
+ "description": "some-description",
2541
+ "displayName": "some-display-name",
2542
+ "editable": false,
2543
+ "environmentVariables": {},
2544
+ "icon": undefined,
2545
+ "version": "0.0.12",
2546
+ },
2547
+ ],
2548
+ },
2549
+ "description": "some-description",
2550
+ "displayName": "some-display-name",
2551
+ "environmentVariables": {
2552
+ "some-var": "some-val",
2553
+ },
2554
+ "headers": {
2555
+ "some-header-name": "some-header-val",
2556
+ },
2557
+ "webPath": "set-web-path-3",
2558
+ }
2559
+ `);
2560
+ expect(mockInfo).toHaveBeenCalledWith(`Component set added: set-web-path-3.`, undefined, undefined, 'componentSetId:set-web-path-3');
2561
+ expect(mockFlush).toHaveBeenCalled();
2562
+ }, 15000);
2563
+ });
2564
+ });
2565
+ //# sourceMappingURL=ComponentSetServiceForProduction.integration.spec.js.map