@rockcarver/frodo-lib 0.16.2-9 → 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 (355) hide show
  1. package/CHANGELOG.md +217 -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 +16 -67
  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 +5 -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 +2 -159
  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 +139 -370
  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 +11 -107
  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 +26 -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 +161 -83
  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/ServerInfoApi/getServerInfo/info.json +25 -0
  158. package/cjs/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  159. package/cjs/utils/AutoSetupPolly.js +79 -0
  160. package/cjs/utils/AutoSetupPolly.js.map +1 -0
  161. package/cjs/utils/SetupJest.js +6 -0
  162. package/cjs/utils/SetupJest.js.map +1 -0
  163. package/cjs/{test/mocks → utils}/snapshotResolve.js +10 -12
  164. package/cjs/utils/snapshotResolve.js.map +1 -0
  165. package/esm/api/AgentApi.mjs +19 -21
  166. package/esm/api/AgentApi.test.mjs +6 -15
  167. package/esm/api/ApiTypes.mjs +0 -5
  168. package/esm/api/AuthenticateApi.mjs +7 -10
  169. package/esm/api/AuthenticateApi.test.mjs +39 -0
  170. package/esm/api/BaseApi.mjs +96 -81
  171. package/esm/api/CirclesOfTrustApi.mjs +9 -12
  172. package/esm/api/IdmConfigApi.mjs +11 -12
  173. package/esm/api/LogApi.mjs +6 -10
  174. package/esm/api/ManagedObjectApi.mjs +23 -8
  175. package/esm/api/NodeApi.mjs +13 -15
  176. package/esm/api/NodeApi.test.mjs +13 -17
  177. package/esm/api/OAuth2ClientApi.mjs +7 -9
  178. package/esm/api/OAuth2OIDCApi.mjs +15 -9
  179. package/esm/api/OAuth2OIDCApi.test.mjs +53 -0
  180. package/esm/api/OAuth2ProviderApi.mjs +3 -5
  181. package/esm/api/RealmApi.mjs +10 -13
  182. package/esm/api/Saml2Api.mjs +25 -29
  183. package/esm/api/ScriptApi.mjs +9 -11
  184. package/esm/api/SecretsApi.mjs +21 -24
  185. package/esm/api/SecretsApi.test.mjs +9 -31
  186. package/esm/api/ServerInfoApi.mjs +5 -9
  187. package/esm/api/ServiceApi.mjs +53 -26
  188. package/esm/api/SocialIdentityProvidersApi.mjs +11 -13
  189. package/esm/api/StartupApi.mjs +5 -10
  190. package/esm/api/StartupApi.test.mjs +4 -7
  191. package/esm/api/TreeApi.mjs +9 -11
  192. package/esm/api/TreeApi.test.mjs +24 -61
  193. package/esm/api/VariablesApi.mjs +11 -13
  194. package/esm/api/VariablesApi.test.mjs +80 -222
  195. package/esm/api/utils/ApiUtils.mjs +45 -48
  196. package/esm/api/utils/ApiUtils.test.mjs +33 -32
  197. package/esm/api/utils/Base64.mjs +5 -9
  198. package/esm/ext/axios-curlirize/curlirize.mjs +2 -7
  199. package/esm/ext/axios-curlirize/lib/CurlHelper.mjs +7 -20
  200. package/esm/index.mjs +23 -13
  201. package/esm/ops/AdminOps.mjs +33 -119
  202. package/esm/ops/AgentOps.mjs +37 -80
  203. package/esm/ops/AgentOps.test.mjs +5 -45
  204. package/esm/ops/AuthenticateOps.mjs +241 -175
  205. package/esm/ops/AuthenticateOps.test.mjs +7 -9
  206. package/esm/ops/CirclesOfTrustOps.mjs +24 -61
  207. package/esm/ops/ConnectionProfileOps.mjs +192 -82
  208. package/esm/ops/ConnectionProfileOps.test.mjs +19 -19
  209. package/esm/ops/EmailTemplateOps.mjs +18 -276
  210. package/esm/ops/EmailTemplateOps.test.mjs +19 -44
  211. package/esm/ops/IdmOps.mjs +30 -327
  212. package/esm/ops/IdmOps.test.mjs +47 -54
  213. package/esm/ops/IdpOps.mjs +21 -59
  214. package/esm/ops/IdpOps.test.mjs +5 -5
  215. package/esm/ops/JoseOps.mjs +41 -0
  216. package/esm/ops/JoseOps.test.mjs +137 -0
  217. package/esm/ops/JourneyOps.mjs +146 -289
  218. package/esm/ops/JourneyOps.test.mjs +29 -27
  219. package/esm/ops/LogOps.mjs +15 -25
  220. package/esm/ops/ManagedObjectOps.mjs +6 -6
  221. package/esm/ops/NodeOps.mjs +9 -47
  222. package/esm/ops/OAuth2ClientOps.mjs +13 -19
  223. package/esm/ops/OpsTypes.mjs +1 -3
  224. package/esm/ops/OrganizationOps.mjs +7 -14
  225. package/esm/ops/RealmOps.mjs +4 -7
  226. package/esm/ops/Saml2Ops.mjs +28 -62
  227. package/esm/ops/Saml2Ops.test.mjs +20 -23
  228. package/esm/ops/ScriptOps.mjs +29 -47
  229. package/esm/ops/SecretsOps.mjs +15 -31
  230. package/esm/ops/ServiceAccountOps.mjs +41 -0
  231. package/esm/ops/ServiceAccountOps.test.mjs +51 -0
  232. package/esm/ops/ServiceOps.mjs +66 -83
  233. package/esm/ops/StartupOps.mjs +4 -13
  234. package/esm/ops/ThemeOps.mjs +189 -298
  235. package/esm/{api/ThemeApi.test.mjs → ops/ThemeOps.test.mjs} +91 -96
  236. package/esm/ops/VariablesOps.mjs +9 -18
  237. package/esm/ops/utils/Console.mjs +28 -46
  238. package/esm/ops/utils/DataProtection.mjs +15 -28
  239. package/esm/ops/utils/DataProtection.test.mjs +8 -8
  240. package/esm/ops/utils/ExportImportUtils.mjs +34 -43
  241. package/esm/ops/utils/ExportImportUtils.test.mjs +20 -18
  242. package/esm/ops/utils/OpsUtils.mjs +27 -21
  243. package/esm/ops/utils/OpsUtils.test.mjs +155 -27
  244. package/esm/ops/utils/ValidationUtils.mjs +0 -9
  245. package/esm/ops/utils/Version.mjs +2 -3
  246. package/esm/ops/utils/Version.test.mjs +0 -2
  247. package/esm/ops/utils/Wordwrap.mjs +1 -1
  248. package/esm/ops/utils/Wordwrap.test.mjs +19 -0
  249. package/esm/shared/State.mjs +164 -0
  250. package/esm/shared/State.test.mjs +249 -0
  251. package/esm/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  252. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +147 -31
  253. package/esm/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  254. package/esm/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  255. package/esm/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  256. package/esm/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  257. package/esm/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  258. package/esm/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  259. package/esm/utils/AutoSetupPolly.mjs +72 -0
  260. package/esm/utils/SetupJest.mjs +3 -0
  261. package/esm/{test/mocks → utils}/snapshotResolve.mjs +10 -12
  262. package/package.json +36 -26
  263. package/types/api/AgentApi.d.ts.map +1 -1
  264. package/types/api/ApiTypes.d.ts +15 -16
  265. package/types/api/ApiTypes.d.ts.map +1 -1
  266. package/types/api/AuthenticateApi.d.ts +1 -1
  267. package/types/api/AuthenticateApi.d.ts.map +1 -1
  268. package/types/api/BaseApi.d.ts +2 -0
  269. package/types/api/BaseApi.d.ts.map +1 -1
  270. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  271. package/types/api/IdmConfigApi.d.ts.map +1 -1
  272. package/types/api/LogApi.d.ts.map +1 -1
  273. package/types/api/ManagedObjectApi.d.ts +9 -1
  274. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  275. package/types/api/NodeApi.d.ts.map +1 -1
  276. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  277. package/types/api/OAuth2OIDCApi.d.ts +4 -2
  278. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  279. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  280. package/types/api/RealmApi.d.ts.map +1 -1
  281. package/types/api/Saml2Api.d.ts.map +1 -1
  282. package/types/api/ScriptApi.d.ts.map +1 -1
  283. package/types/api/SecretsApi.d.ts.map +1 -1
  284. package/types/api/ServerInfoApi.d.ts.map +1 -1
  285. package/types/api/ServiceApi.d.ts +14 -7
  286. package/types/api/ServiceApi.d.ts.map +1 -1
  287. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  288. package/types/api/StartupApi.d.ts.map +1 -1
  289. package/types/api/TreeApi.d.ts.map +1 -1
  290. package/types/api/VariablesApi.d.ts.map +1 -1
  291. package/types/api/utils/ApiUtils.d.ts +1 -0
  292. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  293. package/types/index.d.ts +11 -5
  294. package/types/index.d.ts.map +1 -1
  295. package/types/ops/AuthenticateOps.d.ts +10 -2
  296. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  297. package/types/ops/ConnectionProfileOps.d.ts +49 -21
  298. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  299. package/types/ops/EmailTemplateOps.d.ts +14 -33
  300. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  301. package/types/ops/IdmOps.d.ts +29 -37
  302. package/types/ops/IdmOps.d.ts.map +1 -1
  303. package/types/ops/JoseOps.d.ts +33 -0
  304. package/types/ops/JoseOps.d.ts.map +1 -0
  305. package/types/ops/JourneyOps.d.ts.map +1 -1
  306. package/types/ops/LogOps.d.ts.map +1 -1
  307. package/types/ops/NodeOps.d.ts.map +1 -1
  308. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  309. package/types/ops/OpsTypes.d.ts +1 -1
  310. package/types/ops/OpsTypes.d.ts.map +1 -1
  311. package/types/ops/OrganizationOps.d.ts.map +1 -1
  312. package/types/ops/ScriptOps.d.ts.map +1 -1
  313. package/types/ops/ServiceAccountOps.d.ts +20 -0
  314. package/types/ops/ServiceAccountOps.d.ts.map +1 -0
  315. package/types/ops/ServiceOps.d.ts +18 -10
  316. package/types/ops/ServiceOps.d.ts.map +1 -1
  317. package/types/ops/ThemeOps.d.ts +35 -50
  318. package/types/ops/ThemeOps.d.ts.map +1 -1
  319. package/types/ops/utils/Console.d.ts +1 -1
  320. package/types/ops/utils/Console.d.ts.map +1 -1
  321. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  322. package/types/ops/utils/ExportImportUtils.d.ts +5 -2
  323. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  324. package/types/ops/utils/OpsUtils.d.ts +6 -0
  325. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  326. package/types/ops/utils/Wordwrap.d.ts.map +1 -1
  327. package/types/shared/State.d.ts +223 -0
  328. package/types/shared/State.d.ts.map +1 -0
  329. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +19 -1
  330. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
  331. package/types/utils/AutoSetupPolly.d.ts +1 -0
  332. package/types/utils/AutoSetupPolly.d.ts.map +1 -0
  333. package/types/utils/SetupJest.d.ts +1 -0
  334. package/types/utils/SetupJest.d.ts.map +1 -0
  335. package/types/utils/snapshotResolve.d.ts +1 -0
  336. package/types/utils/snapshotResolve.d.ts.map +1 -0
  337. package/cjs/api/EmailTemplateApi.js +0 -73
  338. package/cjs/api/EmailTemplateApi.js.map +0 -1
  339. package/cjs/api/ThemeApi.js +0 -367
  340. package/cjs/api/ThemeApi.js.map +0 -1
  341. package/cjs/api/ThemeApi.test.js.map +0 -1
  342. package/cjs/storage/SessionStorage.js +0 -91
  343. package/cjs/storage/SessionStorage.js.map +0 -1
  344. package/cjs/test/mocks/snapshotResolve.js.map +0 -1
  345. package/esm/api/EmailTemplateApi.mjs +0 -34
  346. package/esm/api/ThemeApi.mjs +0 -271
  347. package/esm/storage/SessionStorage.mjs +0 -79
  348. package/types/api/EmailTemplateApi.d.ts +0 -22
  349. package/types/api/EmailTemplateApi.d.ts.map +0 -1
  350. package/types/api/ThemeApi.d.ts +0 -56
  351. package/types/api/ThemeApi.d.ts.map +0 -1
  352. package/types/storage/SessionStorage.d.ts +0 -71
  353. package/types/storage/SessionStorage.d.ts.map +0 -1
  354. package/types/test/mocks/snapshotResolve.d.ts +0 -1
  355. package/types/test/mocks/snapshotResolve.d.ts.map +0 -1
