@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
@@ -10,6 +10,7 @@ exports.convertTextArrayToBase64 = convertTextArrayToBase64;
10
10
  exports.convertTextArrayToBase64Url = convertTextArrayToBase64Url;
11
11
  exports.findFilesByName = findFilesByName;
12
12
  exports.getCurrentTimestamp = getCurrentTimestamp;
13
+ exports.getMetadata = getMetadata;
13
14
  exports.getRealmString = getRealmString;
14
15
  exports.getTypedFilename = getTypedFilename;
15
16
  exports.getWorkingDirectory = getWorkingDirectory;
@@ -19,69 +20,52 @@ exports.saveTextToFile = saveTextToFile;
19
20
  exports.saveToFile = saveToFile;
20
21
  exports.titleCase = titleCase;
21
22
  exports.validateImport = validateImport;
22
-
23
23
  var _fs = _interopRequireDefault(require("fs"));
24
-
25
24
  var _promises = require("fs/promises");
26
-
27
25
  var _path = require("path");
28
-
29
26
  var _slugify = _interopRequireDefault(require("slugify"));
30
-
31
27
  var _Base = require("../../api/utils/Base64");
32
-
33
- var _SessionStorage = _interopRequireDefault(require("../../storage/SessionStorage"));
34
-
28
+ var state = _interopRequireWildcard(require("../../shared/State"));
35
29
  var _StaticStorage = require("../../storage/StaticStorage");
36
-
37
30
  var _Console = require("./Console");
38
-
31
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
33
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
40
-
41
34
  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); } }
42
-
43
35
  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); }); }; }
44
-
45
36
  function getCurrentTimestamp() {
46
37
  var ts = new Date();
47
38
  return ts.toISOString();
48
39
  }
49
-
50
40
  function getMetadata() {
51
41
  var metadata = {
52
- origin: _SessionStorage.default.session.getTenant(),
53
- originAmVersion: _SessionStorage.default.session.getAmVersion(),
54
- exportedBy: _SessionStorage.default.session.getUsername(),
42
+ origin: state.getHost(),
43
+ originAmVersion: state.getAmVersion(),
44
+ exportedBy: state.getUsername(),
55
45
  exportDate: getCurrentTimestamp(),
56
46
  exportTool: _StaticStorage.FRODO_METADATA_ID,
57
- exportToolVersion: _SessionStorage.default.session.getFrodoVersion()
47
+ exportToolVersion: state.getFrodoVersion()
58
48
  };
59
49
  return metadata;
60
50
  }
51
+
61
52
  /*
62
53
  * Output str in title case
63
54
  *
64
55
  * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'
65
56
  */
66
-
67
-
68
57
  function titleCase(input) {
69
58
  var str = input.toString();
70
59
  var splitStr = str.toLowerCase().split(' ');
71
-
72
60
  for (var i = 0; i < splitStr.length; i += 1) {
73
61
  splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);
74
62
  }
75
-
76
63
  return splitStr.join(' ');
77
64
  }
78
-
79
65
  function getRealmString() {
80
- var realm = _SessionStorage.default.session.getRealm();
81
-
66
+ var realm = state.getRealm();
82
67
  return realm.split('/').reduce((result, item) => "".concat(result).concat(titleCase(item)), '');
83
68
  }
