@rockcarver/frodo-lib 0.16.2-8 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/CHANGELOG.md +221 -1
  2. package/cjs/api/AgentApi.js +14 -61
  3. package/cjs/api/AgentApi.js.map +1 -1
  4. package/cjs/api/AgentApi.test.js.map +1 -1
  5. package/cjs/api/ApiTypes.js +0 -5
  6. package/cjs/api/ApiTypes.js.map +1 -1
  7. package/cjs/api/AuthenticateApi.js +9 -20
  8. package/cjs/api/AuthenticateApi.js.map +1 -1
  9. package/cjs/api/AuthenticateApi.test.js.map +1 -0
  10. package/cjs/api/BaseApi.js +82 -124
  11. package/cjs/api/BaseApi.js.map +1 -1
  12. package/cjs/api/CirclesOfTrustApi.js +8 -32
  13. package/cjs/api/CirclesOfTrustApi.js.map +1 -1
  14. package/cjs/api/IdmConfigApi.js +9 -34
  15. package/cjs/api/IdmConfigApi.js.map +1 -1
  16. package/cjs/api/LogApi.js +8 -31
  17. package/cjs/api/LogApi.js.map +1 -1
  18. package/cjs/api/ManagedObjectApi.js +34 -31
  19. package/cjs/api/ManagedObjectApi.js.map +1 -1
  20. package/cjs/api/NodeApi.js +10 -41
  21. package/cjs/api/NodeApi.js.map +1 -1
  22. package/cjs/api/NodeApi.test.js.map +1 -1
  23. package/cjs/api/OAuth2ClientApi.js +7 -26
  24. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  25. package/cjs/api/OAuth2OIDCApi.js +28 -34
  26. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  27. package/cjs/api/OAuth2OIDCApi.test.js.map +1 -0
  28. package/cjs/api/OAuth2ProviderApi.js +5 -15
  29. package/cjs/api/OAuth2ProviderApi.js.map +1 -1
  30. package/cjs/api/RealmApi.js +8 -34
  31. package/cjs/api/RealmApi.js.map +1 -1
  32. package/cjs/api/Saml2Api.js +32 -118
  33. package/cjs/api/Saml2Api.js.map +1 -1
  34. package/cjs/api/ScriptApi.js +8 -30
  35. package/cjs/api/ScriptApi.js.map +1 -1
  36. package/cjs/api/SecretsApi.js +14 -64
  37. package/cjs/api/SecretsApi.js.map +1 -1
  38. package/cjs/api/SecretsApi.test.js.map +1 -1
  39. package/cjs/api/ServerInfoApi.js +6 -21
  40. package/cjs/api/ServerInfoApi.js.map +1 -1
  41. package/cjs/api/ServiceApi.js +49 -47
  42. package/cjs/api/ServiceApi.js.map +1 -1
  43. package/cjs/api/SocialIdentityProvidersApi.js +9 -36
  44. package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
  45. package/cjs/api/StartupApi.js +5 -24
  46. package/cjs/api/StartupApi.js.map +1 -1
  47. package/cjs/api/StartupApi.test.js.map +1 -1
  48. package/cjs/api/TreeApi.js +8 -30
  49. package/cjs/api/TreeApi.js.map +1 -1
  50. package/cjs/api/TreeApi.test.js.map +1 -1
  51. package/cjs/api/VariablesApi.js +9 -37
  52. package/cjs/api/VariablesApi.js.map +1 -1
  53. package/cjs/api/VariablesApi.test.js.map +1 -1
  54. package/cjs/api/utils/ApiUtils.js +47 -57
  55. package/cjs/api/utils/ApiUtils.js.map +1 -1
  56. package/cjs/api/utils/ApiUtils.test.js.map +1 -1
  57. package/cjs/api/utils/Base64.js +6 -15
  58. package/cjs/api/utils/Base64.js.map +1 -1
  59. package/cjs/ext/axios-curlirize/curlirize.js +2 -9
  60. package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
  61. package/cjs/ext/axios-curlirize/lib/CurlHelper.js +7 -22
  62. package/cjs/ext/axios-curlirize/lib/CurlHelper.js.map +1 -1
  63. package/cjs/index.js +30 -89
  64. package/cjs/index.js.map +1 -1
  65. package/cjs/ops/AdminOps.js +27 -165
  66. package/cjs/ops/AdminOps.js.map +1 -1
  67. package/cjs/ops/AgentOps.js +3 -160
  68. package/cjs/ops/AgentOps.js.map +1 -1
  69. package/cjs/ops/AgentOps.test.js.map +1 -1
  70. package/cjs/ops/AuthenticateOps.js +265 -226
  71. package/cjs/ops/AuthenticateOps.js.map +1 -1
  72. package/cjs/ops/AuthenticateOps.test.js.map +1 -1
  73. package/cjs/ops/CirclesOfTrustOps.js +13 -91
  74. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  75. package/cjs/ops/ConnectionProfileOps.js +220 -136
  76. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  77. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  78. package/cjs/ops/EmailTemplateOps.js +35 -379
  79. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  80. package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
  81. package/cjs/ops/IdmOps.js +52 -426
  82. package/cjs/ops/IdmOps.js.map +1 -1
  83. package/cjs/ops/IdmOps.test.js.map +1 -1
  84. package/cjs/ops/IdpOps.js +11 -94
  85. package/cjs/ops/IdpOps.js.map +1 -1
  86. package/cjs/ops/IdpOps.test.js.map +1 -1
  87. package/cjs/ops/JoseOps.js +81 -0
  88. package/cjs/ops/JoseOps.js.map +1 -0
  89. package/cjs/ops/JoseOps.test.js.map +1 -0
  90. package/cjs/ops/JourneyOps.js +140 -371
  91. package/cjs/ops/JourneyOps.js.map +1 -1
  92. package/cjs/ops/JourneyOps.test.js.map +1 -1
  93. package/cjs/ops/LogOps.js +14 -47
  94. package/cjs/ops/LogOps.js.map +1 -1
  95. package/cjs/ops/ManagedObjectOps.js +4 -12
  96. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  97. package/cjs/ops/NodeOps.js +9 -67
  98. package/cjs/ops/NodeOps.js.map +1 -1
  99. package/cjs/ops/OAuth2ClientOps.js +10 -40
  100. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  101. package/cjs/ops/OpsTypes.js +0 -5
  102. package/cjs/ops/OpsTypes.js.map +1 -1
  103. package/cjs/ops/OrganizationOps.js +6 -25
  104. package/cjs/ops/OrganizationOps.js.map +1 -1
  105. package/cjs/ops/RealmOps.js +0 -19
  106. package/cjs/ops/RealmOps.js.map +1 -1
  107. package/cjs/ops/Saml2Ops.js +258 -802
  108. package/cjs/ops/Saml2Ops.js.map +1 -1
  109. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  110. package/cjs/ops/ScriptOps.js +28 -73
  111. package/cjs/ops/ScriptOps.js.map +1 -1
  112. package/cjs/ops/SecretsOps.js +2 -58
  113. package/cjs/ops/SecretsOps.js.map +1 -1
  114. package/cjs/ops/ServiceAccountOps.js +61 -0
  115. package/cjs/ops/ServiceAccountOps.js.map +1 -0
  116. package/cjs/ops/ServiceAccountOps.test.js.map +1 -0
  117. package/cjs/ops/ServiceOps.js +55 -101
  118. package/cjs/ops/ServiceOps.js.map +1 -1
  119. package/cjs/ops/StartupOps.js +2 -23
  120. package/cjs/ops/StartupOps.js.map +1 -1
  121. package/cjs/ops/ThemeOps.js +230 -436
  122. package/cjs/ops/ThemeOps.js.map +1 -1
  123. package/cjs/ops/ThemeOps.test.js.map +1 -0
  124. package/cjs/ops/VariablesOps.js +0 -38
  125. package/cjs/ops/VariablesOps.js.map +1 -1
  126. package/cjs/ops/utils/Console.js +29 -62
  127. package/cjs/ops/utils/Console.js.map +1 -1
  128. package/cjs/ops/utils/DataProtection.js +13 -47
  129. package/cjs/ops/utils/DataProtection.js.map +1 -1
  130. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  131. package/cjs/ops/utils/ExportImportUtils.js +36 -74
  132. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  133. package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
  134. package/cjs/ops/utils/OpsUtils.js +27 -43
  135. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  136. package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
  137. package/cjs/ops/utils/ValidationUtils.js +0 -13
  138. package/cjs/ops/utils/ValidationUtils.js.map +1 -1
  139. package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
  140. package/cjs/ops/utils/Version.js +2 -12
  141. package/cjs/ops/utils/Version.js.map +1 -1
  142. package/cjs/ops/utils/Version.test.js.map +1 -1
  143. package/cjs/ops/utils/Wordwrap.js +1 -2
  144. package/cjs/ops/utils/Wordwrap.js.map +1 -1
  145. package/cjs/ops/utils/Wordwrap.test.js.map +1 -0
  146. package/cjs/shared/State.js +239 -0
  147. package/cjs/shared/State.js.map +1 -0
  148. package/cjs/shared/State.test.js.map +1 -0
  149. package/cjs/storage/StaticStorage.js.map +1 -1
  150. package/cjs/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  151. package/cjs/test/mocks/ForgeRockApiMockEngine.js +184 -80
  152. package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
  153. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  154. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  155. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  156. package/cjs/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  157. package/cjs/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  158. package/cjs/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  159. package/cjs/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  160. package/cjs/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  161. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  162. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  163. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  164. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  165. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  166. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  167. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  168. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  169. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  170. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  171. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  172. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  173. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  174. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  175. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  176. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  177. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  178. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  179. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  180. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  181. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  182. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  183. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  184. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  185. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  186. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  187. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  188. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  189. package/cjs/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  190. package/cjs/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  191. package/cjs/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  192. package/cjs/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  193. package/cjs/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  194. package/cjs/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  195. package/cjs/utils/AutoSetupPolly.js +79 -0
  196. package/cjs/utils/AutoSetupPolly.js.map +1 -0
  197. package/cjs/utils/SetupJest.js +6 -0
  198. package/cjs/utils/SetupJest.js.map +1 -0
  199. package/cjs/{test/mocks → utils}/snapshotResolve.js +10 -12
  200. package/cjs/utils/snapshotResolve.js.map +1 -0
  201. package/esm/api/AgentApi.mjs +19 -21
  202. package/esm/api/AgentApi.test.mjs +6 -15
  203. package/esm/api/ApiTypes.mjs +0 -5
  204. package/esm/api/AuthenticateApi.mjs +7 -10
  205. package/esm/api/AuthenticateApi.test.mjs +39 -0
  206. package/esm/api/BaseApi.mjs +96 -81
  207. package/esm/api/CirclesOfTrustApi.mjs +9 -12
  208. package/esm/api/IdmConfigApi.mjs +11 -12
  209. package/esm/api/LogApi.mjs +6 -10
  210. package/esm/api/ManagedObjectApi.mjs +23 -8
  211. package/esm/api/NodeApi.mjs +13 -15
  212. package/esm/api/NodeApi.test.mjs +13 -17
  213. package/esm/api/OAuth2ClientApi.mjs +7 -9
  214. package/esm/api/OAuth2OIDCApi.mjs +15 -9
  215. package/esm/api/OAuth2OIDCApi.test.mjs +53 -0
  216. package/esm/api/OAuth2ProviderApi.mjs +3 -5
  217. package/esm/api/RealmApi.mjs +10 -13
  218. package/esm/api/Saml2Api.mjs +31 -61
  219. package/esm/api/ScriptApi.mjs +9 -11
  220. package/esm/api/SecretsApi.mjs +21 -24
  221. package/esm/api/SecretsApi.test.mjs +9 -31
  222. package/esm/api/ServerInfoApi.mjs +5 -9
  223. package/esm/api/ServiceApi.mjs +53 -26
  224. package/esm/api/SocialIdentityProvidersApi.mjs +11 -13
  225. package/esm/api/StartupApi.mjs +5 -10
  226. package/esm/api/StartupApi.test.mjs +4 -7
  227. package/esm/api/TreeApi.mjs +9 -11
  228. package/esm/api/TreeApi.test.mjs +24 -61
  229. package/esm/api/VariablesApi.mjs +11 -13
  230. package/esm/api/VariablesApi.test.mjs +80 -222
  231. package/esm/api/utils/ApiUtils.mjs +45 -48
  232. package/esm/api/utils/ApiUtils.test.mjs +33 -32
  233. package/esm/api/utils/Base64.mjs +6 -9
  234. package/esm/ext/axios-curlirize/curlirize.mjs +2 -7
  235. package/esm/ext/axios-curlirize/lib/CurlHelper.mjs +7 -20
  236. package/esm/index.mjs +23 -13
  237. package/esm/ops/AdminOps.mjs +33 -119
  238. package/esm/ops/AgentOps.mjs +38 -81
  239. package/esm/ops/AgentOps.test.mjs +5 -45
  240. package/esm/ops/AuthenticateOps.mjs +241 -175
  241. package/esm/ops/AuthenticateOps.test.mjs +7 -9
  242. package/esm/ops/CirclesOfTrustOps.mjs +24 -61
  243. package/esm/ops/ConnectionProfileOps.mjs +192 -82
  244. package/esm/ops/ConnectionProfileOps.test.mjs +19 -19
  245. package/esm/ops/EmailTemplateOps.mjs +18 -276
  246. package/esm/ops/EmailTemplateOps.test.mjs +19 -44
  247. package/esm/ops/IdmOps.mjs +30 -327
  248. package/esm/ops/IdmOps.test.mjs +47 -54
  249. package/esm/ops/IdpOps.mjs +21 -59
  250. package/esm/ops/IdpOps.test.mjs +5 -5
  251. package/esm/ops/JoseOps.mjs +41 -0
  252. package/esm/ops/JoseOps.test.mjs +137 -0
  253. package/esm/ops/JourneyOps.mjs +147 -290
  254. package/esm/ops/JourneyOps.test.mjs +30 -28
  255. package/esm/ops/LogOps.mjs +15 -25
  256. package/esm/ops/ManagedObjectOps.mjs +6 -6
  257. package/esm/ops/NodeOps.mjs +9 -47
  258. package/esm/ops/OAuth2ClientOps.mjs +13 -19
  259. package/esm/ops/OpsTypes.mjs +1 -3
  260. package/esm/ops/OrganizationOps.mjs +7 -14
  261. package/esm/ops/RealmOps.mjs +4 -7
  262. package/esm/ops/Saml2Ops.mjs +199 -587
  263. package/esm/ops/Saml2Ops.test.mjs +303 -84
  264. package/esm/ops/ScriptOps.mjs +31 -47
  265. package/esm/ops/SecretsOps.mjs +15 -31
  266. package/esm/ops/ServiceAccountOps.mjs +41 -0
  267. package/esm/ops/ServiceAccountOps.test.mjs +51 -0
  268. package/esm/ops/ServiceOps.mjs +66 -83
  269. package/esm/ops/StartupOps.mjs +4 -13
  270. package/esm/ops/ThemeOps.mjs +189 -298
  271. package/esm/{api/ThemeApi.test.mjs → ops/ThemeOps.test.mjs} +91 -96
  272. package/esm/ops/VariablesOps.mjs +9 -18
  273. package/esm/ops/utils/Console.mjs +28 -46
  274. package/esm/ops/utils/DataProtection.mjs +15 -28
  275. package/esm/ops/utils/DataProtection.test.mjs +8 -8
  276. package/esm/ops/utils/ExportImportUtils.mjs +34 -43
  277. package/esm/ops/utils/ExportImportUtils.test.mjs +20 -18
  278. package/esm/ops/utils/OpsUtils.mjs +27 -21
  279. package/esm/ops/utils/OpsUtils.test.mjs +155 -27
  280. package/esm/ops/utils/ValidationUtils.mjs +0 -9
  281. package/esm/ops/utils/Version.mjs +2 -3
  282. package/esm/ops/utils/Version.test.mjs +0 -2
  283. package/esm/ops/utils/Wordwrap.mjs +1 -1
  284. package/esm/ops/utils/Wordwrap.test.mjs +19 -0
  285. package/esm/shared/State.mjs +164 -0
  286. package/esm/shared/State.test.mjs +249 -0
  287. package/esm/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  288. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +169 -33
  289. package/esm/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  290. package/esm/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  291. package/esm/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  292. package/esm/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  293. package/esm/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  294. package/esm/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  295. package/esm/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  296. package/esm/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  297. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  298. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  299. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  300. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  301. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  302. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  303. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  304. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  305. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  306. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  307. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  308. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  309. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  310. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  311. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  312. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  313. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  314. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  315. package/esm/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  316. package/esm/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  317. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  318. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  319. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  320. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  321. package/esm/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  322. package/esm/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  323. package/esm/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  324. package/esm/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  325. package/esm/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  326. package/esm/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  327. package/esm/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  328. package/esm/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  329. package/esm/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  330. package/esm/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  331. package/esm/utils/AutoSetupPolly.mjs +72 -0
  332. package/esm/utils/SetupJest.mjs +3 -0
  333. package/esm/{test/mocks → utils}/snapshotResolve.mjs +10 -12
  334. package/package.json +38 -27
  335. package/types/api/AgentApi.d.ts.map +1 -1
  336. package/types/api/ApiTypes.d.ts +19 -15
  337. package/types/api/ApiTypes.d.ts.map +1 -1
  338. package/types/api/AuthenticateApi.d.ts +1 -1
  339. package/types/api/AuthenticateApi.d.ts.map +1 -1
  340. package/types/api/BaseApi.d.ts +2 -0
  341. package/types/api/BaseApi.d.ts.map +1 -1
  342. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  343. package/types/api/IdmConfigApi.d.ts.map +1 -1
  344. package/types/api/LogApi.d.ts.map +1 -1
  345. package/types/api/ManagedObjectApi.d.ts +9 -1
  346. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  347. package/types/api/NodeApi.d.ts.map +1 -1
  348. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  349. package/types/api/OAuth2OIDCApi.d.ts +4 -2
  350. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  351. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  352. package/types/api/RealmApi.d.ts.map +1 -1
  353. package/types/api/Saml2Api.d.ts +7 -13
  354. package/types/api/Saml2Api.d.ts.map +1 -1
  355. package/types/api/ScriptApi.d.ts.map +1 -1
  356. package/types/api/SecretsApi.d.ts.map +1 -1
  357. package/types/api/ServerInfoApi.d.ts.map +1 -1
  358. package/types/api/ServiceApi.d.ts +14 -7
  359. package/types/api/ServiceApi.d.ts.map +1 -1
  360. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  361. package/types/api/StartupApi.d.ts.map +1 -1
  362. package/types/api/TreeApi.d.ts.map +1 -1
  363. package/types/api/VariablesApi.d.ts.map +1 -1
  364. package/types/api/utils/ApiUtils.d.ts +1 -0
  365. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  366. package/types/api/utils/Base64.d.ts +1 -0
  367. package/types/api/utils/Base64.d.ts.map +1 -1
  368. package/types/index.d.ts +11 -5
  369. package/types/index.d.ts.map +1 -1
  370. package/types/ops/AgentOps.d.ts +1 -1
  371. package/types/ops/AgentOps.d.ts.map +1 -1
  372. package/types/ops/AuthenticateOps.d.ts +10 -2
  373. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  374. package/types/ops/ConnectionProfileOps.d.ts +49 -21
  375. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  376. package/types/ops/EmailTemplateOps.d.ts +14 -33
  377. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  378. package/types/ops/IdmOps.d.ts +29 -37
  379. package/types/ops/IdmOps.d.ts.map +1 -1
  380. package/types/ops/JoseOps.d.ts +33 -0
  381. package/types/ops/JoseOps.d.ts.map +1 -0
  382. package/types/ops/JourneyOps.d.ts.map +1 -1
  383. package/types/ops/LogOps.d.ts.map +1 -1
  384. package/types/ops/NodeOps.d.ts.map +1 -1
  385. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  386. package/types/ops/OpsTypes.d.ts +17 -1
  387. package/types/ops/OpsTypes.d.ts.map +1 -1
  388. package/types/ops/OrganizationOps.d.ts.map +1 -1
  389. package/types/ops/Saml2Ops.d.ts +52 -55
  390. package/types/ops/Saml2Ops.d.ts.map +1 -1
  391. package/types/ops/ScriptOps.d.ts.map +1 -1
  392. package/types/ops/ServiceAccountOps.d.ts +20 -0
  393. package/types/ops/ServiceAccountOps.d.ts.map +1 -0
  394. package/types/ops/ServiceOps.d.ts +18 -10
  395. package/types/ops/ServiceOps.d.ts.map +1 -1
  396. package/types/ops/ThemeOps.d.ts +35 -50
  397. package/types/ops/ThemeOps.d.ts.map +1 -1
  398. package/types/ops/utils/Console.d.ts +1 -1
  399. package/types/ops/utils/Console.d.ts.map +1 -1
  400. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  401. package/types/ops/utils/ExportImportUtils.d.ts +5 -2
  402. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  403. package/types/ops/utils/OpsUtils.d.ts +6 -0
  404. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  405. package/types/ops/utils/Wordwrap.d.ts.map +1 -1
  406. package/types/shared/State.d.ts +223 -0
  407. package/types/shared/State.d.ts.map +1 -0
  408. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +21 -1
  409. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
  410. package/types/utils/AutoSetupPolly.d.ts +1 -0
  411. package/types/utils/AutoSetupPolly.d.ts.map +1 -0
  412. package/types/utils/SetupJest.d.ts +1 -0
  413. package/types/utils/SetupJest.d.ts.map +1 -0
  414. package/types/utils/snapshotResolve.d.ts +1 -0
  415. package/types/utils/snapshotResolve.d.ts.map +1 -0
  416. package/cjs/api/EmailTemplateApi.js +0 -73
  417. package/cjs/api/EmailTemplateApi.js.map +0 -1
  418. package/cjs/api/ThemeApi.js +0 -367
  419. package/cjs/api/ThemeApi.js.map +0 -1
  420. package/cjs/api/ThemeApi.test.js.map +0 -1
  421. package/cjs/storage/SessionStorage.js +0 -91
  422. package/cjs/storage/SessionStorage.js.map +0 -1
  423. package/cjs/test/mocks/snapshotResolve.js.map +0 -1
  424. package/esm/api/EmailTemplateApi.mjs +0 -34
  425. package/esm/api/ThemeApi.mjs +0 -271
  426. package/esm/storage/SessionStorage.mjs +0 -79
  427. package/types/api/EmailTemplateApi.d.ts +0 -22
  428. package/types/api/EmailTemplateApi.d.ts.map +0 -1
  429. package/types/api/ThemeApi.d.ts +0 -56
  430. package/types/api/ThemeApi.d.ts.map +0 -1
  431. package/types/storage/SessionStorage.d.ts +0 -71
  432. package/types/storage/SessionStorage.d.ts.map +0 -1
  433. package/types/test/mocks/snapshotResolve.d.ts +0 -1
  434. package/types/test/mocks/snapshotResolve.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionProfileOps.js","names":["dataProtection","DataProtection","fileOptions","indentation","getConnectionProfilesPath","storage","session","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","os","homedir","findConnectionProfile","connectionProfiles","host","profiles","tenant","includes","foundProfile","push","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","table","createTable","Object","keys","forEach","c","username","logApiKey","printMessage","toString","e","message","initConnectionProfiles","folderName","path","dirname","existsSync","mkdirSync","recursive","writeFileSync","stringify","convert","conn","password","encodedPassword","encrypt","getConnectionProfileByHost","length","p","decrypt","key","secret","logApiSecret","authenticationService","authenticationHeaderOverrides","getConnectionProfile","getTenant","saveConnectionProfile","existingData","statSync","getUsername","getPassword","getLogApiKey","getLogApiSecret","getAuthenticationService","getAuthenticationHeaderOverrides","deleteConnectionProfile","stat","err","code","describeConnectionProfile","showSecrets","profile","keyMap","createObjectTable"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport storage from '../storage/SessionStorage';\nimport DataProtection from './utils/DataProtection';\nimport { createObjectTable, createTable, printMessage } from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { profile } from 'console';\n\nconst dataProtection = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n storage.session.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/.frodorc`\n );\n}\n\n/**\n * Find connection profile\n * @param {Object} connectionProfiles connection profile object\n * @param {String} host tenant host url or unique substring\n * @returns {Object} connection profile object or null\n */\nfunction findConnectionProfile(connectionProfiles, host) {\n const profiles = [];\n for (const tenant in connectionProfiles) {\n if (tenant.includes(host)) {\n const foundProfile = connectionProfiles[tenant];\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (long) {\n const table = createTable(['Host', 'Username', 'Log API Key']);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Initialize connection profiles\n */\nexport function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password from clear text to aes-256-GCM\n else {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n let convert = false;\n Object.keys(connectionsData).forEach(async (conn) => {\n if (connectionsData[conn].password) {\n convert = true;\n connectionsData[conn].encodedPassword = await dataProtection.encrypt(\n connectionsData[conn].password\n ); // Buffer.from(connectionsData[conn].password).toString('base64');\n delete connectionsData[conn].password;\n }\n });\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(host) {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfile(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await dataProtection.decrypt(profiles[0].encodedPassword)\n : null,\n key: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n secret: profiles[0].logApiSecret ? profiles[0].logApiSecret : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile() {\n return getConnectionProfileByHost(storage.session.getTenant());\n}\n\n/**\n * Save connection profile\n */\nexport async function saveConnectionProfile() {\n const filename = getConnectionProfilesPath();\n printMessage(`Saving creds in ${filename}...`);\n let connectionsData = {};\n let existingData = {};\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n if (connectionsData[storage.session.getTenant()]) {\n existingData = connectionsData[storage.session.getTenant()];\n printMessage(\n `Updating connection profile ${storage.session.getTenant()}`\n );\n } else\n printMessage(`Adding connection profile ${storage.session.getTenant()}`);\n } catch (e) {\n printMessage(\n `Creating connection profiles file ${filename} with ${storage.session.getTenant()}`\n );\n }\n if (storage.session.getUsername())\n existingData['username'] = storage.session.getUsername();\n if (storage.session.getPassword())\n existingData['encodedPassword'] = await dataProtection.encrypt(\n storage.session.getPassword()\n );\n if (storage.session.getLogApiKey())\n existingData['logApiKey'] = storage.session.getLogApiKey();\n if (storage.session.getLogApiSecret())\n existingData['logApiSecret'] = storage.session.getLogApiSecret();\n\n // advanced settings\n if (storage.session.getAuthenticationService()) {\n existingData['authenticationService'] =\n storage.session.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n storage.session.getAuthenticationService(),\n 'info'\n );\n }\n if (storage.session.getAuthenticationHeaderOverrides()) {\n existingData['authenticationHeaderOverrides'] =\n storage.session.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(storage.session.getAuthenticationHeaderOverrides(), 'info');\n }\n\n connectionsData[storage.session.getTenant()] = existingData;\n\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfile(connectionsData, host);\n if (profiles.length == 1) {\n printMessage(`Deleting connection profile ${profiles[0].tenant}`);\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\nexport async function describeConnectionProfile(host, showSecrets) {\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n if (!showSecrets) {\n delete profile.password;\n delete profile.secret;\n }\n if (!profile.key) {\n delete profile.key;\n delete profile.secret;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n key: 'Log API Key',\n secret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionProfileOps.js","names":["crypto","DataProtection","fileOptions","indentation","legacyProfileFilename","newProfileFilename","getConnectionProfilesPath","state","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","os","homedir","findConnectionProfiles","connectionProfiles","host","profiles","tenant","includes","foundProfile","push","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","table","createTable","Object","keys","forEach","c","username","logApiKey","printMessage","toString","e","message","migrateFromLegacyProfile","legacyPath","existsSync","copyFileSync","renameSync","initConnectionProfiles","folderName","path","dirname","mkdirSync","recursive","writeFileSync","stringify","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","getConnectionProfileByHost","length","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctId","svcacctJwk","getConnectionProfile","getHost","saveConnectionProfile","verboseMessage","profile","statSync","found","setHost","isValidUrl","error","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","obj","key","saveJsonToFile","deleteConnectionProfile","stat","err","code","describeConnectionProfile","showSecrets","present","jwk","keyMap","createObjectTable","addNewServiceAccount","debugMessage","name","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport * as state from '../shared/State';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport { createServiceAccount } from './ServiceAccountOps';\nimport { ObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\n\nconst crypto = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n if (tenant.includes(host)) {\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (long) {\n const table = createTable(['Host', 'Username', 'Log API Key']);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n if (fs.existsSync(legacyPath)) {\n fs.copyFileSync(legacyPath, `${os.homedir()}/.frodo/${newProfileFilename}`);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\nexport async function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await crypto.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret = await crypto.encrypt(\n connectionsData[conn]['logApiSecret']\n );\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await crypto.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(\n host: string\n): Promise<ConnectionProfileInterface> {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await crypto.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await crypto.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await crypto.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost(state.getHost());\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile(host: string): Promise<boolean> {\n const filename = getConnectionProfilesPath();\n verboseMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles(profiles, host);\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n verboseMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n return false;\n }\n }\n } catch (error) {\n verboseMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await crypto.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await crypto.encrypt(state.getLogApiSecret());\n\n // service account\n if (state.getServiceAccountId())\n profile.svcacctId = state.getServiceAccountId();\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await crypto.encrypt(\n state.getServiceAccountJwk()\n );\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile(orderedProfiles, filename, false);\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<ObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount(): Promise<ObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount(\n name,\n description,\n 'Active',\n scope,\n jwks\n );\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionProfileOps.test.js","names":["describe","test","host","user","password","connectionProfilePath","homedir","state","default","session","setTenant","setUsername","setPassword","setConnectionProfilesPath","ConnectionProfile","saveConnectionProfile","expect","fs","existsSync","toBeTruthy","connections","JSON","parse","readFileSync","username","toEqual","encodedPassword","FRODO_MASTER_KEY_PATH_KEY","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","getConnectionProfilesPath","FRODO_MASTER_KEY_KEY","masterKey"],"sources":["ops/ConnectionProfileOps.test.ts"],"sourcesContent":["import fs from 'fs';\nimport { homedir } from 'os';\nimport { ConnectionProfile, state } from '../index';\nimport {\n FRODO_CONNECTION_PROFILES_PATH_KEY,\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n} from '../storage/StaticStorage';\n\ndescribe('ConnectionProfileOps', () => {\n test('saveConnectionProfile() 1: Create connection profiles in location from state field', async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections1.json`;\n\n state.default.session.setTenant(host);\n state.default.session.setUsername(user);\n state.default.session.setPassword(password);\n state.default.session.setConnectionProfilesPath(connectionProfilePath);\n await ConnectionProfile.saveConnectionProfile();\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`saveConnectionProfile() 2: Create connection profiles in location from env ${FRODO_MASTER_KEY_PATH_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections2.json`;\n // set the hard-coded master key\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] = connectionProfilePath;\n\n state.default.session.setTenant(host);\n state.default.session.setUsername(user);\n state.default.session.setPassword(password);\n state.default.session.setConnectionProfilesPath(null);\n await ConnectionProfile.saveConnectionProfile();\n expect(ConnectionProfile.getConnectionProfilesPath()).toEqual(\n connectionProfilePath\n );\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`saveConnectionProfile() 3: Use Master Key from env ${FRODO_MASTER_KEY_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections3.json`;\n const masterKey = 'bxnQlhcU5VfyDs+BBPhRhK09yHaNtdIIk85HUMKBnqg=';\n // set the hard-coded master key\n process.env[FRODO_MASTER_KEY_KEY] = masterKey;\n\n state.default.session.setTenant(host);\n state.default.session.setUsername(user);\n state.default.session.setPassword(password);\n state.default.session.setConnectionProfilesPath(connectionProfilePath);\n await ConnectionProfile.saveConnectionProfile();\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionProfileOps.test.js","names":["describe","test","host","user","password","connectionProfilePath","homedir","state","setHost","setUsername","setPassword","setConnectionProfilesPath","ConnectionProfile","saveConnectionProfile","expect","fs","existsSync","toBeTruthy","connections","JSON","parse","readFileSync","username","toEqual","encodedPassword","FRODO_MASTER_KEY_PATH_KEY","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","getConnectionProfilesPath","FRODO_MASTER_KEY_KEY","masterKey"],"sources":["ops/ConnectionProfileOps.test.ts"],"sourcesContent":["import fs from 'fs';\nimport { homedir } from 'os';\nimport { ConnectionProfile, state } from '../index';\nimport {\n FRODO_CONNECTION_PROFILES_PATH_KEY,\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n} from '../storage/StaticStorage';\n\ndescribe('ConnectionProfileOps', () => {\n test('saveConnectionProfile() 1: Create connection profiles in location from state field', async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections1.json`;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`saveConnectionProfile() 2: Create connection profiles in location from env ${FRODO_MASTER_KEY_PATH_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections2.json`;\n // set the hard-coded master key\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] = connectionProfilePath;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath('');\n await ConnectionProfile.saveConnectionProfile(host);\n expect(ConnectionProfile.getConnectionProfilesPath()).toEqual(\n connectionProfilePath\n );\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`saveConnectionProfile() 3: Use Master Key from env ${FRODO_MASTER_KEY_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const connectionProfilePath = `${homedir()}/connections3.json`;\n const masterKey = 'bxnQlhcU5VfyDs+BBPhRhK09yHaNtdIIk85HUMKBnqg=';\n // set the hard-coded master key\n process.env[FRODO_MASTER_KEY_KEY] = masterKey;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n});\n"],"mappings":"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"}
@@ -3,403 +3,59 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.exportEmailTemplateToFile = exportEmailTemplateToFile;
7
- exports.exportEmailTemplatesToFile = exportEmailTemplatesToFile;
8
- exports.exportEmailTemplatesToFiles = exportEmailTemplatesToFiles;
9
- exports.importEmailTemplateFromFile = importEmailTemplateFromFile;
10
- exports.importEmailTemplatesFromFile = importEmailTemplatesFromFile;
11
- exports.importEmailTemplatesFromFiles = importEmailTemplatesFromFiles;
12
- exports.importFirstEmailTemplateFromFile = importFirstEmailTemplateFromFile;
13
- exports.listEmailTemplates = listEmailTemplates;
14
-
15
- var _fs = _interopRequireDefault(require("fs"));
16
-
17
- var _EmailTemplateApi = require("../api/EmailTemplateApi");
18
-
19
- var _Console = require("./utils/Console");
20
-
21
- var _ExportImportUtils = require("./utils/ExportImportUtils");
22
-
23
- var _Wordwrap = _interopRequireDefault(require("./utils/Wordwrap"));
24
-
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
-
6
+ exports.EMAIL_TEMPLATE_TYPE = void 0;
7
+ exports.getEmailTemplate = getEmailTemplate;
8
+ exports.getEmailTemplates = getEmailTemplates;
9
+ exports.putEmailTemplate = putEmailTemplate;
10
+ var _IdmConfigApi = require("../api/IdmConfigApi");
27
11
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
28
-
29
12
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
30
-
31
- /**
32
- * Regex to remove email template type from id
33
- */
34
- var regexEmailTemplateType = new RegExp("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), 'g');
35
13
  /**
36
- * Maintain the file type centrally
14
+ * Email template type key used to build the IDM id: 'emailTemplate/<id>'
37
15
  */
16
+ var EMAIL_TEMPLATE_TYPE = 'emailTemplate';
38
17
 
39
- var EMAIL_TEMPLATE_FILE_TYPE = 'template.email'; // use a function vs a template variable to avoid problems in loops
40
-
41
- function getFileDataTemplate() {
42
- return {
43
- meta: {},
44
- emailTemplate: {}
45
- };
46
- }
47
18
  /**
48
- * List email templates
49
- * @param {boolean} long Long list format with details
50
- * @return {Promise<unknown[]>} a promise that resolves to an array of email template objects
19
+ * Get all email templates
20
+ * @returns {Promise} a promise that resolves to an array of email template objects
51
21
  */
52
-
53
-
54
- function listEmailTemplates() {
55
- return _listEmailTemplates.apply(this, arguments);
22
+ exports.EMAIL_TEMPLATE_TYPE = EMAIL_TEMPLATE_TYPE;
23
+ function getEmailTemplates() {
24
+ return _getEmailTemplates.apply(this, arguments);
56
25
  }
57
26
  /**
58
- * Export a single email template to file
59
- * @param {String} templateId email template id
60
- * @param {String} file optional filename
27
+ * Get email template
28
+ * @param {string} templateId id/name of the email template without the type prefix
29
+ * @returns {Promise} a promise that resolves an email template object
61
30
  */
62
-
63
-
64
- function _listEmailTemplates() {
65
- _listEmailTemplates = _asyncToGenerator(function* () {
66
- var long = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
67
- var emailTemplates = [];
68
-
69
- try {
70
- emailTemplates = (yield (0, _EmailTemplateApi.getEmailTemplates)()).result;
71
- } catch (error) {
72
- (0, _Console.printMessage)("Error retrieving email templates: ".concat(error.message), 'error');
73
- }
74
-
75
- emailTemplates.sort((a, b) => a._id.localeCompare(b._id));
76
-
77
- if (!long) {
78
- for (var [, emailTemplate] of emailTemplates.entries()) {
79
- (0, _Console.printMessage)("".concat(emailTemplate._id.replace("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), '')), 'data');
80
- }
81
- } else {
82
- var table = (0, _Console.createTable)(['Id'['brightCyan'], 'Name'['brightCyan'], 'Status'['brightCyan'], 'Locale(s)'['brightCyan'], 'From'['brightCyan'], 'Subject'['brightCyan']]);
83
-
84
- var _loop = function _loop(_emailTemplate) {
85
- table.push([// Id
86
- "".concat(_emailTemplate._id.replace("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), '')), // Name
87
- "".concat(_emailTemplate.displayName ? _emailTemplate.displayName : ''), // Status
88
- _emailTemplate.enabled === false ? 'disabled'['brightRed'] : 'enabled'['brightGreen'], // Locale(s)
89
- "".concat(_emailTemplate.defaultLocale).concat(Object.keys(_emailTemplate.subject).length > 1 ? " (".concat(Object.keys(_emailTemplate.subject).filter(locale => locale !== _emailTemplate.defaultLocale).join(','), ")") : ''), // From
90
- "".concat(_emailTemplate.from ? _emailTemplate.from : ''), // Subject
91
- (0, _Wordwrap.default)(_emailTemplate.subject[_emailTemplate.defaultLocale], 40)]);
92
- };
93
-
94
- for (var _emailTemplate of emailTemplates) {
95
- _loop(_emailTemplate);
96
- }
97
-
98
- (0, _Console.printMessage)(table.toString(), 'data');
99
- }
100
-
101
- return emailTemplates;
31
+ function _getEmailTemplates() {
32
+ _getEmailTemplates = _asyncToGenerator(function* () {
33
+ return (0, _IdmConfigApi.getConfigEntitiesByType)(EMAIL_TEMPLATE_TYPE);
102
34
  });
103
- return _listEmailTemplates.apply(this, arguments);
35
+ return _getEmailTemplates.apply(this, arguments);
104
36
  }
105
-
106
- function exportEmailTemplateToFile(_x, _x2) {
107
- return _exportEmailTemplateToFile.apply(this, arguments);
37
+ function getEmailTemplate(_x) {
38
+ return _getEmailTemplate.apply(this, arguments);
108
39
  }
109
40
  /**
110
- * Export all email templates to file
111
- * @param {String} file optional filename
41
+ * Put email template
42
+ * @param {string} templateId id/name of the email template without the type prefix
43
+ * @param {Object} templateData email template object
44
+ * @returns {Promise} a promise that resolves to an email template object
112
45
  */
113
-
114
-
115
- function _exportEmailTemplateToFile() {
116
- _exportEmailTemplateToFile = _asyncToGenerator(function* (templateId, file) {
117
- var fileName = file;
118
-
119
- if (!fileName) {
120
- fileName = (0, _ExportImportUtils.getTypedFilename)(templateId, EMAIL_TEMPLATE_FILE_TYPE);
121
- }
122
-
123
- (0, _Console.createProgressIndicator)(1, "Exporting ".concat(templateId));
124
-
125
- try {
126
- var templateData = yield (0, _EmailTemplateApi.getEmailTemplate)(templateId);
127
- (0, _Console.updateProgressIndicator)("Writing file ".concat(fileName));
128
- var fileData = getFileDataTemplate();
129
- fileData.emailTemplate[templateId] = templateData;
130
- (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
131
- (0, _Console.stopProgressIndicator)("Exported ".concat(templateId.brightCyan, " to ").concat(fileName.brightCyan, "."));
132
- } catch (err) {
133
- (0, _Console.stopProgressIndicator)("".concat(err));
134
- (0, _Console.printMessage)(err, 'error');
135
- }
46
+ function _getEmailTemplate() {
47
+ _getEmailTemplate = _asyncToGenerator(function* (templateId) {
48
+ return (0, _IdmConfigApi.getConfigEntity)("".concat(EMAIL_TEMPLATE_TYPE, "/").concat(templateId));
136
49
  });
137
- return _exportEmailTemplateToFile.apply(this, arguments);
50
+ return _getEmailTemplate.apply(this, arguments);
138
51
  }
139
-
140
- function exportEmailTemplatesToFile(_x3) {
141
- return _exportEmailTemplatesToFile.apply(this, arguments);
52
+ function putEmailTemplate(_x2, _x3) {
53
+ return _putEmailTemplate.apply(this, arguments);
142
54
  }
143
- /**
144
- * Export all email templates to separate files
145
- */
146
-
147
-
148
- function _exportEmailTemplatesToFile() {
149
- _exportEmailTemplatesToFile = _asyncToGenerator(function* (file) {
150
- var fileName = file;
151
-
152
- if (!fileName) {
153
- fileName = (0, _ExportImportUtils.getTypedFilename)("allEmailTemplates", EMAIL_TEMPLATE_FILE_TYPE);
154
- }
155
-
156
- try {
157
- var fileData = getFileDataTemplate();
158
- var response = yield (0, _EmailTemplateApi.getEmailTemplates)();
159
- var templates = response.result;
160
- (0, _Console.createProgressIndicator)(response.resultCount, 'Exporting email templates');
161
-
162
- for (var template of templates) {
163
- var templateId = template._id.replace("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), '');
164
-
165
- (0, _Console.updateProgressIndicator)("Exporting ".concat(templateId));
166
- fileData.emailTemplate[templateId] = template;
167
- }
168
-
169
- (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
170
- (0, _Console.stopProgressIndicator)("".concat(response.resultCount, " templates exported to ").concat(fileName, "."));
171
- } catch (err) {
172
- (0, _Console.stopProgressIndicator)("".concat(err));
173
- (0, _Console.printMessage)(err, 'error');
174
- }
175
- });
176
- return _exportEmailTemplatesToFile.apply(this, arguments);
177
- }
178
-
179
- function exportEmailTemplatesToFiles() {
180
- return _exportEmailTemplatesToFiles.apply(this, arguments);
181
- }
182
- /**
183
- * Import email template by id from file
184
- * @param {String} templateId email template id
185
- * @param {String} file optional filename
186
- */
187
-
188
-
189
- function _exportEmailTemplatesToFiles() {
190
- _exportEmailTemplatesToFiles = _asyncToGenerator(function* () {
191
- try {
192
- var response = yield (0, _EmailTemplateApi.getEmailTemplates)();
193
- var templates = response.result;
194
- (0, _Console.createProgressIndicator)(response.resultCount, 'Exporting email templates');
195
-
196
- for (var template of templates) {
197
- var templateId = template._id.replace("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), '');
198
-
199
- var fileName = (0, _ExportImportUtils.getTypedFilename)(templateId, EMAIL_TEMPLATE_FILE_TYPE);
200
- var fileData = getFileDataTemplate();
201
- (0, _Console.updateProgressIndicator)("Exporting ".concat(templateId));
202
- fileData.emailTemplate[templateId] = template;
203
- (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
204
- }
205
-
206
- (0, _Console.stopProgressIndicator)("".concat(response.resultCount, " templates exported."));
207
- } catch (err) {
208
- (0, _Console.stopProgressIndicator)("".concat(err));
209
- (0, _Console.printMessage)(err, 'error');
210
- }
211
- });
212
- return _exportEmailTemplatesToFiles.apply(this, arguments);
213
- }
214
-
215
- function importEmailTemplateFromFile(_x4, _x5) {
216
- return _importEmailTemplateFromFile.apply(this, arguments);
217
- }
218
- /**
219
- * Import all email templates from file
220
- * @param {String} file optional filename
221
- */
222
-
223
-
224
- function _importEmailTemplateFromFile() {
225
- _importEmailTemplateFromFile = _asyncToGenerator(function* (templateId, file) {
226
- // eslint-disable-next-line no-param-reassign
227
- templateId = templateId.replaceAll("".concat(_EmailTemplateApi.EMAIL_TEMPLATE_TYPE, "/"), '');
228
-
229
- _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
230
- var _ref = _asyncToGenerator(function* (err, data) {
231
- if (err) throw err;
232
- var fileData = JSON.parse(data);
233
-
234
- if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
235
- (0, _Console.createProgressIndicator)(1, "Importing ".concat(templateId));
236
-
237
- if (fileData.emailTemplate[templateId]) {
238
- try {
239
- yield (0, _EmailTemplateApi.putEmailTemplate)(templateId, fileData.emailTemplate[templateId]);
240
- (0, _Console.updateProgressIndicator)("Importing ".concat(templateId));
241
- (0, _Console.stopProgressIndicator)("Imported ".concat(templateId));
242
- } catch (putEmailTemplateError) {
243
- (0, _Console.stopProgressIndicator)("".concat(putEmailTemplateError));
244
- (0, _Console.printMessage)(putEmailTemplateError, 'error');
245
- }
246
- } else {
247
- (0, _Console.stopProgressIndicator)("Email template ".concat(templateId.brightCyan, " not found in ").concat(file.brightCyan, "!"));
248
- (0, _Console.printMessage)("Email template ".concat(templateId.brightCyan, " not found in ").concat(file.brightCyan, "!"), 'error');
249
- }
250
- } else {
251
- (0, _Console.printMessage)('Import validation failed...', 'error');
252
- }
253
- });
254
-
255
- return function (_x8, _x9) {
256
- return _ref.apply(this, arguments);
257
- };
258
- }());
259
- });
260
- return _importEmailTemplateFromFile.apply(this, arguments);
261
- }
262
-
263
- function importEmailTemplatesFromFile(_x6) {
264
- return _importEmailTemplatesFromFile.apply(this, arguments);
265
- }
266
- /**
267
- * Import all email templates from separate files
268
- */
269
-
270
-
271
- function _importEmailTemplatesFromFile() {
272
- _importEmailTemplatesFromFile = _asyncToGenerator(function* (file) {
273
- _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
274
- var _ref2 = _asyncToGenerator(function* (err, data) {
275
- if (err) throw err;
276
- var fileData = JSON.parse(data);
277
-
278
- if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
279
- (0, _Console.createProgressIndicator)(Object.keys(fileData.emailTemplate).length, "Importing email templates");
280
-
281
- for (var id in fileData.emailTemplate) {
282
- if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
283
- var templateId = id.replace(regexEmailTemplateType, '');
284
-
285
- try {
286
- // eslint-disable-next-line no-await-in-loop
287
- yield (0, _EmailTemplateApi.putEmailTemplate)(templateId, fileData.emailTemplate[templateId]);
288
- (0, _Console.updateProgressIndicator)("Imported ".concat(templateId));
289
- } catch (putEmailTemplateError) {
290
- (0, _Console.printMessage)("\nError importing ".concat(templateId), 'error');
291
- (0, _Console.printMessage)(putEmailTemplateError.response.data, 'error');
292
- }
293
- }
294
- }
295
-
296
- (0, _Console.stopProgressIndicator)("Done.");
297
- } else {
298
- (0, _Console.printMessage)('Import validation failed...', 'error');
299
- }
300
- });
301
-
302
- return function (_x10, _x11) {
303
- return _ref2.apply(this, arguments);
304
- };
305
- }());
306
- });
307
- return _importEmailTemplatesFromFile.apply(this, arguments);
308
- }
309
-
310
- function importEmailTemplatesFromFiles() {
311
- return _importEmailTemplatesFromFiles.apply(this, arguments);
312
- }
313
- /**
314
- * Import first email template from file
315
- * @param {String} file optional filename
316
- */
317
-
318
-
319
- function _importEmailTemplatesFromFiles() {
320
- _importEmailTemplatesFromFiles = _asyncToGenerator(function* () {
321
- var names = _fs.default.readdirSync('.');
322
-
323
- var jsonFiles = names.filter(name => name.toLowerCase().endsWith("".concat(EMAIL_TEMPLATE_FILE_TYPE, ".json")));
324
- (0, _Console.createProgressIndicator)(jsonFiles.length, 'Importing email templates...');
325
- var total = 0;
326
- var totalErrors = 0;
327
-
328
- for (var file of jsonFiles) {
329
- var data = _fs.default.readFileSync(file, 'utf8');
330
-
331
- var fileData = JSON.parse(data);
332
-
333
- if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
334
- total += Object.keys(fileData.emailTemplate).length;
335
- var errors = 0;
336
-
337
- for (var id in fileData.emailTemplate) {
338
- if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
339
- var templateId = id.replace(regexEmailTemplateType, '');
340
-
341
- try {
342
- // eslint-disable-next-line no-await-in-loop
343
- yield (0, _EmailTemplateApi.putEmailTemplate)(templateId, fileData.emailTemplate[templateId]);
344
- } catch (putEmailTemplateError) {
345
- errors += 1;
346
- (0, _Console.printMessage)("\nError importing ".concat(templateId), 'error');
347
- (0, _Console.printMessage)(putEmailTemplateError.response.data, 'error');
348
- }
349
- }
350
- }
351
-
352
- totalErrors += errors;
353
- (0, _Console.updateProgressIndicator)("Imported ".concat(file));
354
- } else {
355
- (0, _Console.printMessage)("Validation of ".concat(file, " failed!"), 'error');
356
- }
357
- }
358
-
359
- (0, _Console.stopProgressIndicator)("Imported ".concat(total - totalErrors, " of ").concat(total, " email template(s) from ").concat(jsonFiles.length, " file(s)."));
360
- });
361
- return _importEmailTemplatesFromFiles.apply(this, arguments);
362
- }
363
-
364
- function importFirstEmailTemplateFromFile(_x7) {
365
- return _importFirstEmailTemplateFromFile.apply(this, arguments);
366
- }
367
-
368
- function _importFirstEmailTemplateFromFile() {
369
- _importFirstEmailTemplateFromFile = _asyncToGenerator(function* (file) {
370
- _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
371
- var _ref3 = _asyncToGenerator(function* (err, data) {
372
- if (err) throw err;
373
- var fileData = JSON.parse(data);
374
-
375
- if ((0, _ExportImportUtils.validateImport)(fileData.meta)) {
376
- (0, _Console.createProgressIndicator)(1, "Importing first email template");
377
-
378
- for (var id in fileData.emailTemplate) {
379
- if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
380
- try {
381
- yield (0, _EmailTemplateApi.putEmailTemplate)(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
382
- (0, _Console.updateProgressIndicator)("Imported ".concat(id));
383
- (0, _Console.stopProgressIndicator)("Imported ".concat(id));
384
- } catch (putEmailTemplateError) {
385
- (0, _Console.stopProgressIndicator)("Error importing email template ".concat(id));
386
- (0, _Console.printMessage)("\nError importing email template ".concat(id), 'error');
387
- (0, _Console.printMessage)(putEmailTemplateError.response.data, 'error');
388
- }
389
-
390
- break;
391
- }
392
- }
393
- } else {
394
- (0, _Console.printMessage)('Import validation failed...', 'error');
395
- }
396
- });
397
-
398
- return function (_x12, _x13) {
399
- return _ref3.apply(this, arguments);
400
- };
401
- }());
55
+ function _putEmailTemplate() {
56
+ _putEmailTemplate = _asyncToGenerator(function* (templateId, templateData) {
57
+ return (0, _IdmConfigApi.putConfigEntity)("".concat(EMAIL_TEMPLATE_TYPE, "/").concat(templateId), templateData);
402
58
  });
403
- return _importFirstEmailTemplateFromFile.apply(this, arguments);
59
+ return _putEmailTemplate.apply(this, arguments);
404
60
  }
405
61
  //# sourceMappingURL=EmailTemplateOps.js.map