@@ -9,33 +9,24 @@ exports.isCloudOnlyNode = isCloudOnlyNode;
9
9
  exports.isCustomNode = isCustomNode;
10
10
  exports.isPremiumNode = isPremiumNode;
11
11
  exports.removeOrphanedNodes = removeOrphanedNodes;
12
-
13
12
  var _lodash = _interopRequireDefault(require("lodash"));
14
-
15
- var _SessionStorage = _interopRequireDefault(require("../storage/SessionStorage"));
16
-
13
+ var state = _interopRequireWildcard(require("../shared/State"));
17
14
  var _NodeApi = require("../api/NodeApi");
18
-
19
15
  var _TreeApi = require("../api/TreeApi");
20
-
21
16
  var _Console = require("./utils/Console");
22
-
23
17
  var _Saml2Api = require("../api/Saml2Api");
24
-
25
18
  var _Base = require("../api/utils/Base64");
26
-
27
19
  var _OpsTypes = require("./OpsTypes");
28
-
20
+ 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); }
21
+ 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; }
29
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
-
31
23
  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); } }
32
-
33
24
  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); }); }; }
34
-
35
25
  var containerNodes = ['PageNode', 'CustomPageNode'];
36
26
  var scriptedNodes = ['ConfigProviderNode', 'ScriptedDecisionNode', 'ClientScriptNode', 'SocialProviderHandlerNode', 'CustomScriptNode'];
37
27
  var emailTemplateNodes = ['EmailSuspendNode', 'EmailTemplateNode'];
38
28
  var emptyScriptPlaceholder = '[Empty]';
29
+
39
30
  /**
40
31
  * Helper to get all SAML2 dependencies for a given node object
41
32
  * @param {Object} nodeObject node object
@@ -43,7 +34,6 @@ var emptyScriptPlaceholder = '[Empty]';
43
34
  * @param {[Object]} allCirclesOfTrust array of all circle of trust objects
44
35
  * @returns {Promise} a promise that resolves to an object containing a saml2 dependencies
45
36
  */
46
-
47
37
  function getSaml2NodeDependencies(_x, _x2, _x3) {
48
38
  return _getSaml2NodeDependencies.apply(this, arguments);
49
39
  }