84
-
85
69
  function convertBase64TextToArray(b64text) {
86
70
  var arrayOut = [];
87
71
  var plainText = (0, _Base.decode)(b64text);
@@ -89,7 +73,6 @@ function convertBase64TextToArray(b64text) {
89
73
  arrayOut = plainText.split('\n');
90
74
  return arrayOut;
91
75
  }
92
-
93
76
  function convertBase64UrlTextToArray(b64UTF8Text) {
94
77
  var arrayOut = [];
95
78
  var plainText = (0, _Base.decodeBase64Url)(b64UTF8Text);
@@ -97,53 +80,44 @@ function convertBase64UrlTextToArray(b64UTF8Text) {
97
80
  arrayOut = plainText.split('\n');
98
81
  return arrayOut;
99
82
  }
100
-
101
83
  function convertTextArrayToBase64(textArray) {
102
84
  var joinedText = textArray.join('\n');
103
85
  var b64encodedScript = (0, _Base.encode)(joinedText);
104
86
  return b64encodedScript;
105
87
  }
106
-
107
88
  function convertTextArrayToBase64Url(textArray) {
108
89
  var joinedText = textArray.join('\n');
109
90
  var b64encodedScript = (0, _Base.encodeBase64Url)(joinedText);
110
91
  return b64encodedScript;
111
- } // eslint-disable-next-line no-unused-vars
112
-
92
+ }
113
93
 
94
+ // eslint-disable-next-line no-unused-vars
114
95
  function validateImport(metadata) {
115
96
  return metadata || true;
116
97
  }
117
-
118
98
  function getTypedFilename(name, type) {
119
99
  var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'json';
120
100
  var slug = (0, _slugify.default)(name.replace(/^http(s?):\/\//, ''));
121
101
  return "".concat(slug, ".").concat(type, ".").concat(suffix);
122
102
  }
123
-
124
103
  function getWorkingDirectory() {
125
104
  var wd = '.';
126
-
127
- if (_SessionStorage.default.session.getDirectory()) {
128
- wd = _SessionStorage.default.session.getDirectory().replace(/\/$/, ''); // create directory if it doesn't exist
129
-
105
+ if (state.getDirectory()) {
106
+ wd = state.getDirectory().replace(/\/$/, '');
107
+ // create directory if it doesn't exist
130
108
  if (!_fs.default.existsSync(wd)) {
131
109
  (0, _Console.debugMessage)("ExportImportUtils.getWorkingDirectory: creating directory '".concat(wd, "'"));
132
-
133
110
  _fs.default.mkdirSync(wd, {
134
111
  recursive: true
135
112
  });
136
113
  }
137
114
  }
138
-
139
115
  return wd;
140
116
  }
141
-
142
117
  function saveToFile(type, data, identifier, filename) {
143
118
  var exportData = {};
144
119
  exportData['meta'] = getMetadata();
145
120
  exportData[type] = {};
146
-
147
121
  if (Array.isArray(data)) {
148
122
  data.forEach(element => {
149
123
  exportData[type][element[identifier]] = element;
@@ -151,58 +125,53 @@ function saveToFile(type, data, identifier, filename) {
151
125
  } else {
152
126
  exportData[type][data[identifier]] = data;
153
127
  }
154
-
155
128
  _fs.default.writeFile(filename, JSON.stringify(exportData, null, 2), err => {
156
129
  if (err) {
157
130
  return (0, _Console.printMessage)("ERROR - can't save ".concat(type, " to file"), 'error');
158
131
  }
159
-
160
132
  return '';
161
133
  });
162
134
  }
135
+
163
136
  /**
164
137
  * Save JSON object to file
165
138
  * @param {Object} data data object
166
139
  * @param {String} filename file name
140
+ * @return {boolean} true if successful, false otherwise
167
141
  */
168
-
169
-
170
142
  function saveJsonToFile(data, filename) {
143
+ var includeMeta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
171
144
  var exportData = data;
172
- exportData.meta = getMetadata();
173
-
174
- _fs.default.writeFile(filename, JSON.stringify(exportData, null, 2), err => {
175
- if (err) {
176
- return (0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
177
- }
178
-
179
- return '';
180
- });
145
+ if (includeMeta) exportData.meta = getMetadata();
146
+ try {
147
+ _fs.default.writeFileSync(filename, JSON.stringify(exportData, null, 2));
148
+ return true;
149
+ } catch (err) {
150
+ (0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
151
+ return false;
152
+ }
181
153
  }
154
+
182
155
  /**
183
156
  * Save text data to file
184
157
  * @param {String} data text data
185
158
  * @param {String} filename file name
186
159
  */
187
-
188
-
189
160
  function saveTextToFile(data, filename) {
190
161
  _fs.default.writeFile(filename, data, err => {
191
162
  if (err) {
192
163
  (0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
193
164
  return false;
194
165
  }
195
-
196
166
  return true;
197
167
  });
198
168
  }
169
+
199
170
  /**
200
171
  * Append text data to file
201
172
  * @param {String} data text data
202
173
  * @param {String} filename file name
203
174
  */
204
-
205
-
206
175
  function appendTextToFile(data, filename) {
207
176
  try {
208
177
  _fs.default.appendFileSync(filename, data);
@@ -210,6 +179,7 @@ function appendTextToFile(data, filename) {
210
179
  (0, _Console.printMessage)("".concat(error.message), 'error');
211
180
  }
212
181
  }
182
+
213
183
  /**
214
184
  * Find files by name
215
185
  * @param {string} fileName file name to search for
@@ -217,42 +187,37 @@ function appendTextToFile(data, filename) {
217
187
  * @param {string} path path to directory where to start the search
218
188
  * @returns {string[]} array of found file paths relative to starting directory
219
189
  */
220
-
221
-
222
190
  function findFilesByName(fileName) {
223
191
  var fast = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
224
192
  var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : './';
225
-
226
193
  var entries = _fs.default.readdirSync(path, {
227
194
  encoding: 'utf8',
228
195
  withFileTypes: true
229
- }); // Get files within the current directory and add a path key to the file objects
230
-
196
+ });
231
197
 
232
- var files = entries.filter(entry => !entry.isDirectory()).filter(file => file.name === fileName) // .map((file) => ({ ...file, path: path + file.name }));
198
+ // Get files within the current directory and add a path key to the file objects
199
+ var files = entries.filter(entry => !entry.isDirectory()).filter(file => file.name === fileName)
200
+ // .map((file) => ({ ...file, path: path + file.name }));
233
201
  .map(file => path + file.name);
234
- if (fast && files.length > 0) return files; // search sub-folders
202
+ if (fast && files.length > 0) return files;
235
203
 
204
+ // search sub-folders
236
205
  var folders = entries.filter(entry => entry.isDirectory());
237
-
238
206
  for (var folder of folders) {
239
207
  files.push(...findFilesByName(fileName, fast, "".concat(path).concat(folder.name, "/")));
240
208
  }
241
-
242
209
  return files;
243
210
  }
211
+
244
212
  /**
245
213
  * find all (nested) files in a directory
246
214
  *
247
215
  * @param directory directory to search
248
216
  * @returns list of files
249
217
  */
250
-
251
-
252
218
  function readFilesRecursive(_x) {
253
219
  return _readFilesRecursive.apply(this, arguments);
254
220
  }
255
-
256
221
  function _readFilesRecursive() {
257
222
  _readFilesRecursive = _asyncToGenerator(function* (directory) {
258
223
  var items = yield (0, _promises.readdir)(directory);
@@ -260,14 +225,11 @@ function _readFilesRecursive() {
260
225
  var _ref = _asyncToGenerator(function* (entity) {
261
226
  var path = (0, _path.join)(directory, entity);
262
227
  var isDirectory = (yield (0, _promises.lstat)(path)).isDirectory();
263
-
264
228
  if (isDirectory) {
265
229
  return readFilesRecursive(path);
266
230
  }
267
-
268
231
  return path;
269
232
  });
270
-
271
233
  return function (_x2) {
272
234
  return _ref.apply(this, arguments);
273
235
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","storage","session","getTenant","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","meta","saveTextToFile","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport storage from '../../storage/SessionStorage';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nfunction getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: storage.session.getTenant(),\n originAmVersion: storage.session.getAmVersion(),\n exportedBy: storage.session.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: storage.session.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = storage.session.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (storage.session.getDirectory()) {\n wd = storage.session.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n */\nexport function saveJsonToFile(data, filename) {\n const exportData = data;\n exportData.meta = getMetadata();\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${filename}`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function saveTextToFile(data, filename) {\n fs.writeFile(filename, data, (err) => {\n if (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n return true;\n });\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","state","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","includeMeta","meta","writeFileSync","saveTextToFile","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport * as state from '../../shared/State';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nexport function getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile(data, filename, includeMeta = true): boolean {\n const exportData = data;\n if (includeMeta) exportData.meta = getMetadata();\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n}\n\n/**\n * Save text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function saveTextToFile(data, filename) {\n fs.writeFile(filename, data, (err) => {\n if (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n return true;\n });\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExportImportUtils.test.js","names":["FS_TMP_DIR","resolve","PATH_TO_ARTIFACT","test","originalScript","base64Script","Buffer","from","toString","result","convertBase64TextToArray","expect","toEqual","split","originalArrayOfScriptLines","expected","convertTextArrayToBase64","validateImport","not","toBe","describe","skip","afterAll","existsSync","rmSync","id","data","location","character","words","lotr","saveToFile","resultingJSON","JSON","parse","readFileSync","Object","keys","meta"],"sources":["ops/utils/ExportImportUtils.test.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { rmSync, existsSync, readFileSync } from 'fs';\nimport {\n convertTextArrayToBase64,\n convertBase64TextToArray,\n saveToFile,\n validateImport,\n} from './ExportImportUtils';\n// Warning! implimentation file contains non determinisitc functions which are either; not reasonable to test or imposible\n// Cause: date based non overidable functions\n// Not tested: getCurrentTimestamp\n\nconst FS_TMP_DIR = resolve('.', 'test', 'fs_tmp');\nconst PATH_TO_ARTIFACT = resolve(FS_TMP_DIR, 'export.json');\n\ntest('convertBase64TextToArray returns an array of text lines in base64 encoding', () => {\n // Arrange\n const originalScript = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const base64Script = Buffer.from(originalScript).toString('base64');\n // Act\n const result = convertBase64TextToArray(base64Script);\n // Assert\n expect(result).toEqual(originalScript.split('\\n'));\n});\n\ntest('convertTextArrayToBase64', () => {\n // Arrange\n const originalArrayOfScriptLines = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const expected = Buffer.from(originalArrayOfScriptLines).toString('base64');\n // Act\n const result = convertTextArrayToBase64(\n originalArrayOfScriptLines.split('\\n')\n );\n // Assert\n expect(result).toEqual(expected);\n});\n\ntest('validateImport should always return true', () => {\n expect(validateImport(null)).not.toBe(false);\n});\n\n// This function has no way to determine when its asnyc task is complete, suggest using callback or promises to allow for testing\ndescribe.skip('file system based tests', () => {\n afterAll(() => {\n if (existsSync(PATH_TO_ARTIFACT)) {\n rmSync(PATH_TO_ARTIFACT);\n }\n });\n\n test('saveToFile should save a file to specified tmp directory with expected data format', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n\n const expected = {\n lotr: {\n 'id-3021': {\n id: 'id-3021',\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n },\n };\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(resultingJSON.lotr).toEqual(expected.lotr);\n });\n\n test('saveToFile should save a file with metadata', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(Object.keys(resultingJSON.meta)).toEqual([\n 'origin',\n 'exportedBy',\n 'exportDate',\n 'exportTool',\n 'exportToolVersion',\n ]);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExportImportUtils.test.js","names":["FS_TMP_DIR","resolve","PATH_TO_ARTIFACT","test","originalScript","base64Script","Buffer","from","toString","result","convertBase64TextToArray","expect","toEqual","split","originalArrayOfScriptLines","expected","convertTextArrayToBase64","validateImport","not","toBe","describe","skip","afterAll","existsSync","rmSync","id","data","location","character","words","lotr","saveToFile","resultingJSON","JSON","parse","readFileSync","Object","keys","meta"],"sources":["ops/utils/ExportImportUtils.test.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { rmSync, existsSync, readFileSync } from 'fs';\nimport {\n convertTextArrayToBase64,\n convertBase64TextToArray,\n saveToFile,\n validateImport,\n} from './ExportImportUtils';\n// Warning! implimentation file contains non determinisitc functions which are either; not reasonable to test or imposible\n// Cause: date based non overidable functions\n// Not tested: getCurrentTimestamp\n\nconst FS_TMP_DIR = resolve('.', 'test', 'fs_tmp');\nconst PATH_TO_ARTIFACT = resolve(FS_TMP_DIR, 'export.json');\n\ntest('convertBase64TextToArray returns an array of text lines in base64 encoding', () => {\n // Arrange\n const originalScript = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const base64Script = Buffer.from(originalScript).toString('base64');\n // Act\n const result = convertBase64TextToArray(base64Script);\n // Assert\n expect(result).toEqual(originalScript.split('\\n'));\n});\n\ntest('convertTextArrayToBase64', () => {\n // Arrange\n const originalArrayOfScriptLines = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const expected = Buffer.from(originalArrayOfScriptLines).toString('base64');\n // Act\n const result = convertTextArrayToBase64(\n originalArrayOfScriptLines.split('\\n')\n );\n // Assert\n expect(result).toEqual(expected);\n});\n\ntest('validateImport should always return true', () => {\n expect(validateImport(null)).not.toBe(false);\n});\n\n// This function has no way to determine when its asnyc task is complete, suggest using callback or promises to allow for testing\ndescribe.skip('file system based tests', () => {\n afterAll(() => {\n if (existsSync(PATH_TO_ARTIFACT)) {\n rmSync(PATH_TO_ARTIFACT);\n }\n });\n\n test('saveToFile should save a file to specified tmp directory with expected data format', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n\n const expected = {\n lotr: {\n 'id-3021': {\n id: 'id-3021',\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n },\n };\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(resultingJSON.lotr).toEqual(expected.lotr);\n });\n\n test('saveToFile should save a file with metadata', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(Object.keys(resultingJSON.meta)).toEqual([\n 'origin',\n 'exportedBy',\n 'exportDate',\n 'exportTool',\n 'exportToolVersion',\n ]);\n });\n});\n"],"mappings":"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"}
@@ -8,77 +8,61 @@ exports.escapeRegExp = escapeRegExp;
8
8
  exports.getRealmManagedUser = getRealmManagedUser;
9
9
  exports.getRealmName = getRealmName;
10
10
  exports.isEqualJson = isEqualJson;
11
+ exports.isValidUrl = isValidUrl;
11
12
  exports.readFiles = readFiles;
12
13
  exports.replaceAll = replaceAll;
13
14
  exports.substituteEnvParams = substituteEnvParams;
14
15
  exports.unSubstituteEnvParams = unSubstituteEnvParams;
15
-
16
- var _SessionStorage = _interopRequireDefault(require("../../storage/SessionStorage"));
17
-
18
- var global = _interopRequireWildcard(require("../../storage/StaticStorage"));
19
-
16
+ var state = _interopRequireWildcard(require("../../shared/State"));
17
+ var globalConfig = _interopRequireWildcard(require("../../storage/StaticStorage"));
20
18
  var _ApiUtils = require("../../api/utils/ApiUtils");
21
-
22
19
  var _promises = require("fs/promises");
23
-
24
20
  var _path = require("path");
25
-
26
21
  var _replaceall = _interopRequireDefault(require("replaceall"));
27
-
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
-
30
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
25
  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); } }
35
-
36
26
  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); }); }; }
37
-
38
27
  // TODO: do we really need this? if yes: document
39
28
  function escapeRegExp(str) {
40
29
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
41
- } // TODO: do we really need this? if yes: document
42
-
30
+ }
43
31
 
32
+ // TODO: do we really need this? if yes: document
44
33
  function replaceAll(str, find, replace) {
45
34
  return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
46
35
  }
36
+
47
37
  /**
48
38
  * Get new name when names collide
49
39
  * @param {String} name to apply policy to
50
40
  * @returns {String} new name according to policy
51
41
  */
52
-
53
-
54
42
  function applyNameCollisionPolicy(name) {
55
43
  var capturingRegex = /(.* - imported) \(([0-9]+)\)/;
56
44
  var found = name.match(capturingRegex);
57
-
58
45
  if (found && found.length > 0 && found.length === 3) {
59
46
  // already renamed one or more times
60
47
  // return the next number
61
48
  return "".concat(found[1], " (").concat(parseInt(found[2], 10) + 1, ")");
62
- } // first time
63
-
64
-
49
+ }
50
+ // first time
65
51
  return "".concat(name, " - imported (1)");
66
52
  }
53
+
67
54
  /**
68
55
  * Get the name of the managed user object for the current realm
69
56
  * @returns {String} the name of the managed user object for the current realm
70
57
  */
71
-
72
-
73
58
  function getRealmManagedUser() {
74
59
  var realmManagedUser = 'user';
75
-
76
- if (_SessionStorage.default.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY) {
60
+ if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {
77
61
  realmManagedUser = "".concat((0, _ApiUtils.getCurrentRealmName)(), "_user");
78
62
  }
79
-
80
63
  return realmManagedUser;
81
64
  }
65
+
82
66
  /**
83
67
  * Compare two json objects
84
68
  * @param {Object} obj1 object 1
@@ -86,17 +70,13 @@ function getRealmManagedUser() {
86
70
  * @param {[String]} ignoreKeys array of keys to ignore in comparison
87
71
  * @returns {boolean} true if the two json objects have the same length and all the properties have the same value
88
72
  */
89
-
90
-
91
73
  function isEqualJson(obj1, obj2) {
92
74
  var ignoreKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
93
75
  var obj1Keys = Object.keys(obj1).filter(key => !ignoreKeys.includes(key));
94
76
  var obj2Keys = Object.keys(obj2).filter(key => !ignoreKeys.includes(key));
95
-
96
77
  if (obj1Keys.length !== obj2Keys.length) {
97
78
  return false;
98
79
  }
99
-
100
80
  for (var objKey of obj1Keys) {
101
81
  if (obj1[objKey] !== obj2[objKey]) {
102
82
  if (typeof obj1[objKey] === 'object' && typeof obj2[objKey] === 'object') {
@@ -108,19 +88,18 @@ function isEqualJson(obj1, obj2) {
108
88
  }
109
89
  }
110
90
  }
111
-
112
91
  return true;
113
92
  }
93
+
114
94
  /**
115
95
  * Get current realm name
116
96
  * @param {String} realm realm
117
97
  * @returns {String} name of the realm. /alpha -> alpha
118
98
  */
119
-
120
-
121
99
  function getRealmName(realm) {
122
100
  return (0, _ApiUtils.getRealmName)(realm);
123
101
  }
102
+
124
103
  /**
125
104
  * find all (nested) files in a directory
126
105
  *
@@ -128,12 +107,9 @@ function getRealmName(realm) {
128
107
  * @param childDirectory subdirectory to search
129
108
  * @returns list of files
130
109
  */
131
-
132
-
133
110
  function readFiles(_x) {
134
111
  return _readFiles.apply(this, arguments);
135
112
  }
136
-
137
113
  function _readFiles() {
138
114
  _readFiles = _asyncToGenerator(function* (baseDirectory) {
139
115
  var childDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
@@ -144,17 +120,14 @@ function _readFiles() {
144
120
  var _ref = _asyncToGenerator(function* (childPath) {
145
121
  var path = (0, _path.join)(baseDirectory, childPath);
146
122
  var isDirectory = (yield (0, _promises.lstat)(path)).isDirectory();
147
-
148
123
  if (isDirectory) {
149
124
  return readFiles(baseDirectory, childPath);
150
125
  }
151
-
152
126
  return {
153
127
  path: childPath,
154
128
  content: yield (0, _promises.readFile)(path, 'utf8')
155
129
  };
156
130
  });
157
-
158
131
  return function (_x2) {
159
132
  return _ref.apply(this, arguments);
160
133
  };
@@ -163,18 +136,29 @@ function _readFiles() {
163
136
  });
164
137
  return _readFiles.apply(this, arguments);
165
138
  }
166
-
167
139
  function substituteEnvParams(input, reader) {
168
140
  reader.each((key, value) => {
169
141
  input = (0, _replaceall.default)(value, "${".concat(key, "}"), input);
170
142
  });
171
143
  return input;
172
144
  }
173
-
174
145
  function unSubstituteEnvParams(input, reader) {
175
146
  reader.each((key, value) => {
176
147
  input = (0, _replaceall.default)("${".concat(key, "}"), value, input);
177
148
  });
178
149
  return input;
179
150
  }
151
+
152
+ /**
153
+ * Check if a string is a valid URL
154
+ * @param {string} urlString input string to be evaluated
155
+ * @returns {boolean} true if a valid URL, false otherwise
156
+ */
157
+ function isValidUrl(urlString) {
158
+ try {
159
+ return Boolean(new URL(urlString));
160
+ } catch (error) {
161
+ return false;
162
+ }
163
+ }
180
164
  //# sourceMappingURL=OpsUtils.js.map