@@ -51,21 +41,16 @@ function getSaml2NodeDependencies(_x, _x2, _x3) {
51
41
  * Find all node configuration objects that are no longer referenced by any tree
52
42
  * @returns {Promise<unknown[]>} a promise that resolves to an array of orphaned nodes
53
43
  */
54
-
55
-
56
44
  function _getSaml2NodeDependencies() {
57
45
  _getSaml2NodeDependencies = _asyncToGenerator(function* (nodeObject, allProviders, allCirclesOfTrust) {
58
46
  var samlProperties = ['metaAlias', 'idpEntityId'];
59
47
  var saml2EntityPromises = [];
60
-
61
48
  for (var samlProperty of samlProperties) {
62
49
  // In the following line nodeObject[samlProperty] will look like '/alpha/iSPAzure'.
63
50
  var entityId = samlProperty === 'metaAlias' ? _lodash.default.last(nodeObject[samlProperty].split('/')) : nodeObject[samlProperty];
64
-
65
51
  var entity = _lodash.default.find(allProviders, {
66
52
  entityId
67
53
  });
68
-
69
54
  if (entity) {
70
55
  try {
71
56
  var providerResponse = yield (0, _Saml2Api.getProviderByLocationAndId)(entity.location, entity._id);
@@ -75,46 +60,36 @@ function _getSaml2NodeDependencies() {
75
60
  * from the config before importing see updateSaml2Entity and createSaml2Entity functions).
76
61
  * Importing a remote saml2 entity is a slightly different request (see createSaml2Entity).
77
62
  */
78
-
79
63
  providerResponse.entityLocation = entity.location;
80
-
81
64
  if (entity.location === 'remote') {
82
65
  // get the xml representation of this entity and add it to the entityResponse;
83
66
  var metaDataResponse = yield (0, _Saml2Api.getProviderMetadata)(providerResponse.entityId);
84
67
  providerResponse.base64EntityXML = (0, _Base.encodeBase64Url)(metaDataResponse);
85
68
  }
86
-
87
69
  saml2EntityPromises.push(providerResponse);
88
70
  } catch (error) {
89
71
  (0, _Console.printMessage)(error.message, 'error');
90
72
  }
91
73
  }
92
74
  }
93
-
94
75
  try {
95
76
  var saml2EntitiesPromisesResults = yield Promise.all(saml2EntityPromises);
96
77
  var saml2Entities = [];
97
-
98
78
  for (var saml2Entity of saml2EntitiesPromisesResults) {
99
79
  if (saml2Entity) {
100
80
  saml2Entities.push(saml2Entity);
101
81
  }
102
82
  }
103
-
104
83
  var samlEntityIds = _lodash.default.map(saml2Entities, saml2EntityConfig => "".concat(saml2EntityConfig.entityId, "|saml2"));
105
-
106
84
  var circlesOfTrust = _lodash.default.filter(allCirclesOfTrust, circleOfTrust => {
107
85
  var hasEntityId = false;
108
-
109
86
  for (var trustedProvider of circleOfTrust.trustedProviders) {
110
87
  if (!hasEntityId && samlEntityIds.includes(trustedProvider)) {
111
88
  hasEntityId = true;
112
89
  }
113
90
  }
114
-
115
91
  return hasEntityId;
116
92
  });
117
-
118
93
  var saml2NodeDependencies = {
119
94
  saml2Entities,
120
95
  circlesOfTrust
@@ -131,7 +106,6 @@ function _getSaml2NodeDependencies() {
131
106
  });
132
107
  return _getSaml2NodeDependencies.apply(this, arguments);
133
108
  }
134
-
135
109
  function findOrphanedNodes() {
136
110
  return _findOrphanedNodes.apply(this, arguments);
137
111
  }
@@ -140,8 +114,6 @@ function findOrphanedNodes() {
140
114
  * @param {[Object]} orphanedNodes Pass in an array of orphaned node configuration objects to remove
141
115
  * @returns {Promise<unknown[]>} a promise that resolves to an array nodes that encountered errors deleting
142
116
  */
143
-
144
-
145
117
  function _findOrphanedNodes() {
146
118
  _findOrphanedNodes = _asyncToGenerator(function* () {
147
119
  var allNodes = [];
@@ -151,7 +123,6 @@ function _findOrphanedNodes() {
151
123
  var errorMessage = '';
152
124
  var errorTypes = [];
153
125
  (0, _Console.createProgressIndicator)(undefined, "Counting total nodes...", 'indeterminate');
154
-
155
126
  try {
156
127
  types = (yield (0, _NodeApi.getNodeTypes)()).result;
157
128
  } catch (error) {
@@ -159,12 +130,10 @@ function _findOrphanedNodes() {
159
130
  (0, _Console.printMessage)(error.response.data, 'error');
160
131
  return [];
161
132
  }
162
-
163
133
  for (var type of types) {
164
134
  try {
165
135
  // eslint-disable-next-line no-await-in-loop, no-loop-func
166
136
  var nodes = (yield (0, _NodeApi.getNodesByType)(type._id)).result;
167
-
168
137
  for (var node of nodes) {
169
138
  allNodes.push(node);
170
139
  (0, _Console.updateProgressIndicator)("".concat(allNodes.length, " total nodes").concat(errorMessage));
@@ -175,26 +144,21 @@ function _findOrphanedNodes() {
175
144
  (0, _Console.updateProgressIndicator)("".concat(allNodes.length, " total nodes").concat(errorMessage));
176
145
  }
177
146
  }
178
-
179
147
  if (errorTypes.length > 0) {
180
148
  (0, _Console.stopProgressIndicator)("".concat(allNodes.length, " total nodes").concat(errorMessage), 'warn');
181
149
  } else {
182
150
  (0, _Console.stopProgressIndicator)("".concat(allNodes.length, " total nodes"), 'success');
183
151
  }
184
-
185
152
  (0, _Console.createProgressIndicator)(undefined, 'Counting active nodes...', 'indeterminate');
186
153
  var activeNodes = [];
187
-
188
154
  for (var journey of allJourneys) {
189
155
  for (var nodeId in journey.nodes) {
190
156
  if ({}.hasOwnProperty.call(journey.nodes, nodeId)) {
191
157
  activeNodes.push(nodeId);
192
158
  (0, _Console.updateProgressIndicator)("".concat(activeNodes.length, " active nodes"));
193
159
  var _node = journey.nodes[nodeId];
194
-
195
160
  if (containerNodes.includes(_node.nodeType)) {
196
161
  var containerNode = yield (0, _NodeApi.getNode)(nodeId, _node.nodeType);
197
-
198
162
  for (var innerNode of containerNode.nodes) {
199
163
  activeNodes.push(innerNode._id);
200
164
  (0, _Console.updateProgressIndicator)("".concat(activeNodes.length, " active nodes"));
@@ -203,33 +167,26 @@ function _findOrphanedNodes() {
203
167
  }
204
168
  }
205
169
  }
206
-
207
170
  (0, _Console.stopProgressIndicator)("".concat(activeNodes.length, " active nodes"), 'success');
208
171
  (0, _Console.createProgressIndicator)(undefined, 'Calculating orphaned nodes...', 'indeterminate');
209
172
  var diff = allNodes.filter(x => !activeNodes.includes(x._id));
210
-
211
173
  for (var orphanedNode of diff) {
212
174
  orphanedNodes.push(orphanedNode);
213
175
  }
214
-
215
176
  (0, _Console.stopProgressIndicator)("".concat(orphanedNodes.length, " orphaned nodes"), 'success');
216
177
  return orphanedNodes;
217
178
  });
218
179
  return _findOrphanedNodes.apply(this, arguments);
219
180
  }
220
-
221
181
  function removeOrphanedNodes(_x4) {
222
182
  return _removeOrphanedNodes.apply(this, arguments);
223
183
  }
224
-
225
184
  function _removeOrphanedNodes() {
226
185
  _removeOrphanedNodes = _asyncToGenerator(function* (orphanedNodes) {
227
186
  var errorNodes = [];
228
187
  (0, _Console.createProgressIndicator)(orphanedNodes.length, 'Removing orphaned nodes...');
229
-
230
188
  for (var node of orphanedNodes) {
231
189
  (0, _Console.updateProgressIndicator)("Removing ".concat(node['_id'], "..."));
232
-
233
190
  try {
234
191
  // eslint-disable-next-line no-await-in-loop
235
192
  yield (0, _NodeApi.deleteNode)(node['_id'], node['_type']['_id']);
@@ -238,13 +195,11 @@ function _removeOrphanedNodes() {
238
195
  (0, _Console.printMessage)(" ".concat(deleteError), 'error');
239
196
  }
240
197
  }
241
-
242
198
  (0, _Console.stopProgressIndicator)("Removed ".concat(orphanedNodes.length, " orphaned nodes."));
243
199
  return errorNodes;
244
200
  });
245
201
  return _removeOrphanedNodes.apply(this, arguments);
246
202
  }
247
-
248
203
  var OOTB_NODE_TYPES_7 = ['AcceptTermsAndConditionsNode', 'AccountActiveDecisionNode', 'AccountLockoutNode', 'AgentDataStoreDecisionNode', 'AnonymousSessionUpgradeNode', 'AnonymousUserNode', 'AttributeCollectorNode', 'AttributePresentDecisionNode', 'AttributeValueDecisionNode', 'AuthLevelDecisionNode', 'ChoiceCollectorNode', 'ConsentNode', 'CookiePresenceDecisionNode', 'CreateObjectNode', 'CreatePasswordNode', 'DataStoreDecisionNode', 'DeviceGeoFencingNode', 'DeviceLocationMatchNode', 'DeviceMatchNode', 'DeviceProfileCollectorNode', 'DeviceSaveNode', 'DeviceTamperingVerificationNode', 'DisplayUserNameNode', 'EmailSuspendNode', 'EmailTemplateNode', 'IdentifyExistingUserNode', 'IncrementLoginCountNode', 'InnerTreeEvaluatorNode', 'IotAuthenticationNode', 'IotRegistrationNode', 'KbaCreateNode', 'KbaDecisionNode', 'KbaVerifyNode', 'LdapDecisionNode', 'LoginCountDecisionNode', 'MessageNode', 'MetadataNode', 'MeterNode', 'ModifyAuthLevelNode', 'OneTimePasswordCollectorDecisionNode', 'OneTimePasswordGeneratorNode', 'OneTimePasswordSmsSenderNode', 'OneTimePasswordSmtpSenderNode', 'PageNode', 'PasswordCollectorNode', 'PatchObjectNode', 'PersistentCookieDecisionNode', 'PollingWaitNode', 'ProfileCompletenessDecisionNode', 'ProvisionDynamicAccountNode', 'ProvisionIdmAccountNode', 'PushAuthenticationSenderNode', 'PushResultVerifierNode', 'QueryFilterDecisionNode', 'RecoveryCodeCollectorDecisionNode', 'RecoveryCodeDisplayNode', 'RegisterLogoutWebhookNode', 'RemoveSessionPropertiesNode', 'RequiredAttributesDecisionNode', 'RetryLimitDecisionNode', 'ScriptedDecisionNode', 'SelectIdPNode', 'SessionDataNode', 'SetFailureUrlNode', 'SetPersistentCookieNode', 'SetSessionPropertiesNode', 'SetSuccessUrlNode', 'SocialFacebookNode', 'SocialGoogleNode', 'SocialNode', 'SocialOAuthIgnoreProfileNode', 'SocialOpenIdConnectNode', 'SocialProviderHandlerNode', 'TermsAndConditionsDecisionNode', 'TimeSinceDecisionNode', 'TimerStartNode', 'TimerStopNode', 'UsernameCollectorNode', 'ValidatedPasswordNode', 'ValidatedUsernameNode', 'WebAuthnAuthenticationNode', 'WebAuthnDeviceStorageNode', 'WebAuthnRegistrationNode', 'ZeroPageLoginNode', 'product-CertificateCollectorNode', 'product-CertificateUserExtractorNode', 'product-CertificateValidationNode', 'product-KerberosNode', 'product-ReCaptchaNode', 'product-Saml2Node', 'product-WriteFederationInformationNode'];
249
204
  var OOTB_NODE_TYPES_7_1 = ['PushRegistrationNode', 'GetAuthenticatorAppNode', 'MultiFactorRegistrationOptionsNode', 'OptOutMultiFactorAuthenticationNode'].concat(OOTB_NODE_TYPES_7);
250
205
  var OOTB_NODE_TYPES_7_2 = ['OathRegistrationNode', 'OathTokenVerifierNode', 'PassthroughAuthenticationNode', 'ConfigProviderNode', 'DebugNode'].concat(OOTB_NODE_TYPES_7_1);
@@ -253,54 +208,47 @@ var OOTB_NODE_TYPES_6_5 = ['AbstractSocialAuthLoginNode', 'AccountLockoutNode',
253
208
  var OOTB_NODE_TYPES_6 = ['AbstractSocialAuthLoginNode', 'AccountLockoutNode', 'AgentDataStoreDecisionNode', 'AnonymousUserNode', 'AuthLevelDecisionNode', 'ChoiceCollectorNode', 'CookiePresenceDecisionNode', 'CreatePasswordNode', 'DataStoreDecisionNode', 'InnerTreeEvaluatorNode', 'LdapDecisionNode', 'MessageNode', 'MetadataNode', 'MeterNode', 'ModifyAuthLevelNode', 'OneTimePasswordCollectorDecisionNode', 'OneTimePasswordGeneratorNode', 'OneTimePasswordSmsSenderNode', 'OneTimePasswordSmtpSenderNode', 'PageNode', 'PasswordCollectorNode', 'PersistentCookieDecisionNode', 'PollingWaitNode', 'ProvisionDynamicAccountNode', 'ProvisionIdmAccountNode', 'PushAuthenticationSenderNode', 'PushResultVerifierNode', 'RecoveryCodeCollectorDecisionNode', 'RecoveryCodeDisplayNode', 'RegisterLogoutWebhookNode', 'RemoveSessionPropertiesNode', 'RetryLimitDecisionNode', 'ScriptedDecisionNode', 'SessionDataNode', 'SetFailureUrlNode', 'SetPersistentCookieNode', 'SetSessionPropertiesNode', 'SetSuccessUrlNode', 'SocialFacebookNode', 'SocialGoogleNode', 'SocialNode', 'SocialOAuthIgnoreProfileNode', 'SocialOpenIdConnectNode', 'TimerStartNode', 'TimerStopNode', 'UsernameCollectorNode', 'WebAuthnAuthenticationNode', 'WebAuthnRegistrationNode', 'ZeroPageLoginNode'];
254
209
  var CLOUD_ONLY_NODE_TYPES = ['IdentityStoreDecisionNode', 'AutonomousAccessSignalNode', 'AutonomousAccessDecisionNode', 'AutonomousAccessResultNode'];
255
210
  var PREMIUM_NODE_TYPES = ['AutonomousAccessSignalNode', 'AutonomousAccessDecisionNode', 'AutonomousAccessResultNode'];
211
+
256
212
  /**
257
213
  * Analyze if a node is a premium node.
258
214
  * @param {string} nodeType Node type
259
215
  * @returns {boolean} True if the node type is premium, false otherwise.
260
216
  */
261
-
262
217
  function isPremiumNode(nodeType) {
263
218
  return PREMIUM_NODE_TYPES.includes(nodeType);
264
219
  }
220
+
265
221
  /**
266
222
  * Analyze if a node is a cloud-only node.
267
223
  * @param {string} nodeType Node type
268
224
  * @returns {boolean} True if the node type is cloud-only, false otherwise.
269
225
  */
270
-
271
-
272
226
  function isCloudOnlyNode(nodeType) {
273
227
  return CLOUD_ONLY_NODE_TYPES.includes(nodeType);
274
228
  }
229
+
275
230
  /**
276
231
  * Analyze if a node is custom.
277
232
  * @param {string} nodeType Node type
278
233
  * @returns {boolean} True if the node type is custom, false otherwise.
279
234
  */
280
-
281
-
282
235
  function isCustomNode(nodeType) {
283
236
  var ootbNodeTypes = [];
284
-
285
- switch (_SessionStorage.default.session.getAmVersion()) {
237
+ switch (state.getAmVersion()) {
286
238
  case '7.1.0':
287
239
  ootbNodeTypes = OOTB_NODE_TYPES_7_1.slice(0);
288
240
  break;
289
-
290
241
  case '7.2.0':
291
242
  ootbNodeTypes = OOTB_NODE_TYPES_7_2.slice(0);
292
243
  break;
293
-
294
244
  case '7.3.0':
295
245
  ootbNodeTypes = OOTB_NODE_TYPES_7_3.slice(0);
296
246
  break;
297
-
298
247
  case '7.0.0':
299
248
  case '7.0.1':
300
249
  case '7.0.2':
301
250
  ootbNodeTypes = OOTB_NODE_TYPES_7.slice(0);
302
251
  break;
303
-
304
252
  case '6.5.3':
305
253
  case '6.5.2.3':
306
254
  case '6.5.2.2':
@@ -311,7 +259,6 @@ function isCustomNode(nodeType) {
311
259
  case '6.5.0.1':
312
260
  ootbNodeTypes = OOTB_NODE_TYPES_6_5.slice(0);
313
261
  break;
314
-
315
262
  case '6.0.0.7':
316
263
  case '6.0.0.6':
317
264
  case '6.0.0.5':
@@ -322,13 +269,12 @@ function isCustomNode(nodeType) {
322
269
  case '6.0.0':
323
270
  ootbNodeTypes = OOTB_NODE_TYPES_6.slice(0);
324
271
  break;
325
-
326
272
  default:
327
273
  return true;
328
274
  }
329
-
330
275
  return !ootbNodeTypes.includes(nodeType) && !isPremiumNode(nodeType) && !isCloudOnlyNode(nodeType);
331
276
  }
277
+
332
278
  /**
333
279
  * Get a node's classifications, which can be one or multiple of:
334
280
  * - standard: can run on any instance of a ForgeRock platform
@@ -337,14 +283,11 @@ function isCustomNode(nodeType) {
337
283
  * @param {string} nodeType Node type
338
284
  * @returns {NodeClassification[]} an array of one or multiple classifications
339
285
  */
340
-
341
-
342
286
  function getNodeClassification(nodeType) {
343
287
  var classifications = [];
344
288
  var premium = isPremiumNode(nodeType);
345
289
  var custom = isCustomNode(nodeType);
346
290
  var cloud = isCloudOnlyNode(nodeType);
347
-
348
291
  if (custom) {
349
292
  classifications.push(_OpsTypes.NodeClassification.CUSTOM);
350
293
  } else if (cloud) {
@@ -352,7 +295,6 @@ function getNodeClassification(nodeType) {
352
295
  } else {
353
296
  classifications.push(_OpsTypes.NodeClassification.STANDARD);
354
297
  }
355
-
356
298
  if (premium) classifications.push(_OpsTypes.NodeClassification.PREMIUM);
357
299
  return classifications;
358
300
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeOps.js","names":["containerNodes","scriptedNodes","emailTemplateNodes","emptyScriptPlaceholder","getSaml2NodeDependencies","nodeObject","allProviders","allCirclesOfTrust","samlProperties","saml2EntityPromises","samlProperty","entityId","_","last","split","entity","find","providerResponse","getProviderByLocationAndId","location","_id","entityLocation","metaDataResponse","getProviderMetadata","base64EntityXML","encodeBase64Url","push","error","printMessage","message","saml2EntitiesPromisesResults","Promise","all","saml2Entities","saml2Entity","samlEntityIds","map","saml2EntityConfig","circlesOfTrust","filter","circleOfTrust","hasEntityId","trustedProvider","trustedProviders","includes","saml2NodeDependencies","findOrphanedNodes","allNodes","orphanedNodes","types","allJourneys","getTrees","result","errorMessage","errorTypes","createProgressIndicator","undefined","getNodeTypes","response","data","type","nodes","getNodesByType","node","updateProgressIndicator","length","stopProgressIndicator","activeNodes","journey","nodeId","hasOwnProperty","call","nodeType","containerNode","getNode","innerNode","diff","x","orphanedNode","removeOrphanedNodes","errorNodes","deleteNode","deleteError","OOTB_NODE_TYPES_7","OOTB_NODE_TYPES_7_1","concat","OOTB_NODE_TYPES_7_2","OOTB_NODE_TYPES_7_3","OOTB_NODE_TYPES_6_5","OOTB_NODE_TYPES_6","CLOUD_ONLY_NODE_TYPES","PREMIUM_NODE_TYPES","isPremiumNode","isCloudOnlyNode","isCustomNode","ootbNodeTypes","storage","session","getAmVersion","slice","getNodeClassification","classifications","premium","custom","cloud","NodeClassification","CUSTOM","CLOUD","STANDARD","PREMIUM"],"sources":["ops/NodeOps.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n InnerNodeRefSkeletonInterface,\n NodeRefSkeletonInterface,\n NodeSkeleton,\n} from '../api/ApiTypes';\nimport storage from '../storage/SessionStorage';\nimport {\n getNode,\n deleteNode,\n getNodeTypes,\n getNodesByType,\n} from '../api/NodeApi';\nimport { getTrees } from '../api/TreeApi';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport {\n getProviderByLocationAndId,\n getProviderMetadata,\n} from '../api/Saml2Api';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { NodeClassification } from './OpsTypes';\n\nconst containerNodes = ['PageNode', 'CustomPageNode'];\n\nconst scriptedNodes = [\n 'ConfigProviderNode',\n 'ScriptedDecisionNode',\n 'ClientScriptNode',\n 'SocialProviderHandlerNode',\n 'CustomScriptNode',\n];\n\nconst emailTemplateNodes = ['EmailSuspendNode', 'EmailTemplateNode'];\n\nconst emptyScriptPlaceholder = '[Empty]';\n\n/**\n * Helper to get all SAML2 dependencies for a given node object\n * @param {Object} nodeObject node object\n * @param {[Object]} allProviders array of all saml2 providers objects\n * @param {[Object]} allCirclesOfTrust array of all circle of trust objects\n * @returns {Promise} a promise that resolves to an object containing a saml2 dependencies\n */\nasync function getSaml2NodeDependencies(\n nodeObject,\n allProviders,\n allCirclesOfTrust\n) {\n const samlProperties = ['metaAlias', 'idpEntityId'];\n const saml2EntityPromises = [];\n for (const samlProperty of samlProperties) {\n // In the following line nodeObject[samlProperty] will look like '/alpha/iSPAzure'.\n const entityId =\n samlProperty === 'metaAlias'\n ? _.last(nodeObject[samlProperty].split('/'))\n : nodeObject[samlProperty];\n const entity = _.find(allProviders, { entityId });\n if (entity) {\n try {\n const providerResponse = await getProviderByLocationAndId(\n entity.location,\n entity._id\n );\n /**\n * Adding entityLocation here to the entityResponse because the import tool\n * needs to know whether the saml2 entity is remote or not (this will be removed\n * from the config before importing see updateSaml2Entity and createSaml2Entity functions).\n * Importing a remote saml2 entity is a slightly different request (see createSaml2Entity).\n */\n providerResponse.entityLocation = entity.location;\n\n if (entity.location === 'remote') {\n // get the xml representation of this entity and add it to the entityResponse;\n const metaDataResponse = await getProviderMetadata(\n providerResponse.entityId\n );\n providerResponse.base64EntityXML = encodeBase64Url(metaDataResponse);\n }\n saml2EntityPromises.push(providerResponse);\n } catch (error) {\n printMessage(error.message, 'error');\n }\n }\n }\n try {\n const saml2EntitiesPromisesResults = await Promise.all(saml2EntityPromises);\n const saml2Entities = [];\n for (const saml2Entity of saml2EntitiesPromisesResults) {\n if (saml2Entity) {\n saml2Entities.push(saml2Entity);\n }\n }\n const samlEntityIds = _.map(\n saml2Entities,\n (saml2EntityConfig) => `${saml2EntityConfig.entityId}|saml2`\n );\n const circlesOfTrust = _.filter(allCirclesOfTrust, (circleOfTrust) => {\n let hasEntityId = false;\n for (const trustedProvider of circleOfTrust.trustedProviders) {\n if (!hasEntityId && samlEntityIds.includes(trustedProvider)) {\n hasEntityId = true;\n }\n }\n return hasEntityId;\n });\n const saml2NodeDependencies = {\n saml2Entities,\n circlesOfTrust,\n };\n return saml2NodeDependencies;\n } catch (error) {\n printMessage(error.message, 'error');\n const saml2NodeDependencies = {\n saml2Entities: [],\n circlesOfTrust: [],\n };\n return saml2NodeDependencies;\n }\n}\n\n/**\n * Find all node configuration objects that are no longer referenced by any tree\n * @returns {Promise<unknown[]>} a promise that resolves to an array of orphaned nodes\n */\nexport async function findOrphanedNodes(): Promise<unknown[]> {\n const allNodes = [];\n const orphanedNodes = [];\n let types = [];\n const allJourneys = (await getTrees()).result;\n let errorMessage = '';\n const errorTypes = [];\n\n createProgressIndicator(\n undefined,\n `Counting total nodes...`,\n 'indeterminate'\n );\n try {\n types = (await getNodeTypes()).result;\n } catch (error) {\n printMessage('Error retrieving all available node types:', 'error');\n printMessage(error.response.data, 'error');\n return [];\n }\n for (const type of types) {\n try {\n // eslint-disable-next-line no-await-in-loop, no-loop-func\n const nodes = (await getNodesByType(type._id)).result;\n for (const node of nodes) {\n allNodes.push(node);\n updateProgressIndicator(\n `${allNodes.length} total nodes${errorMessage}`\n );\n }\n } catch (error) {\n errorTypes.push(type._id);\n errorMessage = ` (Skipped type(s): ${errorTypes})`['yellow'];\n updateProgressIndicator(`${allNodes.length} total nodes${errorMessage}`);\n }\n }\n if (errorTypes.length > 0) {\n stopProgressIndicator(\n `${allNodes.length} total nodes${errorMessage}`,\n 'warn'\n );\n } else {\n stopProgressIndicator(`${allNodes.length} total nodes`, 'success');\n }\n\n createProgressIndicator(\n undefined,\n 'Counting active nodes...',\n 'indeterminate'\n );\n const activeNodes = [];\n for (const journey of allJourneys) {\n for (const nodeId in journey.nodes) {\n if ({}.hasOwnProperty.call(journey.nodes, nodeId)) {\n activeNodes.push(nodeId);\n updateProgressIndicator(`${activeNodes.length} active nodes`);\n const node = journey.nodes[nodeId];\n if (containerNodes.includes(node.nodeType)) {\n const containerNode = await getNode(nodeId, node.nodeType);\n for (const innerNode of containerNode.nodes) {\n activeNodes.push(innerNode._id);\n updateProgressIndicator(`${activeNodes.length} active nodes`);\n }\n }\n }\n }\n }\n stopProgressIndicator(`${activeNodes.length} active nodes`, 'success');\n\n createProgressIndicator(\n undefined,\n 'Calculating orphaned nodes...',\n 'indeterminate'\n );\n const diff = allNodes.filter((x) => !activeNodes.includes(x._id));\n for (const orphanedNode of diff) {\n orphanedNodes.push(orphanedNode);\n }\n stopProgressIndicator(`${orphanedNodes.length} orphaned nodes`, 'success');\n return orphanedNodes;\n}\n\n/**\n * Remove orphaned nodes\n * @param {[Object]} orphanedNodes Pass in an array of orphaned node configuration objects to remove\n * @returns {Promise<unknown[]>} a promise that resolves to an array nodes that encountered errors deleting\n */\nexport async function removeOrphanedNodes(\n orphanedNodes: unknown[]\n): Promise<unknown[]> {\n const errorNodes = [];\n createProgressIndicator(orphanedNodes.length, 'Removing orphaned nodes...');\n for (const node of orphanedNodes) {\n updateProgressIndicator(`Removing ${node['_id']}...`);\n try {\n // eslint-disable-next-line no-await-in-loop\n await deleteNode(node['_id'], node['_type']['_id']);\n } catch (deleteError) {\n errorNodes.push(node);\n printMessage(` ${deleteError}`, 'error');\n }\n }\n stopProgressIndicator(`Removed ${orphanedNodes.length} orphaned nodes.`);\n return errorNodes;\n}\n\nconst OOTB_NODE_TYPES_7 = [\n 'AcceptTermsAndConditionsNode',\n 'AccountActiveDecisionNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousSessionUpgradeNode',\n 'AnonymousUserNode',\n 'AttributeCollectorNode',\n 'AttributePresentDecisionNode',\n 'AttributeValueDecisionNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'ConsentNode',\n 'CookiePresenceDecisionNode',\n 'CreateObjectNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'DeviceGeoFencingNode',\n 'DeviceLocationMatchNode',\n 'DeviceMatchNode',\n 'DeviceProfileCollectorNode',\n 'DeviceSaveNode',\n 'DeviceTamperingVerificationNode',\n 'DisplayUserNameNode',\n 'EmailSuspendNode',\n 'EmailTemplateNode',\n 'IdentifyExistingUserNode',\n 'IncrementLoginCountNode',\n 'InnerTreeEvaluatorNode',\n 'IotAuthenticationNode',\n 'IotRegistrationNode',\n 'KbaCreateNode',\n 'KbaDecisionNode',\n 'KbaVerifyNode',\n 'LdapDecisionNode',\n 'LoginCountDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PatchObjectNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProfileCompletenessDecisionNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'QueryFilterDecisionNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RequiredAttributesDecisionNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SelectIdPNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'SocialProviderHandlerNode',\n 'TermsAndConditionsDecisionNode',\n 'TimeSinceDecisionNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'ValidatedPasswordNode',\n 'ValidatedUsernameNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnDeviceStorageNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n 'product-CertificateCollectorNode',\n 'product-CertificateUserExtractorNode',\n 'product-CertificateValidationNode',\n 'product-KerberosNode',\n 'product-ReCaptchaNode',\n 'product-Saml2Node',\n 'product-WriteFederationInformationNode',\n];\n\nconst OOTB_NODE_TYPES_7_1 = [\n 'PushRegistrationNode',\n 'GetAuthenticatorAppNode',\n 'MultiFactorRegistrationOptionsNode',\n 'OptOutMultiFactorAuthenticationNode',\n].concat(OOTB_NODE_TYPES_7);\n\nconst OOTB_NODE_TYPES_7_2 = [\n 'OathRegistrationNode',\n 'OathTokenVerifierNode',\n 'PassthroughAuthenticationNode',\n 'ConfigProviderNode',\n 'DebugNode',\n].concat(OOTB_NODE_TYPES_7_1);\n\nconst OOTB_NODE_TYPES_7_3 = [].concat(OOTB_NODE_TYPES_7_2);\n\nconst OOTB_NODE_TYPES_6_5 = [\n 'AbstractSocialAuthLoginNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousUserNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'CookiePresenceDecisionNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'InnerTreeEvaluatorNode',\n 'LdapDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n];\n\nconst OOTB_NODE_TYPES_6 = [\n 'AbstractSocialAuthLoginNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousUserNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'CookiePresenceDecisionNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'InnerTreeEvaluatorNode',\n 'LdapDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n];\n\nconst CLOUD_ONLY_NODE_TYPES = [\n 'IdentityStoreDecisionNode',\n 'AutonomousAccessSignalNode',\n 'AutonomousAccessDecisionNode',\n 'AutonomousAccessResultNode',\n];\n\nconst PREMIUM_NODE_TYPES = [\n 'AutonomousAccessSignalNode',\n 'AutonomousAccessDecisionNode',\n 'AutonomousAccessResultNode',\n];\n\n/**\n * Analyze if a node is a premium node.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is premium, false otherwise.\n */\nexport function isPremiumNode(nodeType: string): boolean {\n return PREMIUM_NODE_TYPES.includes(nodeType);\n}\n\n/**\n * Analyze if a node is a cloud-only node.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is cloud-only, false otherwise.\n */\nexport function isCloudOnlyNode(nodeType: string): boolean {\n return CLOUD_ONLY_NODE_TYPES.includes(nodeType);\n}\n\n/**\n * Analyze if a node is custom.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is custom, false otherwise.\n */\nexport function isCustomNode(nodeType: string): boolean {\n let ootbNodeTypes = [];\n switch (storage.session.getAmVersion()) {\n case '7.1.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_1.slice(0);\n break;\n case '7.2.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_2.slice(0);\n break;\n case '7.3.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_3.slice(0);\n break;\n case '7.0.0':\n case '7.0.1':\n case '7.0.2':\n ootbNodeTypes = OOTB_NODE_TYPES_7.slice(0);\n break;\n case '6.5.3':\n case '6.5.2.3':\n case '6.5.2.2':\n case '6.5.2.1':\n case '6.5.2':\n case '6.5.1':\n case '6.5.0.2':\n case '6.5.0.1':\n ootbNodeTypes = OOTB_NODE_TYPES_6_5.slice(0);\n break;\n case '6.0.0.7':\n case '6.0.0.6':\n case '6.0.0.5':\n case '6.0.0.4':\n case '6.0.0.3':\n case '6.0.0.2':\n case '6.0.0.1':\n case '6.0.0':\n ootbNodeTypes = OOTB_NODE_TYPES_6.slice(0);\n break;\n default:\n return true;\n }\n return (\n !ootbNodeTypes.includes(nodeType) &&\n !isPremiumNode(nodeType) &&\n !isCloudOnlyNode(nodeType)\n );\n}\n\n/**\n * Get a node's classifications, which can be one or multiple of:\n * - standard: can run on any instance of a ForgeRock platform\n * - cloud: utilize nodes, which are exclusively available in the ForgeRock Identity Cloud\n * - premium: utilizes nodes, which come at a premium\n * @param {string} nodeType Node type\n * @returns {NodeClassification[]} an array of one or multiple classifications\n */\nexport function getNodeClassification(nodeType: string): NodeClassification[] {\n const classifications: NodeClassification[] = [];\n const premium = isPremiumNode(nodeType);\n const custom = isCustomNode(nodeType);\n const cloud = isCloudOnlyNode(nodeType);\n if (custom) {\n classifications.push(NodeClassification.CUSTOM);\n } else if (cloud) {\n classifications.push(NodeClassification.CLOUD);\n } else {\n classifications.push(NodeClassification.STANDARD);\n }\n if (premium) classifications.push(NodeClassification.PREMIUM);\n return classifications;\n}\n"],"mappings":";;;;;;;;;;;;AAAA;;AAMA;;AACA;;AAMA;;AACA;;AAMA;;AAIA;;AACA;;;;;;;;AAEA,IAAMA,cAAc,GAAG,CAAC,UAAD,EAAa,gBAAb,CAAvB;AAEA,IAAMC,aAAa,GAAG,CACpB,oBADoB,EAEpB,sBAFoB,EAGpB,kBAHoB,EAIpB,2BAJoB,EAKpB,kBALoB,CAAtB;AAQA,IAAMC,kBAAkB,GAAG,CAAC,kBAAD,EAAqB,mBAArB,CAA3B;AAEA,IAAMC,sBAAsB,GAAG,SAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;SACeC,wB;;;AA6Ef;AACA;AACA;AACA;;;;gDAhFA,WACEC,UADF,EAEEC,YAFF,EAGEC,iBAHF,EAIE;IACA,IAAMC,cAAc,GAAG,CAAC,WAAD,EAAc,aAAd,CAAvB;IACA,IAAMC,mBAAmB,GAAG,EAA5B;;IACA,KAAK,IAAMC,YAAX,IAA2BF,cAA3B,EAA2C;MACzC;MACA,IAAMG,QAAQ,GACZD,YAAY,KAAK,WAAjB,GACIE,eAAA,CAAEC,IAAF,CAAOR,UAAU,CAACK,YAAD,CAAV,CAAyBI,KAAzB,CAA+B,GAA/B,CAAP,CADJ,GAEIT,UAAU,CAACK,YAAD,CAHhB;;MAIA,IAAMK,MAAM,GAAGH,eAAA,CAAEI,IAAF,CAAOV,YAAP,EAAqB;QAAEK;MAAF,CAArB,CAAf;;MACA,IAAII,MAAJ,EAAY;QACV,IAAI;UACF,IAAME,gBAAgB,SAAS,IAAAC,oCAAA,EAC7BH,MAAM,CAACI,QADsB,EAE7BJ,MAAM,CAACK,GAFsB,CAA/B;UAIA;AACR;AACA;AACA;AACA;AACA;;UACQH,gBAAgB,CAACI,cAAjB,GAAkCN,MAAM,CAACI,QAAzC;;UAEA,IAAIJ,MAAM,CAACI,QAAP,KAAoB,QAAxB,EAAkC;YAChC;YACA,IAAMG,gBAAgB,SAAS,IAAAC,6BAAA,EAC7BN,gBAAgB,CAACN,QADY,CAA/B;YAGAM,gBAAgB,CAACO,eAAjB,GAAmC,IAAAC,qBAAA,EAAgBH,gBAAhB,CAAnC;UACD;;UACDb,mBAAmB,CAACiB,IAApB,CAAyBT,gBAAzB;QACD,CArBD,CAqBE,OAAOU,KAAP,EAAc;UACd,IAAAC,qBAAA,EAAaD,KAAK,CAACE,OAAnB,EAA4B,OAA5B;QACD;MACF;IACF;;IACD,IAAI;MACF,IAAMC,4BAA4B,SAASC,OAAO,CAACC,GAAR,CAAYvB,mBAAZ,CAA3C;MACA,IAAMwB,aAAa,GAAG,EAAtB;;MACA,KAAK,IAAMC,WAAX,IAA0BJ,4BAA1B,EAAwD;QACtD,IAAII,WAAJ,EAAiB;UACfD,aAAa,CAACP,IAAd,CAAmBQ,WAAnB;QACD;MACF;;MACD,IAAMC,aAAa,GAAGvB,eAAA,CAAEwB,GAAF,CACpBH,aADoB,EAEnBI,iBAAD,cAA0BA,iBAAiB,CAAC1B,QAA5C,WAFoB,CAAtB;;MAIA,IAAM2B,cAAc,GAAG1B,eAAA,CAAE2B,MAAF,CAAShC,iBAAT,EAA6BiC,aAAD,IAAmB;QACpE,IAAIC,WAAW,GAAG,KAAlB;;QACA,KAAK,IAAMC,eAAX,IAA8BF,aAAa,CAACG,gBAA5C,EAA8D;UAC5D,IAAI,CAACF,WAAD,IAAgBN,aAAa,CAACS,QAAd,CAAuBF,eAAvB,CAApB,EAA6D;YAC3DD,WAAW,GAAG,IAAd;UACD;QACF;;QACD,OAAOA,WAAP;MACD,CARsB,CAAvB;;MASA,IAAMI,qBAAqB,GAAG;QAC5BZ,aAD4B;QAE5BK;MAF4B,CAA9B;MAIA,OAAOO,qBAAP;IACD,CA1BD,CA0BE,OAAOlB,KAAP,EAAc;MACd,IAAAC,qBAAA,EAAaD,KAAK,CAACE,OAAnB,EAA4B,OAA5B;MACA,IAAMgB,sBAAqB,GAAG;QAC5BZ,aAAa,EAAE,EADa;QAE5BK,cAAc,EAAE;MAFY,CAA9B;MAIA,OAAOO,sBAAP;IACD;EACF,C;;;;SAMqBC,iB;;;AAkFtB;AACA;AACA;AACA;AACA;;;;yCAtFO,aAAuD;IAC5D,IAAMC,QAAQ,GAAG,EAAjB;IACA,IAAMC,aAAa,GAAG,EAAtB;IACA,IAAIC,KAAK,GAAG,EAAZ;IACA,IAAMC,WAAW,GAAG,OAAO,IAAAC,iBAAA,GAAP,EAAmBC,MAAvC;IACA,IAAIC,YAAY,GAAG,EAAnB;IACA,IAAMC,UAAU,GAAG,EAAnB;IAEA,IAAAC,gCAAA,EACEC,SADF,6BAGE,eAHF;;IAKA,IAAI;MACFP,KAAK,GAAG,OAAO,IAAAQ,qBAAA,GAAP,EAAuBL,MAA/B;IACD,CAFD,CAEE,OAAOzB,KAAP,EAAc;MACd,IAAAC,qBAAA,EAAa,4CAAb,EAA2D,OAA3D;MACA,IAAAA,qBAAA,EAAaD,KAAK,CAAC+B,QAAN,CAAeC,IAA5B,EAAkC,OAAlC;MACA,OAAO,EAAP;IACD;;IACD,KAAK,IAAMC,IAAX,IAAmBX,KAAnB,EAA0B;MACxB,IAAI;QACF;QACA,IAAMY,KAAK,GAAG,OAAO,IAAAC,uBAAA,EAAeF,IAAI,CAACxC,GAApB,CAAP,EAAiCgC,MAA/C;;QACA,KAAK,IAAMW,IAAX,IAAmBF,KAAnB,EAA0B;UACxBd,QAAQ,CAACrB,IAAT,CAAcqC,IAAd;UACA,IAAAC,gCAAA,YACKjB,QAAQ,CAACkB,MADd,yBACmCZ,YADnC;QAGD;MACF,CATD,CASE,OAAO1B,KAAP,EAAc;QACd2B,UAAU,CAAC5B,IAAX,CAAgBkC,IAAI,CAACxC,GAArB;QACAiC,YAAY,GAAG,6BAAsBC,UAAtB,OAAoC,QAApC,CAAf;QACA,IAAAU,gCAAA,YAA2BjB,QAAQ,CAACkB,MAApC,yBAAyDZ,YAAzD;MACD;IACF;;IACD,IAAIC,UAAU,CAACW,MAAX,GAAoB,CAAxB,EAA2B;MACzB,IAAAC,8BAAA,YACKnB,QAAQ,CAACkB,MADd,yBACmCZ,YADnC,GAEE,MAFF;IAID,CALD,MAKO;MACL,IAAAa,8BAAA,YAAyBnB,QAAQ,CAACkB,MAAlC,mBAAwD,SAAxD;IACD;;IAED,IAAAV,gCAAA,EACEC,SADF,EAEE,0BAFF,EAGE,eAHF;IAKA,IAAMW,WAAW,GAAG,EAApB;;IACA,KAAK,IAAMC,OAAX,IAAsBlB,WAAtB,EAAmC;MACjC,KAAK,IAAMmB,MAAX,IAAqBD,OAAO,CAACP,KAA7B,EAAoC;QAClC,IAAI,GAAGS,cAAH,CAAkBC,IAAlB,CAAuBH,OAAO,CAACP,KAA/B,EAAsCQ,MAAtC,CAAJ,EAAmD;UACjDF,WAAW,CAACzC,IAAZ,CAAiB2C,MAAjB;UACA,IAAAL,gCAAA,YAA2BG,WAAW,CAACF,MAAvC;UACA,IAAMF,KAAI,GAAGK,OAAO,CAACP,KAAR,CAAcQ,MAAd,CAAb;;UACA,IAAIrE,cAAc,CAAC4C,QAAf,CAAwBmB,KAAI,CAACS,QAA7B,CAAJ,EAA4C;YAC1C,IAAMC,aAAa,SAAS,IAAAC,gBAAA,EAAQL,MAAR,EAAgBN,KAAI,CAACS,QAArB,CAA5B;;YACA,KAAK,IAAMG,SAAX,IAAwBF,aAAa,CAACZ,KAAtC,EAA6C;cAC3CM,WAAW,CAACzC,IAAZ,CAAiBiD,SAAS,CAACvD,GAA3B;cACA,IAAA4C,gCAAA,YAA2BG,WAAW,CAACF,MAAvC;YACD;UACF;QACF;MACF;IACF;;IACD,IAAAC,8BAAA,YAAyBC,WAAW,CAACF,MAArC,oBAA4D,SAA5D;IAEA,IAAAV,gCAAA,EACEC,SADF,EAEE,+BAFF,EAGE,eAHF;IAKA,IAAMoB,IAAI,GAAG7B,QAAQ,CAACR,MAAT,CAAiBsC,CAAD,IAAO,CAACV,WAAW,CAACvB,QAAZ,CAAqBiC,CAAC,CAACzD,GAAvB,CAAxB,CAAb;;IACA,KAAK,IAAM0D,YAAX,IAA2BF,IAA3B,EAAiC;MAC/B5B,aAAa,CAACtB,IAAd,CAAmBoD,YAAnB;IACD;;IACD,IAAAZ,8BAAA,YAAyBlB,aAAa,CAACiB,MAAvC,sBAAgE,SAAhE;IACA,OAAOjB,aAAP;EACD,C;;;;SAOqB+B,mB;;;;;2CAAf,WACL/B,aADK,EAEe;IACpB,IAAMgC,UAAU,GAAG,EAAnB;IACA,IAAAzB,gCAAA,EAAwBP,aAAa,CAACiB,MAAtC,EAA8C,4BAA9C;;IACA,KAAK,IAAMF,IAAX,IAAmBf,aAAnB,EAAkC;MAChC,IAAAgB,gCAAA,qBAAoCD,IAAI,CAAC,KAAD,CAAxC;;MACA,IAAI;QACF;QACA,MAAM,IAAAkB,mBAAA,EAAWlB,IAAI,CAAC,KAAD,CAAf,EAAwBA,IAAI,CAAC,OAAD,CAAJ,CAAc,KAAd,CAAxB,CAAN;MACD,CAHD,CAGE,OAAOmB,WAAP,EAAoB;QACpBF,UAAU,CAACtD,IAAX,CAAgBqC,IAAhB;QACA,IAAAnC,qBAAA,aAAiBsD,WAAjB,GAAgC,OAAhC;MACD;IACF;;IACD,IAAAhB,8BAAA,oBAAiClB,aAAa,CAACiB,MAA/C;IACA,OAAOe,UAAP;EACD,C;;;;AAED,IAAMG,iBAAiB,GAAG,CACxB,8BADwB,EAExB,2BAFwB,EAGxB,oBAHwB,EAIxB,4BAJwB,EAKxB,6BALwB,EAMxB,mBANwB,EAOxB,wBAPwB,EAQxB,8BARwB,EASxB,4BATwB,EAUxB,uBAVwB,EAWxB,qBAXwB,EAYxB,aAZwB,EAaxB,4BAbwB,EAcxB,kBAdwB,EAexB,oBAfwB,EAgBxB,uBAhBwB,EAiBxB,sBAjBwB,EAkBxB,yBAlBwB,EAmBxB,iBAnBwB,EAoBxB,4BApBwB,EAqBxB,gBArBwB,EAsBxB,iCAtBwB,EAuBxB,qBAvBwB,EAwBxB,kBAxBwB,EAyBxB,mBAzBwB,EA0BxB,0BA1BwB,EA2BxB,yBA3BwB,EA4BxB,wBA5BwB,EA6BxB,uBA7BwB,EA8BxB,qBA9BwB,EA+BxB,eA/BwB,EAgCxB,iBAhCwB,EAiCxB,eAjCwB,EAkCxB,kBAlCwB,EAmCxB,wBAnCwB,EAoCxB,aApCwB,EAqCxB,cArCwB,EAsCxB,WAtCwB,EAuCxB,qBAvCwB,EAwCxB,sCAxCwB,EAyCxB,8BAzCwB,EA0CxB,8BA1CwB,EA2CxB,+BA3CwB,EA4CxB,UA5CwB,EA6CxB,uBA7CwB,EA8CxB,iBA9CwB,EA+CxB,8BA/CwB,EAgDxB,iBAhDwB,EAiDxB,iCAjDwB,EAkDxB,6BAlDwB,EAmDxB,yBAnDwB,EAoDxB,8BApDwB,EAqDxB,wBArDwB,EAsDxB,yBAtDwB,EAuDxB,mCAvDwB,EAwDxB,yBAxDwB,EAyDxB,2BAzDwB,EA0DxB,6BA1DwB,EA2DxB,gCA3DwB,EA4DxB,wBA5DwB,EA6DxB,sBA7DwB,EA8DxB,eA9DwB,EA+DxB,iBA/DwB,EAgExB,mBAhEwB,EAiExB,yBAjEwB,EAkExB,0BAlEwB,EAmExB,mBAnEwB,EAoExB,oBApEwB,EAqExB,kBArEwB,EAsExB,YAtEwB,EAuExB,8BAvEwB,EAwExB,yBAxEwB,EAyExB,2BAzEwB,EA0ExB,gCA1EwB,EA2ExB,uBA3EwB,EA4ExB,gBA5EwB,EA6ExB,eA7EwB,EA8ExB,uBA9EwB,EA+ExB,uBA/EwB,EAgFxB,uBAhFwB,EAiFxB,4BAjFwB,EAkFxB,2BAlFwB,EAmFxB,0BAnFwB,EAoFxB,mBApFwB,EAqFxB,kCArFwB,EAsFxB,sCAtFwB,EAuFxB,mCAvFwB,EAwFxB,sBAxFwB,EAyFxB,uBAzFwB,EA0FxB,mBA1FwB,EA2FxB,wCA3FwB,CAA1B;AA8FA,IAAMC,mBAAmB,GAAG,CAC1B,sBAD0B,EAE1B,yBAF0B,EAG1B,oCAH0B,EAI1B,qCAJ0B,EAK1BC,MAL0B,CAKnBF,iBALmB,CAA5B;AAOA,IAAMG,mBAAmB,GAAG,CAC1B,sBAD0B,EAE1B,uBAF0B,EAG1B,+BAH0B,EAI1B,oBAJ0B,EAK1B,WAL0B,EAM1BD,MAN0B,CAMnBD,mBANmB,CAA5B;AAQA,IAAMG,mBAAmB,GAAG,GAAGF,MAAH,CAAUC,mBAAV,CAA5B;AAEA,IAAME,mBAAmB,GAAG,CAC1B,6BAD0B,EAE1B,oBAF0B,EAG1B,4BAH0B,EAI1B,mBAJ0B,EAK1B,uBAL0B,EAM1B,qBAN0B,EAO1B,4BAP0B,EAQ1B,oBAR0B,EAS1B,uBAT0B,EAU1B,wBAV0B,EAW1B,kBAX0B,EAY1B,aAZ0B,EAa1B,cAb0B,EAc1B,WAd0B,EAe1B,qBAf0B,EAgB1B,sCAhB0B,EAiB1B,8BAjB0B,EAkB1B,8BAlB0B,EAmB1B,+BAnB0B,EAoB1B,UApB0B,EAqB1B,uBArB0B,EAsB1B,8BAtB0B,EAuB1B,iBAvB0B,EAwB1B,6BAxB0B,EAyB1B,yBAzB0B,EA0B1B,8BA1B0B,EA2B1B,wBA3B0B,EA4B1B,mCA5B0B,EA6B1B,yBA7B0B,EA8B1B,2BA9B0B,EA+B1B,6BA/B0B,EAgC1B,wBAhC0B,EAiC1B,sBAjC0B,EAkC1B,iBAlC0B,EAmC1B,mBAnC0B,EAoC1B,yBApC0B,EAqC1B,0BArC0B,EAsC1B,mBAtC0B,EAuC1B,oBAvC0B,EAwC1B,kBAxC0B,EAyC1B,YAzC0B,EA0C1B,8BA1C0B,EA2C1B,yBA3C0B,EA4C1B,gBA5C0B,EA6C1B,eA7C0B,EA8C1B,uBA9C0B,EA+C1B,4BA/C0B,EAgD1B,0BAhD0B,EAiD1B,mBAjD0B,CAA5B;AAoDA,IAAMC,iBAAiB,GAAG,CACxB,6BADwB,EAExB,oBAFwB,EAGxB,4BAHwB,EAIxB,mBAJwB,EAKxB,uBALwB,EAMxB,qBANwB,EAOxB,4BAPwB,EAQxB,oBARwB,EASxB,uBATwB,EAUxB,wBAVwB,EAWxB,kBAXwB,EAYxB,aAZwB,EAaxB,cAbwB,EAcxB,WAdwB,EAexB,qBAfwB,EAgBxB,sCAhBwB,EAiBxB,8BAjBwB,EAkBxB,8BAlBwB,EAmBxB,+BAnBwB,EAoBxB,UApBwB,EAqBxB,uBArBwB,EAsBxB,8BAtBwB,EAuBxB,iBAvBwB,EAwBxB,6BAxBwB,EAyBxB,yBAzBwB,EA0BxB,8BA1BwB,EA2BxB,wBA3BwB,EA4BxB,mCA5BwB,EA6BxB,yBA7BwB,EA8BxB,2BA9BwB,EA+BxB,6BA/BwB,EAgCxB,wBAhCwB,EAiCxB,sBAjCwB,EAkCxB,iBAlCwB,EAmCxB,mBAnCwB,EAoCxB,yBApCwB,EAqCxB,0BArCwB,EAsCxB,mBAtCwB,EAuCxB,oBAvCwB,EAwCxB,kBAxCwB,EAyCxB,YAzCwB,EA0CxB,8BA1CwB,EA2CxB,yBA3CwB,EA4CxB,gBA5CwB,EA6CxB,eA7CwB,EA8CxB,uBA9CwB,EA+CxB,4BA/CwB,EAgDxB,0BAhDwB,EAiDxB,mBAjDwB,CAA1B;AAoDA,IAAMC,qBAAqB,GAAG,CAC5B,2BAD4B,EAE5B,4BAF4B,EAG5B,8BAH4B,EAI5B,4BAJ4B,CAA9B;AAOA,IAAMC,kBAAkB,GAAG,CACzB,4BADyB,EAEzB,8BAFyB,EAGzB,4BAHyB,CAA3B;AAMA;AACA;AACA;AACA;AACA;;AACO,SAASC,aAAT,CAAuBpB,QAAvB,EAAkD;EACvD,OAAOmB,kBAAkB,CAAC/C,QAAnB,CAA4B4B,QAA5B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASqB,eAAT,CAAyBrB,QAAzB,EAAoD;EACzD,OAAOkB,qBAAqB,CAAC9C,QAAtB,CAA+B4B,QAA/B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASsB,YAAT,CAAsBtB,QAAtB,EAAiD;EACtD,IAAIuB,aAAa,GAAG,EAApB;;EACA,QAAQC,uBAAA,CAAQC,OAAR,CAAgBC,YAAhB,EAAR;IACE,KAAK,OAAL;MACEH,aAAa,GAAGX,mBAAmB,CAACe,KAApB,CAA0B,CAA1B,CAAhB;MACA;;IACF,KAAK,OAAL;MACEJ,aAAa,GAAGT,mBAAmB,CAACa,KAApB,CAA0B,CAA1B,CAAhB;MACA;;IACF,KAAK,OAAL;MACEJ,aAAa,GAAGR,mBAAmB,CAACY,KAApB,CAA0B,CAA1B,CAAhB;MACA;;IACF,KAAK,OAAL;IACA,KAAK,OAAL;IACA,KAAK,OAAL;MACEJ,aAAa,GAAGZ,iBAAiB,CAACgB,KAAlB,CAAwB,CAAxB,CAAhB;MACA;;IACF,KAAK,OAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,OAAL;IACA,KAAK,OAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;MACEJ,aAAa,GAAGP,mBAAmB,CAACW,KAApB,CAA0B,CAA1B,CAAhB;MACA;;IACF,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,SAAL;IACA,KAAK,OAAL;MACEJ,aAAa,GAAGN,iBAAiB,CAACU,KAAlB,CAAwB,CAAxB,CAAhB;MACA;;IACF;MACE,OAAO,IAAP;EApCJ;;EAsCA,OACE,CAACJ,aAAa,CAACnD,QAAd,CAAuB4B,QAAvB,CAAD,IACA,CAACoB,aAAa,CAACpB,QAAD,CADd,IAEA,CAACqB,eAAe,CAACrB,QAAD,CAHlB;AAKD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAAS4B,qBAAT,CAA+B5B,QAA/B,EAAuE;EAC5E,IAAM6B,eAAqC,GAAG,EAA9C;EACA,IAAMC,OAAO,GAAGV,aAAa,CAACpB,QAAD,CAA7B;EACA,IAAM+B,MAAM,GAAGT,YAAY,CAACtB,QAAD,CAA3B;EACA,IAAMgC,KAAK,GAAGX,eAAe,CAACrB,QAAD,CAA7B;;EACA,IAAI+B,MAAJ,EAAY;IACVF,eAAe,CAAC3E,IAAhB,CAAqB+E,4BAAA,CAAmBC,MAAxC;EACD,CAFD,MAEO,IAAIF,KAAJ,EAAW;IAChBH,eAAe,CAAC3E,IAAhB,CAAqB+E,4BAAA,CAAmBE,KAAxC;EACD,CAFM,MAEA;IACLN,eAAe,CAAC3E,IAAhB,CAAqB+E,4BAAA,CAAmBG,QAAxC;EACD;;EACD,IAAIN,OAAJ,EAAaD,eAAe,CAAC3E,IAAhB,CAAqB+E,4BAAA,CAAmBI,OAAxC;EACb,OAAOR,eAAP;AACD"}
1
+ {"version":3,"file":"NodeOps.js","names":["containerNodes","scriptedNodes","emailTemplateNodes","emptyScriptPlaceholder","getSaml2NodeDependencies","nodeObject","allProviders","allCirclesOfTrust","samlProperties","saml2EntityPromises","samlProperty","entityId","_","last","split","entity","find","providerResponse","getProviderByLocationAndId","location","_id","entityLocation","metaDataResponse","getProviderMetadata","base64EntityXML","encodeBase64Url","push","error","printMessage","message","saml2EntitiesPromisesResults","Promise","all","saml2Entities","saml2Entity","samlEntityIds","map","saml2EntityConfig","circlesOfTrust","filter","circleOfTrust","hasEntityId","trustedProvider","trustedProviders","includes","saml2NodeDependencies","findOrphanedNodes","allNodes","orphanedNodes","types","allJourneys","getTrees","result","errorMessage","errorTypes","createProgressIndicator","undefined","getNodeTypes","response","data","type","nodes","getNodesByType","node","updateProgressIndicator","length","stopProgressIndicator","activeNodes","journey","nodeId","hasOwnProperty","call","nodeType","containerNode","getNode","innerNode","diff","x","orphanedNode","removeOrphanedNodes","errorNodes","deleteNode","deleteError","OOTB_NODE_TYPES_7","OOTB_NODE_TYPES_7_1","concat","OOTB_NODE_TYPES_7_2","OOTB_NODE_TYPES_7_3","OOTB_NODE_TYPES_6_5","OOTB_NODE_TYPES_6","CLOUD_ONLY_NODE_TYPES","PREMIUM_NODE_TYPES","isPremiumNode","isCloudOnlyNode","isCustomNode","ootbNodeTypes","state","getAmVersion","slice","getNodeClassification","classifications","premium","custom","cloud","NodeClassification","CUSTOM","CLOUD","STANDARD","PREMIUM"],"sources":["ops/NodeOps.ts"],"sourcesContent":["import _ from 'lodash';\nimport * as state from '../shared/State';\nimport {\n getNode,\n deleteNode,\n getNodeTypes,\n getNodesByType,\n} from '../api/NodeApi';\nimport { getTrees } from '../api/TreeApi';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport {\n getProviderByLocationAndId,\n getProviderMetadata,\n} from '../api/Saml2Api';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { NodeClassification } from './OpsTypes';\n\nconst containerNodes = ['PageNode', 'CustomPageNode'];\n\nconst scriptedNodes = [\n 'ConfigProviderNode',\n 'ScriptedDecisionNode',\n 'ClientScriptNode',\n 'SocialProviderHandlerNode',\n 'CustomScriptNode',\n];\n\nconst emailTemplateNodes = ['EmailSuspendNode', 'EmailTemplateNode'];\n\nconst emptyScriptPlaceholder = '[Empty]';\n\n/**\n * Helper to get all SAML2 dependencies for a given node object\n * @param {Object} nodeObject node object\n * @param {[Object]} allProviders array of all saml2 providers objects\n * @param {[Object]} allCirclesOfTrust array of all circle of trust objects\n * @returns {Promise} a promise that resolves to an object containing a saml2 dependencies\n */\nasync function getSaml2NodeDependencies(\n nodeObject,\n allProviders,\n allCirclesOfTrust\n) {\n const samlProperties = ['metaAlias', 'idpEntityId'];\n const saml2EntityPromises = [];\n for (const samlProperty of samlProperties) {\n // In the following line nodeObject[samlProperty] will look like '/alpha/iSPAzure'.\n const entityId =\n samlProperty === 'metaAlias'\n ? _.last(nodeObject[samlProperty].split('/'))\n : nodeObject[samlProperty];\n const entity = _.find(allProviders, { entityId });\n if (entity) {\n try {\n const providerResponse = await getProviderByLocationAndId(\n entity.location,\n entity._id\n );\n /**\n * Adding entityLocation here to the entityResponse because the import tool\n * needs to know whether the saml2 entity is remote or not (this will be removed\n * from the config before importing see updateSaml2Entity and createSaml2Entity functions).\n * Importing a remote saml2 entity is a slightly different request (see createSaml2Entity).\n */\n providerResponse.entityLocation = entity.location;\n\n if (entity.location === 'remote') {\n // get the xml representation of this entity and add it to the entityResponse;\n const metaDataResponse = await getProviderMetadata(\n providerResponse.entityId\n );\n providerResponse.base64EntityXML = encodeBase64Url(metaDataResponse);\n }\n saml2EntityPromises.push(providerResponse);\n } catch (error) {\n printMessage(error.message, 'error');\n }\n }\n }\n try {\n const saml2EntitiesPromisesResults = await Promise.all(saml2EntityPromises);\n const saml2Entities = [];\n for (const saml2Entity of saml2EntitiesPromisesResults) {\n if (saml2Entity) {\n saml2Entities.push(saml2Entity);\n }\n }\n const samlEntityIds = _.map(\n saml2Entities,\n (saml2EntityConfig) => `${saml2EntityConfig.entityId}|saml2`\n );\n const circlesOfTrust = _.filter(allCirclesOfTrust, (circleOfTrust) => {\n let hasEntityId = false;\n for (const trustedProvider of circleOfTrust.trustedProviders) {\n if (!hasEntityId && samlEntityIds.includes(trustedProvider)) {\n hasEntityId = true;\n }\n }\n return hasEntityId;\n });\n const saml2NodeDependencies = {\n saml2Entities,\n circlesOfTrust,\n };\n return saml2NodeDependencies;\n } catch (error) {\n printMessage(error.message, 'error');\n const saml2NodeDependencies = {\n saml2Entities: [],\n circlesOfTrust: [],\n };\n return saml2NodeDependencies;\n }\n}\n\n/**\n * Find all node configuration objects that are no longer referenced by any tree\n * @returns {Promise<unknown[]>} a promise that resolves to an array of orphaned nodes\n */\nexport async function findOrphanedNodes(): Promise<unknown[]> {\n const allNodes = [];\n const orphanedNodes = [];\n let types = [];\n const allJourneys = (await getTrees()).result;\n let errorMessage = '';\n const errorTypes = [];\n\n createProgressIndicator(\n undefined,\n `Counting total nodes...`,\n 'indeterminate'\n );\n try {\n types = (await getNodeTypes()).result;\n } catch (error) {\n printMessage('Error retrieving all available node types:', 'error');\n printMessage(error.response.data, 'error');\n return [];\n }\n for (const type of types) {\n try {\n // eslint-disable-next-line no-await-in-loop, no-loop-func\n const nodes = (await getNodesByType(type._id)).result;\n for (const node of nodes) {\n allNodes.push(node);\n updateProgressIndicator(\n `${allNodes.length} total nodes${errorMessage}`\n );\n }\n } catch (error) {\n errorTypes.push(type._id);\n errorMessage = ` (Skipped type(s): ${errorTypes})`['yellow'];\n updateProgressIndicator(`${allNodes.length} total nodes${errorMessage}`);\n }\n }\n if (errorTypes.length > 0) {\n stopProgressIndicator(\n `${allNodes.length} total nodes${errorMessage}`,\n 'warn'\n );\n } else {\n stopProgressIndicator(`${allNodes.length} total nodes`, 'success');\n }\n\n createProgressIndicator(\n undefined,\n 'Counting active nodes...',\n 'indeterminate'\n );\n const activeNodes = [];\n for (const journey of allJourneys) {\n for (const nodeId in journey.nodes) {\n if ({}.hasOwnProperty.call(journey.nodes, nodeId)) {\n activeNodes.push(nodeId);\n updateProgressIndicator(`${activeNodes.length} active nodes`);\n const node = journey.nodes[nodeId];\n if (containerNodes.includes(node.nodeType)) {\n const containerNode = await getNode(nodeId, node.nodeType);\n for (const innerNode of containerNode.nodes) {\n activeNodes.push(innerNode._id);\n updateProgressIndicator(`${activeNodes.length} active nodes`);\n }\n }\n }\n }\n }\n stopProgressIndicator(`${activeNodes.length} active nodes`, 'success');\n\n createProgressIndicator(\n undefined,\n 'Calculating orphaned nodes...',\n 'indeterminate'\n );\n const diff = allNodes.filter((x) => !activeNodes.includes(x._id));\n for (const orphanedNode of diff) {\n orphanedNodes.push(orphanedNode);\n }\n stopProgressIndicator(`${orphanedNodes.length} orphaned nodes`, 'success');\n return orphanedNodes;\n}\n\n/**\n * Remove orphaned nodes\n * @param {[Object]} orphanedNodes Pass in an array of orphaned node configuration objects to remove\n * @returns {Promise<unknown[]>} a promise that resolves to an array nodes that encountered errors deleting\n */\nexport async function removeOrphanedNodes(\n orphanedNodes: unknown[]\n): Promise<unknown[]> {\n const errorNodes = [];\n createProgressIndicator(orphanedNodes.length, 'Removing orphaned nodes...');\n for (const node of orphanedNodes) {\n updateProgressIndicator(`Removing ${node['_id']}...`);\n try {\n // eslint-disable-next-line no-await-in-loop\n await deleteNode(node['_id'], node['_type']['_id']);\n } catch (deleteError) {\n errorNodes.push(node);\n printMessage(` ${deleteError}`, 'error');\n }\n }\n stopProgressIndicator(`Removed ${orphanedNodes.length} orphaned nodes.`);\n return errorNodes;\n}\n\nconst OOTB_NODE_TYPES_7 = [\n 'AcceptTermsAndConditionsNode',\n 'AccountActiveDecisionNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousSessionUpgradeNode',\n 'AnonymousUserNode',\n 'AttributeCollectorNode',\n 'AttributePresentDecisionNode',\n 'AttributeValueDecisionNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'ConsentNode',\n 'CookiePresenceDecisionNode',\n 'CreateObjectNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'DeviceGeoFencingNode',\n 'DeviceLocationMatchNode',\n 'DeviceMatchNode',\n 'DeviceProfileCollectorNode',\n 'DeviceSaveNode',\n 'DeviceTamperingVerificationNode',\n 'DisplayUserNameNode',\n 'EmailSuspendNode',\n 'EmailTemplateNode',\n 'IdentifyExistingUserNode',\n 'IncrementLoginCountNode',\n 'InnerTreeEvaluatorNode',\n 'IotAuthenticationNode',\n 'IotRegistrationNode',\n 'KbaCreateNode',\n 'KbaDecisionNode',\n 'KbaVerifyNode',\n 'LdapDecisionNode',\n 'LoginCountDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PatchObjectNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProfileCompletenessDecisionNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'QueryFilterDecisionNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RequiredAttributesDecisionNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SelectIdPNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'SocialProviderHandlerNode',\n 'TermsAndConditionsDecisionNode',\n 'TimeSinceDecisionNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'ValidatedPasswordNode',\n 'ValidatedUsernameNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnDeviceStorageNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n 'product-CertificateCollectorNode',\n 'product-CertificateUserExtractorNode',\n 'product-CertificateValidationNode',\n 'product-KerberosNode',\n 'product-ReCaptchaNode',\n 'product-Saml2Node',\n 'product-WriteFederationInformationNode',\n];\n\nconst OOTB_NODE_TYPES_7_1 = [\n 'PushRegistrationNode',\n 'GetAuthenticatorAppNode',\n 'MultiFactorRegistrationOptionsNode',\n 'OptOutMultiFactorAuthenticationNode',\n].concat(OOTB_NODE_TYPES_7);\n\nconst OOTB_NODE_TYPES_7_2 = [\n 'OathRegistrationNode',\n 'OathTokenVerifierNode',\n 'PassthroughAuthenticationNode',\n 'ConfigProviderNode',\n 'DebugNode',\n].concat(OOTB_NODE_TYPES_7_1);\n\nconst OOTB_NODE_TYPES_7_3 = [].concat(OOTB_NODE_TYPES_7_2);\n\nconst OOTB_NODE_TYPES_6_5 = [\n 'AbstractSocialAuthLoginNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousUserNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'CookiePresenceDecisionNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'InnerTreeEvaluatorNode',\n 'LdapDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n];\n\nconst OOTB_NODE_TYPES_6 = [\n 'AbstractSocialAuthLoginNode',\n 'AccountLockoutNode',\n 'AgentDataStoreDecisionNode',\n 'AnonymousUserNode',\n 'AuthLevelDecisionNode',\n 'ChoiceCollectorNode',\n 'CookiePresenceDecisionNode',\n 'CreatePasswordNode',\n 'DataStoreDecisionNode',\n 'InnerTreeEvaluatorNode',\n 'LdapDecisionNode',\n 'MessageNode',\n 'MetadataNode',\n 'MeterNode',\n 'ModifyAuthLevelNode',\n 'OneTimePasswordCollectorDecisionNode',\n 'OneTimePasswordGeneratorNode',\n 'OneTimePasswordSmsSenderNode',\n 'OneTimePasswordSmtpSenderNode',\n 'PageNode',\n 'PasswordCollectorNode',\n 'PersistentCookieDecisionNode',\n 'PollingWaitNode',\n 'ProvisionDynamicAccountNode',\n 'ProvisionIdmAccountNode',\n 'PushAuthenticationSenderNode',\n 'PushResultVerifierNode',\n 'RecoveryCodeCollectorDecisionNode',\n 'RecoveryCodeDisplayNode',\n 'RegisterLogoutWebhookNode',\n 'RemoveSessionPropertiesNode',\n 'RetryLimitDecisionNode',\n 'ScriptedDecisionNode',\n 'SessionDataNode',\n 'SetFailureUrlNode',\n 'SetPersistentCookieNode',\n 'SetSessionPropertiesNode',\n 'SetSuccessUrlNode',\n 'SocialFacebookNode',\n 'SocialGoogleNode',\n 'SocialNode',\n 'SocialOAuthIgnoreProfileNode',\n 'SocialOpenIdConnectNode',\n 'TimerStartNode',\n 'TimerStopNode',\n 'UsernameCollectorNode',\n 'WebAuthnAuthenticationNode',\n 'WebAuthnRegistrationNode',\n 'ZeroPageLoginNode',\n];\n\nconst CLOUD_ONLY_NODE_TYPES = [\n 'IdentityStoreDecisionNode',\n 'AutonomousAccessSignalNode',\n 'AutonomousAccessDecisionNode',\n 'AutonomousAccessResultNode',\n];\n\nconst PREMIUM_NODE_TYPES = [\n 'AutonomousAccessSignalNode',\n 'AutonomousAccessDecisionNode',\n 'AutonomousAccessResultNode',\n];\n\n/**\n * Analyze if a node is a premium node.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is premium, false otherwise.\n */\nexport function isPremiumNode(nodeType: string): boolean {\n return PREMIUM_NODE_TYPES.includes(nodeType);\n}\n\n/**\n * Analyze if a node is a cloud-only node.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is cloud-only, false otherwise.\n */\nexport function isCloudOnlyNode(nodeType: string): boolean {\n return CLOUD_ONLY_NODE_TYPES.includes(nodeType);\n}\n\n/**\n * Analyze if a node is custom.\n * @param {string} nodeType Node type\n * @returns {boolean} True if the node type is custom, false otherwise.\n */\nexport function isCustomNode(nodeType: string): boolean {\n let ootbNodeTypes = [];\n switch (state.getAmVersion()) {\n case '7.1.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_1.slice(0);\n break;\n case '7.2.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_2.slice(0);\n break;\n case '7.3.0':\n ootbNodeTypes = OOTB_NODE_TYPES_7_3.slice(0);\n break;\n case '7.0.0':\n case '7.0.1':\n case '7.0.2':\n ootbNodeTypes = OOTB_NODE_TYPES_7.slice(0);\n break;\n case '6.5.3':\n case '6.5.2.3':\n case '6.5.2.2':\n case '6.5.2.1':\n case '6.5.2':\n case '6.5.1':\n case '6.5.0.2':\n case '6.5.0.1':\n ootbNodeTypes = OOTB_NODE_TYPES_6_5.slice(0);\n break;\n case '6.0.0.7':\n case '6.0.0.6':\n case '6.0.0.5':\n case '6.0.0.4':\n case '6.0.0.3':\n case '6.0.0.2':\n case '6.0.0.1':\n case '6.0.0':\n ootbNodeTypes = OOTB_NODE_TYPES_6.slice(0);\n break;\n default:\n return true;\n }\n return (\n !ootbNodeTypes.includes(nodeType) &&\n !isPremiumNode(nodeType) &&\n !isCloudOnlyNode(nodeType)\n );\n}\n\n/**\n * Get a node's classifications, which can be one or multiple of:\n * - standard: can run on any instance of a ForgeRock platform\n * - cloud: utilize nodes, which are exclusively available in the ForgeRock Identity Cloud\n * - premium: utilizes nodes, which come at a premium\n * @param {string} nodeType Node type\n * @returns {NodeClassification[]} an array of one or multiple classifications\n */\nexport function getNodeClassification(nodeType: string): NodeClassification[] {\n const classifications: NodeClassification[] = [];\n const premium = isPremiumNode(nodeType);\n const custom = isCustomNode(nodeType);\n const cloud = isCloudOnlyNode(nodeType);\n if (custom) {\n classifications.push(NodeClassification.CUSTOM);\n } else if (cloud) {\n classifications.push(NodeClassification.CLOUD);\n } else {\n classifications.push(NodeClassification.STANDARD);\n }\n if (premium) classifications.push(NodeClassification.PREMIUM);\n return classifications;\n}\n"],"mappings":"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"}