@rockcarver/frodo-lib 2.0.0-13 → 2.0.0-15

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 (403) hide show
  1. package/build.zip +0 -0
  2. package/cjs/api/AgentApi.js.map +1 -1
  3. package/cjs/api/AuthenticateApi.js.map +1 -1
  4. package/cjs/api/BaseApi.js +1 -1
  5. package/cjs/api/BaseApi.js.map +1 -1
  6. package/cjs/api/CirclesOfTrustApi.js.map +1 -1
  7. package/cjs/api/IdmConfigApi.js.map +1 -1
  8. package/cjs/api/IdmSystemApi.js.map +1 -1
  9. package/cjs/api/ManagedObjectApi.js.map +1 -1
  10. package/cjs/api/NodeApi.js.map +1 -1
  11. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  12. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  13. package/cjs/api/OAuth2OIDCApi.test.js +2 -2
  14. package/cjs/api/OAuth2OIDCApi.test.js.map +1 -1
  15. package/cjs/api/OAuth2ProviderApi.js.map +1 -1
  16. package/cjs/api/PoliciesApi.js.map +1 -1
  17. package/cjs/api/PolicySetApi.js.map +1 -1
  18. package/cjs/api/RealmApi.js.map +1 -1
  19. package/cjs/api/ResourceTypesApi.js.map +1 -1
  20. package/cjs/api/Saml2Api.js.map +1 -1
  21. package/cjs/api/ScriptApi.js.map +1 -1
  22. package/cjs/api/ServerInfoApi.js.map +1 -1
  23. package/cjs/api/ServiceApi.js.map +1 -1
  24. package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
  25. package/cjs/api/TreeApi.js.map +1 -1
  26. package/cjs/api/cloud/AdminFederationProvidersApi.js.map +1 -1
  27. package/cjs/api/cloud/EnvInfoApi.js.map +1 -1
  28. package/cjs/api/cloud/FeatureApi.js.map +1 -1
  29. package/cjs/api/cloud/LogApi.js.map +1 -1
  30. package/cjs/api/cloud/SecretsApi.js.map +1 -1
  31. package/cjs/api/cloud/StartupApi.js.map +1 -1
  32. package/cjs/api/cloud/VariablesApi.js.map +1 -1
  33. package/cjs/api/utils/ApiUtils.js.map +1 -1
  34. package/cjs/api/utils/Base64.js +4 -4
  35. package/cjs/api/utils/Base64.js.map +1 -1
  36. package/cjs/index.js +12 -10
  37. package/cjs/index.js.map +1 -1
  38. package/cjs/lib/FrodoLib.js +181 -22
  39. package/cjs/lib/FrodoLib.js.map +1 -1
  40. package/cjs/lib/FrodoLib.test.js +9 -9
  41. package/cjs/lib/FrodoLib.test.js.map +1 -1
  42. package/cjs/ops/AdminOps.js.map +1 -1
  43. package/cjs/ops/AgentOps.js +35 -35
  44. package/cjs/ops/AgentOps.js.map +1 -1
  45. package/cjs/ops/AuthenticateOps.js +10 -12
  46. package/cjs/ops/AuthenticateOps.js.map +1 -1
  47. package/cjs/ops/CirclesOfTrustOps.js +14 -14
  48. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  49. package/cjs/ops/ConnectionProfileOps.js +2 -2
  50. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  51. package/cjs/ops/ConnectionProfileOps.test.js +5 -5
  52. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  53. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  54. package/cjs/ops/IdmOps.js.map +1 -1
  55. package/cjs/ops/IdpOps.js.map +1 -1
  56. package/cjs/ops/InfoOps.js +3 -4
  57. package/cjs/ops/InfoOps.js.map +1 -1
  58. package/cjs/ops/JoseOps.js +30 -0
  59. package/cjs/ops/JoseOps.js.map +1 -1
  60. package/cjs/ops/JourneyOps.js +41 -43
  61. package/cjs/ops/JourneyOps.js.map +1 -1
  62. package/cjs/ops/JourneyOps.test.js +3 -2
  63. package/cjs/ops/JourneyOps.test.js.map +1 -1
  64. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  65. package/cjs/ops/NodeOps.js.map +1 -1
  66. package/cjs/ops/OAuth2ClientOps.js +19 -19
  67. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  68. package/cjs/ops/OAuth2OidcOps.js.map +1 -1
  69. package/cjs/ops/OAuth2ProviderOps.js.map +1 -1
  70. package/cjs/ops/OpsTypes.js.map +1 -1
  71. package/cjs/ops/OrganizationOps.js.map +1 -1
  72. package/cjs/ops/PolicyOps.js +29 -29
  73. package/cjs/ops/PolicyOps.js.map +1 -1
  74. package/cjs/ops/PolicySetOps.js +27 -27
  75. package/cjs/ops/PolicySetOps.js.map +1 -1
  76. package/cjs/ops/RealmOps.js.map +1 -1
  77. package/cjs/ops/ResourceTypeOps.js +23 -23
  78. package/cjs/ops/ResourceTypeOps.js.map +1 -1
  79. package/cjs/ops/Saml2Ops.js +11 -11
  80. package/cjs/ops/Saml2Ops.js.map +1 -1
  81. package/cjs/ops/Saml2Ops.test.js +3 -2
  82. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  83. package/cjs/ops/ScriptOps.js +3 -3
  84. package/cjs/ops/ScriptOps.js.map +1 -1
  85. package/cjs/ops/ServiceOps.js.map +1 -1
  86. package/cjs/ops/ThemeOps.js.map +1 -1
  87. package/cjs/ops/cloud/AdminFederationOps.js.map +1 -1
  88. package/cjs/ops/cloud/FeatureOps.js.map +1 -1
  89. package/cjs/ops/cloud/LogOps.js.map +1 -1
  90. package/cjs/ops/cloud/SecretsOps.js.map +1 -1
  91. package/cjs/ops/cloud/ServiceAccountOps.js +1 -1
  92. package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -1
  93. package/cjs/ops/cloud/StartupOps.js.map +1 -1
  94. package/cjs/ops/cloud/VariablesOps.js.map +1 -1
  95. package/cjs/ops/utils/Console.js.map +1 -1
  96. package/cjs/ops/utils/DataProtection.js +3 -3
  97. package/cjs/ops/utils/DataProtection.js.map +1 -1
  98. package/cjs/ops/utils/DataProtection.test.js +1 -1
  99. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  100. package/cjs/ops/utils/ExportImportUtils.js +2 -2
  101. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  102. package/cjs/ops/utils/OpsUtils.js +105 -25
  103. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  104. package/cjs/ops/utils/OpsUtils.test.js +6 -5
  105. package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
  106. package/cjs/ops/utils/ScriptValidationUtils.js +33 -2
  107. package/cjs/ops/utils/ScriptValidationUtils.js.map +1 -1
  108. package/cjs/ops/utils/ScriptValidationUtils.test.js +1 -1
  109. package/cjs/ops/utils/ScriptValidationUtils.test.js.map +1 -1
  110. package/cjs/ops/utils/{Version.js → VersionUtils.js} +1 -1
  111. package/cjs/ops/utils/VersionUtils.js.map +1 -0
  112. package/cjs/ops/utils/{Version.test.js → VersionUtils.test.js} +3 -3
  113. package/cjs/ops/utils/VersionUtils.test.js.map +1 -0
  114. package/cjs/shared/Constants.js +34 -0
  115. package/cjs/shared/Constants.js.map +1 -0
  116. package/cjs/shared/State.js +477 -220
  117. package/cjs/shared/State.js.map +1 -1
  118. package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
  119. package/esm/api/AgentApi.js.map +1 -1
  120. package/esm/api/AuthenticateApi.js.map +1 -1
  121. package/esm/api/BaseApi.js +2 -2
  122. package/esm/api/BaseApi.js.map +1 -1
  123. package/esm/api/CirclesOfTrustApi.js.map +1 -1
  124. package/esm/api/IdmConfigApi.js.map +1 -1
  125. package/esm/api/IdmSystemApi.js.map +1 -1
  126. package/esm/api/ManagedObjectApi.js.map +1 -1
  127. package/esm/api/NodeApi.js.map +1 -1
  128. package/esm/api/OAuth2ClientApi.js.map +1 -1
  129. package/esm/api/OAuth2OIDCApi.js.map +1 -1
  130. package/esm/api/OAuth2OIDCApi.test.js +2 -2
  131. package/esm/api/OAuth2OIDCApi.test.js.map +1 -1
  132. package/esm/api/OAuth2ProviderApi.js.map +1 -1
  133. package/esm/api/PoliciesApi.js.map +1 -1
  134. package/esm/api/PolicySetApi.js.map +1 -1
  135. package/esm/api/RealmApi.js.map +1 -1
  136. package/esm/api/ResourceTypesApi.js.map +1 -1
  137. package/esm/api/Saml2Api.js.map +1 -1
  138. package/esm/api/ScriptApi.js.map +1 -1
  139. package/esm/api/ServerInfoApi.js.map +1 -1
  140. package/esm/api/ServiceApi.js.map +1 -1
  141. package/esm/api/SocialIdentityProvidersApi.js.map +1 -1
  142. package/esm/api/TreeApi.js.map +1 -1
  143. package/esm/api/cloud/AdminFederationProvidersApi.js.map +1 -1
  144. package/esm/api/cloud/EnvInfoApi.js.map +1 -1
  145. package/esm/api/cloud/FeatureApi.js.map +1 -1
  146. package/esm/api/cloud/LogApi.js.map +1 -1
  147. package/esm/api/cloud/SecretsApi.js.map +1 -1
  148. package/esm/api/cloud/StartupApi.js.map +1 -1
  149. package/esm/api/cloud/VariablesApi.js.map +1 -1
  150. package/esm/api/utils/ApiUtils.js.map +1 -1
  151. package/esm/api/utils/Base64.js +4 -4
  152. package/esm/api/utils/Base64.js.map +1 -1
  153. package/esm/index.js +2 -1
  154. package/esm/index.js.map +1 -1
  155. package/esm/lib/FrodoLib.js +164 -19
  156. package/esm/lib/FrodoLib.js.map +1 -1
  157. package/esm/lib/FrodoLib.test.js +10 -10
  158. package/esm/lib/FrodoLib.test.js.map +1 -1
  159. package/esm/ops/AdminOps.js.map +1 -1
  160. package/esm/ops/AgentOps.js.map +1 -1
  161. package/esm/ops/AuthenticateOps.js +10 -10
  162. package/esm/ops/AuthenticateOps.js.map +1 -1
  163. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  164. package/esm/ops/ConnectionProfileOps.js +2 -2
  165. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  166. package/esm/ops/ConnectionProfileOps.test.js +5 -5
  167. package/esm/ops/ConnectionProfileOps.test.js.map +1 -1
  168. package/esm/ops/EmailTemplateOps.js.map +1 -1
  169. package/esm/ops/IdmOps.js.map +1 -1
  170. package/esm/ops/IdpOps.js.map +1 -1
  171. package/esm/ops/InfoOps.js +2 -2
  172. package/esm/ops/InfoOps.js.map +1 -1
  173. package/esm/ops/JoseOps.js +20 -0
  174. package/esm/ops/JoseOps.js.map +1 -1
  175. package/esm/ops/JourneyOps.js +10 -11
  176. package/esm/ops/JourneyOps.js.map +1 -1
  177. package/esm/ops/JourneyOps.test.js +2 -2
  178. package/esm/ops/JourneyOps.test.js.map +1 -1
  179. package/esm/ops/ManagedObjectOps.js.map +1 -1
  180. package/esm/ops/NodeOps.js.map +1 -1
  181. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  182. package/esm/ops/OAuth2OidcOps.js.map +1 -1
  183. package/esm/ops/OAuth2ProviderOps.js.map +1 -1
  184. package/esm/ops/OpsTypes.js.map +1 -1
  185. package/esm/ops/OrganizationOps.js.map +1 -1
  186. package/esm/ops/PolicyOps.js.map +1 -1
  187. package/esm/ops/PolicySetOps.js.map +1 -1
  188. package/esm/ops/RealmOps.js.map +1 -1
  189. package/esm/ops/ResourceTypeOps.js.map +1 -1
  190. package/esm/ops/Saml2Ops.js.map +1 -1
  191. package/esm/ops/Saml2Ops.test.js +2 -2
  192. package/esm/ops/Saml2Ops.test.js.map +1 -1
  193. package/esm/ops/ScriptOps.js.map +1 -1
  194. package/esm/ops/ServiceOps.js.map +1 -1
  195. package/esm/ops/ThemeOps.js.map +1 -1
  196. package/esm/ops/cloud/AdminFederationOps.js.map +1 -1
  197. package/esm/ops/cloud/FeatureOps.js.map +1 -1
  198. package/esm/ops/cloud/LogOps.js.map +1 -1
  199. package/esm/ops/cloud/SecretsOps.js.map +1 -1
  200. package/esm/ops/cloud/ServiceAccountOps.js +1 -1
  201. package/esm/ops/cloud/ServiceAccountOps.js.map +1 -1
  202. package/esm/ops/cloud/StartupOps.js.map +1 -1
  203. package/esm/ops/cloud/VariablesOps.js.map +1 -1
  204. package/esm/ops/utils/Console.js.map +1 -1
  205. package/esm/ops/utils/DataProtection.js +3 -3
  206. package/esm/ops/utils/DataProtection.js.map +1 -1
  207. package/esm/ops/utils/DataProtection.test.js +2 -2
  208. package/esm/ops/utils/DataProtection.test.js.map +1 -1
  209. package/esm/ops/utils/ExportImportUtils.js +2 -2
  210. package/esm/ops/utils/ExportImportUtils.js.map +1 -1
  211. package/esm/ops/utils/OpsUtils.js +96 -22
  212. package/esm/ops/utils/OpsUtils.js.map +1 -1
  213. package/esm/ops/utils/OpsUtils.test.js +5 -5
  214. package/esm/ops/utils/OpsUtils.test.js.map +1 -1
  215. package/esm/ops/utils/ScriptValidationUtils.js +28 -0
  216. package/esm/ops/utils/ScriptValidationUtils.js.map +1 -1
  217. package/esm/ops/utils/ScriptValidationUtils.test.js +2 -2
  218. package/esm/ops/utils/ScriptValidationUtils.test.js.map +1 -1
  219. package/esm/ops/utils/{Version.js → VersionUtils.js} +1 -1
  220. package/esm/ops/utils/VersionUtils.js.map +1 -0
  221. package/esm/ops/utils/{Version.test.js → VersionUtils.test.js} +2 -2
  222. package/esm/ops/utils/VersionUtils.test.js.map +1 -0
  223. package/esm/shared/Constants.js +27 -0
  224. package/esm/shared/Constants.js.map +1 -0
  225. package/esm/shared/State.js +481 -226
  226. package/esm/shared/State.js.map +1 -1
  227. package/esm/utils/SetupPollyForFrodoLib.js.map +1 -1
  228. package/package.json +5 -2
  229. package/types/api/AgentApi.d.ts +1 -1
  230. package/types/api/AgentApi.d.ts.map +1 -1
  231. package/types/api/AuthenticateApi.d.ts +1 -1
  232. package/types/api/AuthenticateApi.d.ts.map +1 -1
  233. package/types/api/BaseApi.d.ts +1 -1
  234. package/types/api/BaseApi.d.ts.map +1 -1
  235. package/types/api/CirclesOfTrustApi.d.ts +1 -1
  236. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  237. package/types/api/IdmConfigApi.d.ts +1 -1
  238. package/types/api/IdmConfigApi.d.ts.map +1 -1
  239. package/types/api/IdmSystemApi.d.ts +1 -1
  240. package/types/api/IdmSystemApi.d.ts.map +1 -1
  241. package/types/api/ManagedObjectApi.d.ts +1 -1
  242. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  243. package/types/api/NodeApi.d.ts +1 -1
  244. package/types/api/NodeApi.d.ts.map +1 -1
  245. package/types/api/OAuth2ClientApi.d.ts +1 -1
  246. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  247. package/types/api/OAuth2OIDCApi.d.ts +1 -1
  248. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  249. package/types/api/OAuth2ProviderApi.d.ts +1 -1
  250. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  251. package/types/api/PoliciesApi.d.ts +1 -1
  252. package/types/api/PoliciesApi.d.ts.map +1 -1
  253. package/types/api/PolicySetApi.d.ts +1 -1
  254. package/types/api/PolicySetApi.d.ts.map +1 -1
  255. package/types/api/RealmApi.d.ts +1 -1
  256. package/types/api/RealmApi.d.ts.map +1 -1
  257. package/types/api/ResourceTypesApi.d.ts +1 -1
  258. package/types/api/ResourceTypesApi.d.ts.map +1 -1
  259. package/types/api/Saml2Api.d.ts +1 -1
  260. package/types/api/Saml2Api.d.ts.map +1 -1
  261. package/types/api/ScriptApi.d.ts +1 -1
  262. package/types/api/ScriptApi.d.ts.map +1 -1
  263. package/types/api/ServerInfoApi.d.ts +1 -1
  264. package/types/api/ServerInfoApi.d.ts.map +1 -1
  265. package/types/api/ServiceApi.d.ts +1 -1
  266. package/types/api/ServiceApi.d.ts.map +1 -1
  267. package/types/api/SocialIdentityProvidersApi.d.ts +1 -1
  268. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  269. package/types/api/TreeApi.d.ts +1 -1
  270. package/types/api/TreeApi.d.ts.map +1 -1
  271. package/types/api/cloud/AdminFederationProvidersApi.d.ts +1 -1
  272. package/types/api/cloud/AdminFederationProvidersApi.d.ts.map +1 -1
  273. package/types/api/cloud/EnvInfoApi.d.ts +1 -1
  274. package/types/api/cloud/EnvInfoApi.d.ts.map +1 -1
  275. package/types/api/cloud/FeatureApi.d.ts +1 -1
  276. package/types/api/cloud/FeatureApi.d.ts.map +1 -1
  277. package/types/api/cloud/LogApi.d.ts +1 -1
  278. package/types/api/cloud/LogApi.d.ts.map +1 -1
  279. package/types/api/cloud/SecretsApi.d.ts +1 -1
  280. package/types/api/cloud/SecretsApi.d.ts.map +1 -1
  281. package/types/api/cloud/StartupApi.d.ts +1 -1
  282. package/types/api/cloud/StartupApi.d.ts.map +1 -1
  283. package/types/api/cloud/VariablesApi.d.ts +1 -1
  284. package/types/api/cloud/VariablesApi.d.ts.map +1 -1
  285. package/types/api/utils/ApiUtils.d.ts +1 -1
  286. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  287. package/types/api/utils/Base64.d.ts +6 -6
  288. package/types/api/utils/Base64.d.ts.map +1 -1
  289. package/types/index.d.ts +2 -1
  290. package/types/index.d.ts.map +1 -1
  291. package/types/lib/FrodoLib.d.ts +224 -370
  292. package/types/lib/FrodoLib.d.ts.map +1 -1
  293. package/types/ops/AdminOps.d.ts +3 -2
  294. package/types/ops/AdminOps.d.ts.map +1 -1
  295. package/types/ops/AgentOps.d.ts +3 -2
  296. package/types/ops/AgentOps.d.ts.map +1 -1
  297. package/types/ops/AuthenticateOps.d.ts +3 -2
  298. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  299. package/types/ops/CirclesOfTrustOps.d.ts +3 -2
  300. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -1
  301. package/types/ops/ConnectionProfileOps.d.ts +3 -2
  302. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  303. package/types/ops/EmailTemplateOps.d.ts +3 -2
  304. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  305. package/types/ops/IdmOps.d.ts +3 -2
  306. package/types/ops/IdmOps.d.ts.map +1 -1
  307. package/types/ops/IdpOps.d.ts +3 -2
  308. package/types/ops/IdpOps.d.ts.map +1 -1
  309. package/types/ops/InfoOps.d.ts +3 -2
  310. package/types/ops/InfoOps.d.ts.map +1 -1
  311. package/types/ops/JoseOps.d.ts +17 -1
  312. package/types/ops/JoseOps.d.ts.map +1 -1
  313. package/types/ops/JourneyOps.d.ts +16 -10
  314. package/types/ops/JourneyOps.d.ts.map +1 -1
  315. package/types/ops/ManagedObjectOps.d.ts +3 -2
  316. package/types/ops/ManagedObjectOps.d.ts.map +1 -1
  317. package/types/ops/NodeOps.d.ts +3 -2
  318. package/types/ops/NodeOps.d.ts.map +1 -1
  319. package/types/ops/OAuth2ClientOps.d.ts +3 -2
  320. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  321. package/types/ops/OAuth2OidcOps.d.ts +6 -5
  322. package/types/ops/OAuth2OidcOps.d.ts.map +1 -1
  323. package/types/ops/OAuth2ProviderOps.d.ts +3 -2
  324. package/types/ops/OAuth2ProviderOps.d.ts.map +1 -1
  325. package/types/ops/OpsTypes.d.ts +1 -1
  326. package/types/ops/OpsTypes.d.ts.map +1 -1
  327. package/types/ops/OrganizationOps.d.ts +3 -2
  328. package/types/ops/OrganizationOps.d.ts.map +1 -1
  329. package/types/ops/PolicyOps.d.ts +3 -2
  330. package/types/ops/PolicyOps.d.ts.map +1 -1
  331. package/types/ops/PolicySetOps.d.ts +3 -2
  332. package/types/ops/PolicySetOps.d.ts.map +1 -1
  333. package/types/ops/RealmOps.d.ts +3 -2
  334. package/types/ops/RealmOps.d.ts.map +1 -1
  335. package/types/ops/ResourceTypeOps.d.ts +3 -2
  336. package/types/ops/ResourceTypeOps.d.ts.map +1 -1
  337. package/types/ops/Saml2Ops.d.ts +3 -2
  338. package/types/ops/Saml2Ops.d.ts.map +1 -1
  339. package/types/ops/ScriptOps.d.ts +3 -2
  340. package/types/ops/ScriptOps.d.ts.map +1 -1
  341. package/types/ops/ServiceOps.d.ts +4 -3
  342. package/types/ops/ServiceOps.d.ts.map +1 -1
  343. package/types/ops/ThemeOps.d.ts +3 -2
  344. package/types/ops/ThemeOps.d.ts.map +1 -1
  345. package/types/ops/cloud/AdminFederationOps.d.ts +3 -2
  346. package/types/ops/cloud/AdminFederationOps.d.ts.map +1 -1
  347. package/types/ops/cloud/FeatureOps.d.ts +3 -2
  348. package/types/ops/cloud/FeatureOps.d.ts.map +1 -1
  349. package/types/ops/cloud/LogOps.d.ts +3 -2
  350. package/types/ops/cloud/LogOps.d.ts.map +1 -1
  351. package/types/ops/cloud/SecretsOps.d.ts +3 -2
  352. package/types/ops/cloud/SecretsOps.d.ts.map +1 -1
  353. package/types/ops/cloud/ServiceAccountOps.d.ts +7 -6
  354. package/types/ops/cloud/ServiceAccountOps.d.ts.map +1 -1
  355. package/types/ops/cloud/StartupOps.d.ts +3 -2
  356. package/types/ops/cloud/StartupOps.d.ts.map +1 -1
  357. package/types/ops/cloud/VariablesOps.d.ts +3 -2
  358. package/types/ops/cloud/VariablesOps.d.ts.map +1 -1
  359. package/types/ops/utils/Console.d.ts +1 -1
  360. package/types/ops/utils/Console.d.ts.map +1 -1
  361. package/types/ops/utils/DataProtection.d.ts +1 -1
  362. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  363. package/types/ops/utils/ExportImportUtils.d.ts +3 -2
  364. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  365. package/types/ops/utils/OpsUtils.d.ts +73 -17
  366. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  367. package/types/ops/utils/ScriptValidationUtils.d.ts +20 -1
  368. package/types/ops/utils/ScriptValidationUtils.d.ts.map +1 -1
  369. package/types/ops/utils/{Version.d.ts → VersionUtils.d.ts} +4 -4
  370. package/types/ops/utils/VersionUtils.d.ts.map +1 -0
  371. package/types/shared/Constants.d.ts +34 -0
  372. package/types/shared/Constants.d.ts.map +1 -0
  373. package/types/shared/State.d.ts +38 -38
  374. package/types/shared/State.d.ts.map +1 -1
  375. package/types/utils/SetupPollyForFrodoLib.d.ts +1 -1
  376. package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -1
  377. package/cjs/lib/Frodo.js +0 -85
  378. package/cjs/lib/Frodo.js.map +0 -1
  379. package/cjs/ops/utils/Version.js.map +0 -1
  380. package/cjs/ops/utils/Version.test.js.map +0 -1
  381. package/cjs/ops/utils/Wordwrap.js +0 -12
  382. package/cjs/ops/utils/Wordwrap.js.map +0 -1
  383. package/cjs/ops/utils/Wordwrap.test.js +0 -22
  384. package/cjs/ops/utils/Wordwrap.test.js.map +0 -1
  385. package/cjs/storage/StaticStorage.js +0 -31
  386. package/cjs/storage/StaticStorage.js.map +0 -1
  387. package/esm/lib/Frodo.js +0 -59
  388. package/esm/lib/Frodo.js.map +0 -1
  389. package/esm/ops/utils/Version.js.map +0 -1
  390. package/esm/ops/utils/Version.test.js.map +0 -1
  391. package/esm/ops/utils/Wordwrap.js +0 -5
  392. package/esm/ops/utils/Wordwrap.js.map +0 -1
  393. package/esm/ops/utils/Wordwrap.test.js +0 -19
  394. package/esm/ops/utils/Wordwrap.test.js.map +0 -1
  395. package/esm/storage/StaticStorage.js +0 -15
  396. package/esm/storage/StaticStorage.js.map +0 -1
  397. package/types/lib/Frodo.d.ts +0 -1159
  398. package/types/lib/Frodo.d.ts.map +0 -1
  399. package/types/ops/utils/Version.d.ts.map +0 -1
  400. package/types/ops/utils/Wordwrap.d.ts +0 -2
  401. package/types/ops/utils/Wordwrap.d.ts.map +0 -1
  402. package/types/storage/StaticStorage.d.ts +0 -15
  403. package/types/storage/StaticStorage.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LogOps.js","names":["createLogApiKey","deleteLogApiKey","_deleteLogApiKey","getLogApiKeys","_getLogApiKeys","getSources","tail","fetch","getLogApiKey","state","getDefaultNoiseFilter","resolveLevel","level","resolvePayloadLevel","log","getLogSources","keyId","keyName","deleteLogApiKeys","source","cookie","startTs","endTs","unfilterableNoise","miscNoise","journeysNoise","journeys","samlNoise","saml","noise","concat","numLogLevelMap","logLevelMap","SEVERE","ERROR","FATAL","WARN","WARNING","CONFIG","INFO","INFORMATION","DEBUG","FINE","FINER","FINEST","ALL","Number","isNaN","parseInt","type","payload","match","e","sources","result","keys","key","responses","errors","api_key_id","push","error","length","errorMessages","map","message","join","Error"],"sources":["../../../src/ops/cloud/LogOps.ts"],"sourcesContent":["import {\n LogApiKey,\n LogEventPayloadSkeleton,\n LogEventSkeleton,\n PagedResult,\n} from '../../api/ApiTypes';\nimport {\n createLogApiKey,\n deleteLogApiKey as _deleteLogApiKey,\n getLogApiKeys as _getLogApiKeys,\n getSources,\n tail,\n fetch,\n getLogApiKey,\n} from '../../api/cloud/LogApi';\nimport State from '../../shared/State';\n\nexport default (state: State) => {\n return {\n /**\n * Get default noise filter\n * @returns {string[]} array of default event types and loggers to be filtered out\n */\n getDefaultNoiseFilter(): string[] {\n return getDefaultNoiseFilter();\n },\n\n /**\n * Resolve log level to an array of effective log levels\n * @param level string or numeric log level: 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL', 0, 1, 2, 3, 4\n * @returns {string[]} array of effective log levels\n */\n resolveLevel(level: string | number): string[] {\n return resolveLevel(level);\n },\n\n /**\n * Resolve a log event's level\n * @param {object} log log event\n * @returns {string} log level\n */\n resolvePayloadLevel(log: LogEventSkeleton): string {\n return resolvePayloadLevel(log);\n },\n\n /**\n * Get available log sources\n * @returns {Promise<string[]>} promise resolving to an array of available log sources\n */\n async getLogSources() {\n return getLogSources({ state });\n },\n\n /**\n * Get log api key\n * @returns {Promise<LogApiKey>} promise resolving to a LogApiKey objects\n */\n async getLogApiKey(keyId: string): Promise<LogApiKey> {\n return getLogApiKey({ keyId, state });\n },\n\n /**\n * Get log api keys\n * @returns {Promise<LogApiKey[]>} promise resolving to an array of LogApiKey objects\n */\n async getLogApiKeys(): Promise<LogApiKey[]> {\n return getLogApiKeys({ state });\n },\n\n /**\n * Create log api key\n * @param {string} keyName human-readable key name\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key and secret\n */\n async createLogApiKey(keyName: string): Promise<LogApiKey> {\n return createLogApiKey({ keyName, state });\n },\n\n /**\n * Delete log api key\n * @param {string} keyId key id\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key\n */\n async deleteLogApiKey(keyId: string): Promise<LogApiKey> {\n return deleteLogApiKey({ keyId, state });\n },\n\n /**\n * Delete all log api keys\n * @returns {Promise<LogApiKey>} a promise resolving to an array of log api key objects\n */\n async deleteLogApiKeys(): Promise<LogApiKey[]> {\n return deleteLogApiKeys({ state });\n },\n\n /**\n * Tail logs\n * @param {string} source log source(s) to tail\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n tail(\n source: string,\n cookie: string\n ): Promise<PagedResult<LogEventSkeleton>> {\n return tail({ source, cookie, state });\n },\n\n /**\n * Fetch logs\n * @param {string} source log source(s) to tail\n * @param {string} startTs start timestamp\n * @param {string} endTs end timestamp\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n async fetch(\n source: string,\n startTs: string,\n endTs: string,\n cookie: string\n ): Promise<PagedResult<LogEventSkeleton>> {\n return fetch({ source, startTs, endTs, cookie, state });\n },\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\n/**\n * Get default noise filter\n * @returns {string[]} array of default event types and loggers to be filtered out\n */\nexport function getDefaultNoiseFilter(): string[] {\n return noise;\n}\n\n/**\n * Resolve log level to an array of effective log levels\n * @param level string or numeric log level: 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL', 0, 1, 2, 3, 4\n * @returns {string[]} array of effective log levels\n */\nexport function resolveLevel(level: string | number): string[] {\n if (Number.isNaN(parseInt(level as string, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level as number][0]];\n}\n\n/**\n * Resolve a log event's level\n * @param {object} log log event\n * @returns {string} log level\n */\nexport function resolvePayloadLevel(log: LogEventSkeleton): string {\n // It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n // Therefore, for those, this function returns null, and thus filters out the undesirable\n try {\n return log.type !== 'text/plain'\n ? (log.payload as LogEventPayloadSkeleton).level\n : (log.payload as string).match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\n/**\n * Get available log sources\n * @returns {Promise<string[]>} promise resolving to an array of available log sources\n */\nexport async function getLogSources({ state }: { state: State }) {\n const sources = (await getSources({ state })).result;\n return sources;\n}\n\n/**\n * Get log api keys\n * @returns {Promise<LogApiKey[]>} promise resolving to an array of LogApiKey objects\n */\nexport async function getLogApiKeys({\n state,\n}: {\n state: State;\n}): Promise<LogApiKey[]> {\n const keys = (await _getLogApiKeys({ state })).result;\n return keys;\n}\n\n/**\n * Delete all keys\n */\nexport async function deleteLogApiKey({\n keyId,\n state,\n}: {\n keyId: string;\n state: State;\n}): Promise<LogApiKey> {\n const key = await getLogApiKey({ keyId, state });\n await _deleteLogApiKey({ keyId, state });\n return key;\n}\n\n/**\n * Delete all keys\n */\nexport async function deleteLogApiKeys({\n state,\n}: {\n state: State;\n}): Promise<LogApiKey[]> {\n const responses = [];\n const errors = [];\n try {\n const keys = await getLogApiKeys({ state });\n for (const key of keys) {\n try {\n await deleteLogApiKey({\n keyId: key.api_key_id,\n state,\n });\n responses.push(key);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n return responses;\n}\n\nexport { tail, fetch, createLogApiKey };\n"],"mappings":"SAOEA,eAAe,EACfC,eAAe,IAAIC,gBAAgB,EACnCC,aAAa,IAAIC,cAAc,EAC/BC,UAAU,EACVC,IAAI,EACJC,KAAK,EACLC,YAAY;AAId,gBAAgBC,KAAY,IAAK;EAC/B,OAAO;IACL;AACJ;AACA;AACA;IACIC,qBAAqBA,CAAA,EAAa;MAChC,OAAOA,qBAAqB,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIC,YAAYA,CAACC,KAAsB,EAAY;MAC7C,OAAOD,YAAY,CAACC,KAAK,CAAC;IAC5B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIC,mBAAmBA,CAACC,GAAqB,EAAU;MACjD,OAAOD,mBAAmB,CAACC,GAAG,CAAC;IACjC,CAAC;IAED;AACJ;AACA;AACA;IACI,MAAMC,aAAaA,CAAA,EAAG;MACpB,OAAOA,aAAa,CAAC;QAAEN;MAAM,CAAC,CAAC;IACjC,CAAC;IAED;AACJ;AACA;AACA;IACI,MAAMD,YAAYA,CAACQ,KAAa,EAAsB;MACpD,OAAOR,YAAY,CAAC;QAAEQ,KAAK;QAAEP;MAAM,CAAC,CAAC;IACvC,CAAC;IAED;AACJ;AACA;AACA;IACI,MAAMN,aAAaA,CAAA,EAAyB;MAC1C,OAAOA,aAAa,CAAC;QAAEM;MAAM,CAAC,CAAC;IACjC,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMT,eAAeA,CAACiB,OAAe,EAAsB;MACzD,OAAOjB,eAAe,CAAC;QAAEiB,OAAO;QAAER;MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMR,eAAeA,CAACe,KAAa,EAAsB;MACvD,OAAOf,eAAe,CAAC;QAAEe,KAAK;QAAEP;MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;AACJ;AACA;AACA;IACI,MAAMS,gBAAgBA,CAAA,EAAyB;MAC7C,OAAOA,gBAAgB,CAAC;QAAET;MAAM,CAAC,CAAC;IACpC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIH,IAAIA,CACFa,MAAc,EACdC,MAAc,EAC0B;MACxC,OAAOd,IAAI,CAAC;QAAEa,MAAM;QAAEC,MAAM;QAAEX;MAAM,CAAC,CAAC;IACxC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAMF,KAAKA,CACTY,MAAc,EACdE,OAAe,EACfC,KAAa,EACbF,MAAc,EAC0B;MACxC,OAAOb,KAAK,CAAC;QAAEY,MAAM;QAAEE,OAAO;QAAEC,KAAK;QAAEF,MAAM;QAAEX;MAAM,CAAC,CAAC;IACzD;EACF,CAAC;AACH,CAAC;;AAED;AACA,MAAMc,iBAAiB,GAAG,CACxB,YAAY,CAAE;AAAA,CACf;;AAED,MAAMC,SAAS,GAAG,CAChB,oEAAoE,EACpE,2CAA2C,EAC3C,iDAAiD,EACjD,0CAA0C,EAC1C,gDAAgD,EAChD,6CAA6C,EAC7C,wDAAwD,EACxD,yDAAyD,EACzD,gEAAgE,EAChE,2DAA2D,EAC3D,wDAAwD,EACxD,mDAAmD,EACnD,iEAAiE,EACjE,yDAAyD,EACzD,wDAAwD,EACxD,2DAA2D,EAC3D,+CAA+C,EAC/C,mDAAmD,EACnD,8DAA8D,EAC9D,oDAAoD,EACpD,mDAAmD,EACnD,qDAAqD,EACrD,kDAAkD,EAClD,kDAAkD,EAClD,gDAAgD,EAChD,4CAA4C,EAC5C,kCAAkC,EAClC,4CAA4C,EAC5C,wCAAwC,EACxC,oCAAoC,EACpC,sCAAsC,EACtC,8BAA8B,EAC9B,uCAAuC,EACvC,8CAA8C,EAC9C,8BAA8B,EAC9B,8BAA8B,EAC9B,sCAAsC,EACtC,QAAQ,EACR,kDAAkD,EAClD,8DAA8D,EAC9D,yDAAyD,EACzD,oDAAoD,EACpD,gDAAgD,EAChD,gEAAgE,EAChE,mEAAmE,EACnE,sCAAsC,EACtC,uDAAuD,EACvD,gEAAgE,EAChE,iEAAiE,EACjE,qDAAqD,EACrD,6CAA6C,EAC7C,0DAA0D,EAC1D,qEAAqE,EACrE,sDAAsD,EACtD,sCAAsC,EACtC,iDAAiD,EACjD,gDAAgD,EAChD,wDAAwD,EACxD,kEAAkE,EAClE,2DAA2D,EAC3D,+CAA+C,EAC/C,sCAAsC,EACtC,oDAAoD,EACpD,qDAAqD,EACrD,gDAAgD,EAChD,gEAAgE,EAChE,gEAAgE,EAChE,8DAA8D,EAC9D,2DAA2D,EAC3D,iEAAiE,EACjE,2EAA2E,EAC3E,sDAAsD,EACtD,yDAAyD,EACzD,wCAAwC,EACxC,gDAAgD,EAChD,wCAAwC,EACxC,oDAAoD,EACpD,oEAAoE,EACpE,uCAAuC,CACxC;AAED,MAAMC,aAAa,GAAG,CACpB,yDAAyD,CAC1D;;AAED;AACA,MAAMC,QAAQ,GAAG,CACf,+CAA+C,EAC/C,uDAAuD,EACvD,uDAAuD,EACvD,yDAAyD,CAC1D;AAED,MAAMC,SAAS,GAAG,CAChB,+BAA+B,EAC/B,sEAAsE,EACtE,4CAA4C,EAC5C,qDAAqD,EACrD,sCAAsC,EACtC,gDAAgD,EAChD,kDAAkD,EAClD,yDAAyD,EACzD,yEAAyE,EACzE,8CAA8C,EAC9C,qEAAqE,EACrE,uDAAuD,EACvD,4CAA4C,EAC5C,+CAA+C,EAC/C,oDAAoD,EACpD,6CAA6C,EAC7C,4CAA4C,CAC7C;;AAED;AACA,MAAMC,IAAI,GAAG,CACX,+BAA+B,EAC/B,wCAAwC,EACxC,0CAA0C,EAC1C,8CAA8C,EAC9C,6CAA6C,CAC9C;AAED,MAAMC,KAAK,GAAGL,SAAS,CAACM,MAAM,CAACH,SAAS,CAAC,CAACG,MAAM,CAACL,aAAa,CAAC;AAE/D,MAAMM,cAAc,GAAG;EACrB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;EAC/B,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;EAChC,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;EAC1B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;EACvC,CAAC,EAAE,CAAC,KAAK;AACX,CAAC;AAED,MAAMC,WAAW,GAAG;EAClBC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;EACpCC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;EACnCC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;EACnCC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;EAC/DC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;EAClEC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;EACjEC,IAAI,EAAE,CACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,CACd;EACDC,WAAW,EAAE,CACX,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,CACd;EACDC,KAAK,EAAE,CACL,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,IAAI,EAAE,CACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,KAAK,EAAE,CACL,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,GAAG,EAAE,CAAC,KAAK;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASnC,qBAAqBA,CAAA,EAAa;EAChD,OAAOmB,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASlB,YAAYA,CAACC,KAAsB,EAAY;EAC7D,IAAIkC,MAAM,CAACC,KAAK,CAACC,QAAQ,CAACpC,KAAK,EAAY,EAAE,CAAC,CAAC,EAAE;IAC/C,OAAOoB,WAAW,CAACpB,KAAK,CAAC;EAC3B;EACA,OAAOoB,WAAW,CAACD,cAAc,CAACnB,KAAK,CAAW,CAAC,CAAC,CAAC,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,GAAqB,EAAU;EACjE;EACA;EACA,IAAI;IACF,OAAOA,GAAG,CAACmC,IAAI,KAAK,YAAY,GAC3BnC,GAAG,CAACoC,OAAO,CAA6BtC,KAAK,GAC7CE,GAAG,CAACoC,OAAO,CAAYC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC,OAAOC,CAAC,EAAE;IACV;IACA,OAAO,IAAI;EACb;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAerC,aAAaA,CAAC;EAAEN;AAAwB,CAAC,EAAE;EAC/D,MAAM4C,OAAO,GAAG,CAAC,MAAMhD,UAAU,CAAC;IAAEI;EAAM,CAAC,CAAC,EAAE6C,MAAM;EACpD,OAAOD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAelD,aAAaA,CAAC;EAClCM;AAGF,CAAC,EAAwB;EACvB,MAAM8C,IAAI,GAAG,CAAC,MAAMnD,cAAc,CAAC;IAAEK;EAAM,CAAC,CAAC,EAAE6C,MAAM;EACrD,OAAOC,IAAI;AACb;;AAEA;AACA;AACA;AACA,OAAO,eAAetD,eAAeA,CAAC;EACpCe,KAAK;EACLP;AAIF,CAAC,EAAsB;EACrB,MAAM+C,GAAG,GAAG,MAAMhD,YAAY,CAAC;IAAEQ,KAAK;IAAEP;EAAM,CAAC,CAAC;EAChD,MAAMP,gBAAgB,CAAC;IAAEc,KAAK;IAAEP;EAAM,CAAC,CAAC;EACxC,OAAO+C,GAAG;AACZ;;AAEA;AACA;AACA;AACA,OAAO,eAAetC,gBAAgBA,CAAC;EACrCT;AAGF,CAAC,EAAwB;EACvB,MAAMgD,SAAS,GAAG,EAAE;EACpB,MAAMC,MAAM,GAAG,EAAE;EACjB,IAAI;IACF,MAAMH,IAAI,GAAG,MAAMpD,aAAa,CAAC;MAAEM;IAAM,CAAC,CAAC;IAC3C,KAAK,MAAM+C,GAAG,IAAID,IAAI,EAAE;MACtB,IAAI;QACF,MAAMtD,eAAe,CAAC;UACpBe,KAAK,EAAEwC,GAAG,CAACG,UAAU;UACrBlD;QACF,CAAC,CAAC;QACFgD,SAAS,CAACG,IAAI,CAACJ,GAAG,CAAC;MACrB,CAAC,CAAC,OAAOK,KAAK,EAAE;QACdH,MAAM,CAACE,IAAI,CAACC,KAAK,CAAC;MACpB;IACF;EACF,CAAC,CAAC,OAAOA,KAAK,EAAE;IACdH,MAAM,CAACE,IAAI,CAACC,KAAK,CAAC;EACpB;EACA,IAAIH,MAAM,CAACI,MAAM,EAAE;IACjB,MAAMC,aAAa,GAAGL,MAAM,CAACM,GAAG,CAAEH,KAAK,IAAKA,KAAK,CAACI,OAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACrE,MAAM,IAAIC,KAAK,CAAE,kBAAiBJ,aAAc,EAAC,CAAC;EACpD;EACA,OAAON,SAAS;AAClB;AAEA,SAASnD,IAAI,EAAEC,KAAK,EAAEP,eAAe"}
1
+ {"version":3,"file":"LogOps.js","names":["createLogApiKey","deleteLogApiKey","_deleteLogApiKey","getLogApiKeys","_getLogApiKeys","getSources","tail","fetch","getLogApiKey","state","getDefaultNoiseFilter","resolveLevel","level","resolvePayloadLevel","log","getLogSources","keyId","keyName","deleteLogApiKeys","source","cookie","startTs","endTs","unfilterableNoise","miscNoise","journeysNoise","journeys","samlNoise","saml","noise","concat","numLogLevelMap","logLevelMap","SEVERE","ERROR","FATAL","WARN","WARNING","CONFIG","INFO","INFORMATION","DEBUG","FINE","FINER","FINEST","ALL","Number","isNaN","parseInt","type","payload","match","e","sources","result","keys","key","responses","errors","api_key_id","push","error","length","errorMessages","map","message","join","Error"],"sources":["../../../src/ops/cloud/LogOps.ts"],"sourcesContent":["import {\n LogApiKey,\n LogEventPayloadSkeleton,\n LogEventSkeleton,\n PagedResult,\n} from '../../api/ApiTypes';\nimport {\n createLogApiKey,\n deleteLogApiKey as _deleteLogApiKey,\n getLogApiKeys as _getLogApiKeys,\n getSources,\n tail,\n fetch,\n getLogApiKey,\n} from '../../api/cloud/LogApi';\nimport { State } from '../../shared/State';\n\nexport type Log = {\n /**\n * Get default noise filter\n * @returns {string[]} array of default event types and loggers to be filtered out\n */\n getDefaultNoiseFilter(): string[];\n /**\n * Resolve log level to an array of effective log levels\n * @param level string or numeric log level: 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL', 0, 1, 2, 3, 4\n * @returns {string[]} array of effective log levels\n */\n resolveLevel(level: string | number): string[];\n /**\n * Resolve a log event's level\n * @param {object} log log event\n * @returns {string} log level\n */\n resolvePayloadLevel(log: LogEventSkeleton): string;\n /**\n * Get available log sources\n * @returns {Promise<string[]>} promise resolving to an array of available log sources\n */\n getLogSources(): Promise<string[]>;\n /**\n * Get log api key\n * @returns {Promise<LogApiKey>} promise resolving to a LogApiKey objects\n */\n getLogApiKey(keyId: string): Promise<LogApiKey>;\n /**\n * Get log api keys\n * @returns {Promise<LogApiKey[]>} promise resolving to an array of LogApiKey objects\n */\n getLogApiKeys(): Promise<LogApiKey[]>;\n /**\n * Create log api key\n * @param {string} keyName human-readable key name\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key and secret\n */\n createLogApiKey(keyName: string): Promise<LogApiKey>;\n /**\n * Delete log api key\n * @param {string} keyId key id\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key\n */\n deleteLogApiKey(keyId: string): Promise<LogApiKey>;\n /**\n * Delete all log api keys\n * @returns {Promise<LogApiKey>} a promise resolving to an array of log api key objects\n */\n deleteLogApiKeys(): Promise<LogApiKey[]>;\n /**\n * Tail logs\n * @param {string} source log source(s) to tail\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n tail(source: string, cookie: string): Promise<PagedResult<LogEventSkeleton>>;\n /**\n * Fetch logs\n * @param {string} source log source(s) to tail\n * @param {string} startTs start timestamp\n * @param {string} endTs end timestamp\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n fetch(\n source: string,\n startTs: string,\n endTs: string,\n cookie: string\n ): Promise<PagedResult<LogEventSkeleton>>;\n};\n\nexport default (state: State): Log => {\n return {\n /**\n * Get default noise filter\n * @returns {string[]} array of default event types and loggers to be filtered out\n */\n getDefaultNoiseFilter(): string[] {\n return getDefaultNoiseFilter();\n },\n\n /**\n * Resolve log level to an array of effective log levels\n * @param level string or numeric log level: 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL', 0, 1, 2, 3, 4\n * @returns {string[]} array of effective log levels\n */\n resolveLevel(level: string | number): string[] {\n return resolveLevel(level);\n },\n\n /**\n * Resolve a log event's level\n * @param {object} log log event\n * @returns {string} log level\n */\n resolvePayloadLevel(log: LogEventSkeleton): string {\n return resolvePayloadLevel(log);\n },\n\n /**\n * Get available log sources\n * @returns {Promise<string[]>} promise resolving to an array of available log sources\n */\n async getLogSources() {\n return getLogSources({ state });\n },\n\n /**\n * Get log api key\n * @returns {Promise<LogApiKey>} promise resolving to a LogApiKey objects\n */\n async getLogApiKey(keyId: string): Promise<LogApiKey> {\n return getLogApiKey({ keyId, state });\n },\n\n /**\n * Get log api keys\n * @returns {Promise<LogApiKey[]>} promise resolving to an array of LogApiKey objects\n */\n async getLogApiKeys(): Promise<LogApiKey[]> {\n return getLogApiKeys({ state });\n },\n\n /**\n * Create log api key\n * @param {string} keyName human-readable key name\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key and secret\n */\n async createLogApiKey(keyName: string): Promise<LogApiKey> {\n return createLogApiKey({ keyName, state });\n },\n\n /**\n * Delete log api key\n * @param {string} keyId key id\n * @returns {Promise<LogApiKey>} a promise resolving to an object containing the log api key\n */\n async deleteLogApiKey(keyId: string): Promise<LogApiKey> {\n return deleteLogApiKey({ keyId, state });\n },\n\n /**\n * Delete all log api keys\n * @returns {Promise<LogApiKey>} a promise resolving to an array of log api key objects\n */\n async deleteLogApiKeys(): Promise<LogApiKey[]> {\n return deleteLogApiKeys({ state });\n },\n\n /**\n * Tail logs\n * @param {string} source log source(s) to tail\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n tail(\n source: string,\n cookie: string\n ): Promise<PagedResult<LogEventSkeleton>> {\n return tail({ source, cookie, state });\n },\n\n /**\n * Fetch logs\n * @param {string} source log source(s) to tail\n * @param {string} startTs start timestamp\n * @param {string} endTs end timestamp\n * @param {string} cookie paged results cookie\n * @returns {Promise<PagedResult<LogEventSkeleton>>} promise resolving to paged log event result\n */\n async fetch(\n source: string,\n startTs: string,\n endTs: string,\n cookie: string\n ): Promise<PagedResult<LogEventSkeleton>> {\n return fetch({ source, startTs, endTs, cookie, state });\n },\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\n/**\n * Get default noise filter\n * @returns {string[]} array of default event types and loggers to be filtered out\n */\nexport function getDefaultNoiseFilter(): string[] {\n return noise;\n}\n\n/**\n * Resolve log level to an array of effective log levels\n * @param level string or numeric log level: 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL', 0, 1, 2, 3, 4\n * @returns {string[]} array of effective log levels\n */\nexport function resolveLevel(level: string | number): string[] {\n if (Number.isNaN(parseInt(level as string, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level as number][0]];\n}\n\n/**\n * Resolve a log event's level\n * @param {object} log log event\n * @returns {string} log level\n */\nexport function resolvePayloadLevel(log: LogEventSkeleton): string {\n // It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n // Therefore, for those, this function returns null, and thus filters out the undesirable\n try {\n return log.type !== 'text/plain'\n ? (log.payload as LogEventPayloadSkeleton).level\n : (log.payload as string).match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\n/**\n * Get available log sources\n * @returns {Promise<string[]>} promise resolving to an array of available log sources\n */\nexport async function getLogSources({ state }: { state: State }) {\n const sources = (await getSources({ state })).result;\n return sources;\n}\n\n/**\n * Get log api keys\n * @returns {Promise<LogApiKey[]>} promise resolving to an array of LogApiKey objects\n */\nexport async function getLogApiKeys({\n state,\n}: {\n state: State;\n}): Promise<LogApiKey[]> {\n const keys = (await _getLogApiKeys({ state })).result;\n return keys;\n}\n\n/**\n * Delete all keys\n */\nexport async function deleteLogApiKey({\n keyId,\n state,\n}: {\n keyId: string;\n state: State;\n}): Promise<LogApiKey> {\n const key = await getLogApiKey({ keyId, state });\n await _deleteLogApiKey({ keyId, state });\n return key;\n}\n\n/**\n * Delete all keys\n */\nexport async function deleteLogApiKeys({\n state,\n}: {\n state: State;\n}): Promise<LogApiKey[]> {\n const responses = [];\n const errors = [];\n try {\n const keys = await getLogApiKeys({ state });\n for (const key of keys) {\n try {\n await deleteLogApiKey({\n keyId: key.api_key_id,\n state,\n });\n responses.push(key);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n return responses;\n}\n\nexport { tail, fetch, createLogApiKey };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsOps.js","names":["createNewVersionOfSecret","deleteSecret","deleteVersionOfSecret","getSecret","getSecrets","getSecretVersions","getVersionOfSecret","putSecret","setSecretDescription","setStatusOfVersionOfSecret","state","secretId","value","description","encoding","useInPlaceholders","version","status"],"sources":["../../../src/ops/cloud/SecretsOps.ts"],"sourcesContent":["import { VersionOfSecretStatus } from '../../api/ApiTypes';\nimport {\n createNewVersionOfSecret,\n deleteSecret,\n deleteVersionOfSecret,\n getSecret,\n getSecrets,\n getSecretVersions,\n getVersionOfSecret,\n putSecret,\n setSecretDescription,\n setStatusOfVersionOfSecret,\n} from '../../api/cloud/SecretsApi';\nimport State from '../../shared/State';\n\nexport default (state: State) => {\n return {\n /**\n * Get all secrets\n * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets\n */\n async getSecrets() {\n return getSecrets({ state });\n },\n\n /**\n * Get secret\n * @param secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n async getSecret(secretId: string) {\n return getSecret({ secretId, state });\n },\n\n /**\n * Create secret\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @param {string} description secret description\n * @param {string} encoding secret encoding (only `generic` is supported)\n * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n async putSecret(\n secretId: string,\n value: string,\n description: string,\n encoding = 'generic',\n useInPlaceholders = true\n ) {\n return putSecret({\n secretId,\n value,\n description,\n encoding,\n useInPlaceholders,\n state,\n });\n },\n\n /**\n * Set secret description\n * @param {string} secretId secret id/name\n * @param {string} description secret description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n async setSecretDescription(secretId: string, description: string) {\n return setSecretDescription({ secretId, description, state });\n },\n\n /**\n * Delete secret\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret object\n */\n async deleteSecret(secretId: string) {\n return deleteSecret({ secretId, state });\n },\n\n /**\n * Get secret versions\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to an array of secret versions\n */\n async getSecretVersions(secretId: string) {\n return getSecretVersions({ secretId, state });\n },\n\n /**\n * Create new secret version\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async createNewVersionOfSecret(secretId: string, value: string) {\n return createNewVersionOfSecret({ secretId, value, state });\n },\n\n /**\n * Get version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async getVersionOfSecret(secretId: string, version: string) {\n return getVersionOfSecret({ secretId, version, state });\n },\n\n /**\n * Update the status of a version of a secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @param {VersionOfSecretStatus} status status\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n async setStatusOfVersionOfSecret(\n secretId: string,\n version: string,\n status: VersionOfSecretStatus\n ) {\n return setStatusOfVersionOfSecret({\n secretId,\n version,\n status,\n state,\n });\n },\n\n /**\n * Delete version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async deleteVersionOfSecret(secretId: string, version: string) {\n return deleteVersionOfSecret({ secretId, version, state });\n },\n };\n};\n\nexport {\n createNewVersionOfSecret,\n deleteSecret,\n deleteVersionOfSecret,\n getSecret,\n getSecrets,\n getSecretVersions,\n putSecret,\n setSecretDescription,\n setStatusOfVersionOfSecret,\n};\n"],"mappings":"SAEEA,wBAAwB,EACxBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBC,kBAAkB,EAClBC,SAAS,EACTC,oBAAoB,EACpBC,0BAA0B;AAI5B,gBAAgBC,KAAY,IAAK;EAC/B,OAAO;IACL;AACJ;AACA;AACA;IACI,MAAMN,UAAUA,CAAA,EAAG;MACjB,OAAOA,UAAU,CAAC;QAAEM;MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMP,SAASA,CAACQ,QAAgB,EAAE;MAChC,OAAOR,SAAS,CAAC;QAAEQ,QAAQ;QAAED;MAAM,CAAC,CAAC;IACvC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAMH,SAASA,CACbI,QAAgB,EAChBC,KAAa,EACbC,WAAmB,EACnBC,QAAQ,GAAG,SAAS,EACpBC,iBAAiB,GAAG,IAAI,EACxB;MACA,OAAOR,SAAS,CAAC;QACfI,QAAQ;QACRC,KAAK;QACLC,WAAW;QACXC,QAAQ;QACRC,iBAAiB;QACjBL;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMF,oBAAoBA,CAACG,QAAgB,EAAEE,WAAmB,EAAE;MAChE,OAAOL,oBAAoB,CAAC;QAAEG,QAAQ;QAAEE,WAAW;QAAEH;MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMT,YAAYA,CAACU,QAAgB,EAAE;MACnC,OAAOV,YAAY,CAAC;QAAEU,QAAQ;QAAED;MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAML,iBAAiBA,CAACM,QAAgB,EAAE;MACxC,OAAON,iBAAiB,CAAC;QAAEM,QAAQ;QAAED;MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMV,wBAAwBA,CAACW,QAAgB,EAAEC,KAAa,EAAE;MAC9D,OAAOZ,wBAAwB,CAAC;QAAEW,QAAQ;QAAEC,KAAK;QAAEF;MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMJ,kBAAkBA,CAACK,QAAgB,EAAEK,OAAe,EAAE;MAC1D,OAAOV,kBAAkB,CAAC;QAAEK,QAAQ;QAAEK,OAAO;QAAEN;MAAM,CAAC,CAAC;IACzD,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,MAAMD,0BAA0BA,CAC9BE,QAAgB,EAChBK,OAAe,EACfC,MAA6B,EAC7B;MACA,OAAOR,0BAA0B,CAAC;QAChCE,QAAQ;QACRK,OAAO;QACPC,MAAM;QACNP;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMR,qBAAqBA,CAACS,QAAgB,EAAEK,OAAe,EAAE;MAC7D,OAAOd,qBAAqB,CAAC;QAAES,QAAQ;QAAEK,OAAO;QAAEN;MAAM,CAAC,CAAC;IAC5D;EACF,CAAC;AACH,CAAC;AAED,SACEV,wBAAwB,EACxBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBE,SAAS,EACTC,oBAAoB,EACpBC,0BAA0B"}
1
+ {"version":3,"file":"SecretsOps.js","names":["createNewVersionOfSecret","deleteSecret","deleteVersionOfSecret","getSecret","getSecrets","getSecretVersions","getVersionOfSecret","putSecret","setSecretDescription","setStatusOfVersionOfSecret","state","secretId","value","description","encoding","useInPlaceholders","version","status"],"sources":["../../../src/ops/cloud/SecretsOps.ts"],"sourcesContent":["import { VersionOfSecretStatus } from '../../api/ApiTypes';\nimport {\n createNewVersionOfSecret,\n deleteSecret,\n deleteVersionOfSecret,\n getSecret,\n getSecrets,\n getSecretVersions,\n getVersionOfSecret,\n putSecret,\n setSecretDescription,\n setStatusOfVersionOfSecret,\n} from '../../api/cloud/SecretsApi';\nimport { State } from '../../shared/State';\n\nexport type Secret = {\n /**\n * Get all secrets\n * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets\n */\n getSecrets(): Promise<any>;\n /**\n * Get secret\n * @param secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n getSecret(secretId: string): Promise<any>;\n /**\n * Create secret\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @param {string} description secret description\n * @param {string} encoding secret encoding (only `generic` is supported)\n * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n putSecret(\n secretId: string,\n value: string,\n description: string,\n encoding?: string,\n useInPlaceholders?: boolean\n ): Promise<any>;\n /**\n * Set secret description\n * @param {string} secretId secret id/name\n * @param {string} description secret description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n setSecretDescription(secretId: string, description: string): Promise<any>;\n /**\n * Delete secret\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret object\n */\n deleteSecret(secretId: string): Promise<any>;\n /**\n * Get secret versions\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to an array of secret versions\n */\n getSecretVersions(secretId: string): Promise<any>;\n /**\n * Create new secret version\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n createNewVersionOfSecret(secretId: string, value: string): Promise<any>;\n /**\n * Get version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n getVersionOfSecret(secretId: string, version: string): Promise<any>;\n /**\n * Update the status of a version of a secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @param {VersionOfSecretStatus} status status\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n setStatusOfVersionOfSecret(\n secretId: string,\n version: string,\n status: VersionOfSecretStatus\n ): Promise<any>;\n /**\n * Delete version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n deleteVersionOfSecret(secretId: string, version: string): Promise<any>;\n};\n\nexport default (state: State): Secret => {\n return {\n /**\n * Get all secrets\n * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets\n */\n async getSecrets() {\n return getSecrets({ state });\n },\n\n /**\n * Get secret\n * @param secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n async getSecret(secretId: string) {\n return getSecret({ secretId, state });\n },\n\n /**\n * Create secret\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @param {string} description secret description\n * @param {string} encoding secret encoding (only `generic` is supported)\n * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\n async putSecret(\n secretId: string,\n value: string,\n description: string,\n encoding = 'generic',\n useInPlaceholders = true\n ) {\n return putSecret({\n secretId,\n value,\n description,\n encoding,\n useInPlaceholders,\n state,\n });\n },\n\n /**\n * Set secret description\n * @param {string} secretId secret id/name\n * @param {string} description secret description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n async setSecretDescription(secretId: string, description: string) {\n return setSecretDescription({ secretId, description, state });\n },\n\n /**\n * Delete secret\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret object\n */\n async deleteSecret(secretId: string) {\n return deleteSecret({ secretId, state });\n },\n\n /**\n * Get secret versions\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to an array of secret versions\n */\n async getSecretVersions(secretId: string) {\n return getSecretVersions({ secretId, state });\n },\n\n /**\n * Create new secret version\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async createNewVersionOfSecret(secretId: string, value: string) {\n return createNewVersionOfSecret({ secretId, value, state });\n },\n\n /**\n * Get version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async getVersionOfSecret(secretId: string, version: string) {\n return getVersionOfSecret({ secretId, version, state });\n },\n\n /**\n * Update the status of a version of a secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @param {VersionOfSecretStatus} status status\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n async setStatusOfVersionOfSecret(\n secretId: string,\n version: string,\n status: VersionOfSecretStatus\n ) {\n return setStatusOfVersionOfSecret({\n secretId,\n version,\n status,\n state,\n });\n },\n\n /**\n * Delete version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\n async deleteVersionOfSecret(secretId: string, version: string) {\n return deleteVersionOfSecret({ secretId, version, state });\n },\n };\n};\n\nexport {\n createNewVersionOfSecret,\n deleteSecret,\n deleteVersionOfSecret,\n getSecret,\n getSecrets,\n getSecretVersions,\n putSecret,\n setSecretDescription,\n setStatusOfVersionOfSecret,\n};\n"],"mappings":"SAEEA,wBAAwB,EACxBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBC,kBAAkB,EAClBC,SAAS,EACTC,oBAAoB,EACpBC,0BAA0B;AAsF5B,gBAAgBC,KAAY,IAAa;EACvC,OAAO;IACL;AACJ;AACA;AACA;IACI,MAAMN,UAAUA,CAAA,EAAG;MACjB,OAAOA,UAAU,CAAC;QAAEM;MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMP,SAASA,CAACQ,QAAgB,EAAE;MAChC,OAAOR,SAAS,CAAC;QAAEQ,QAAQ;QAAED;MAAM,CAAC,CAAC;IACvC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAMH,SAASA,CACbI,QAAgB,EAChBC,KAAa,EACbC,WAAmB,EACnBC,QAAQ,GAAG,SAAS,EACpBC,iBAAiB,GAAG,IAAI,EACxB;MACA,OAAOR,SAAS,CAAC;QACfI,QAAQ;QACRC,KAAK;QACLC,WAAW;QACXC,QAAQ;QACRC,iBAAiB;QACjBL;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMF,oBAAoBA,CAACG,QAAgB,EAAEE,WAAmB,EAAE;MAChE,OAAOL,oBAAoB,CAAC;QAAEG,QAAQ;QAAEE,WAAW;QAAEH;MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMT,YAAYA,CAACU,QAAgB,EAAE;MACnC,OAAOV,YAAY,CAAC;QAAEU,QAAQ;QAAED;MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAML,iBAAiBA,CAACM,QAAgB,EAAE;MACxC,OAAON,iBAAiB,CAAC;QAAEM,QAAQ;QAAED;MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMV,wBAAwBA,CAACW,QAAgB,EAAEC,KAAa,EAAE;MAC9D,OAAOZ,wBAAwB,CAAC;QAAEW,QAAQ;QAAEC,KAAK;QAAEF;MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMJ,kBAAkBA,CAACK,QAAgB,EAAEK,OAAe,EAAE;MAC1D,OAAOV,kBAAkB,CAAC;QAAEK,QAAQ;QAAEK,OAAO;QAAEN;MAAM,CAAC,CAAC;IACzD,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,MAAMD,0BAA0BA,CAC9BE,QAAgB,EAChBK,OAAe,EACfC,MAA6B,EAC7B;MACA,OAAOR,0BAA0B,CAAC;QAChCE,QAAQ;QACRK,OAAO;QACPC,MAAM;QACNP;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMR,qBAAqBA,CAACS,QAAgB,EAAEK,OAAe,EAAE;MAC7D,OAAOd,qBAAqB,CAAC;QAAES,QAAQ;QAAEK,OAAO;QAAEN;MAAM,CAAC,CAAC;IAC5D;EACF,CAAC;AACH,CAAC;AAED,SACEV,wBAAwB,EACxBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBE,SAAS,EACTC,oBAAoB,EACpBC,0BAA0B"}
@@ -35,7 +35,7 @@ export default (state => {
35
35
  /**
36
36
  * Get service account
37
37
  * @param {string} serviceAccountId service account id
38
- * @returns {Promise<ServiceAccount>} a promise resolving to a service account object
38
+ * @returns {Promise<ServiceAccountType>} a promise resolving to a service account object
39
39
  */
40
40
  async getServiceAccount(serviceAccountId) {
41
41
  return getServiceAccount({
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceAccountOps.js","names":["createManagedObject","getManagedObject","debugMessage","hasFeature","getTenantURL","state","isServiceAccountsFeatureAvailable","createServiceAccount","name","description","accountStatus","scopes","jwks","getServiceAccount","serviceAccountId","moType","message","featureAvailable","featureId","payload","JSON","stringify","result","getHost","serviceAccount","baseUrl","type","id","fields"],"sources":["../../../src/ops/cloud/ServiceAccountOps.ts"],"sourcesContent":["import {\n createManagedObject,\n getManagedObject,\n} from '../../api/ManagedObjectApi';\nimport { JwksInterface } from '../JoseOps';\nimport { IdObjectSkeletonInterface } from '../../api/ApiTypes';\nimport { debugMessage } from '../utils/Console';\nimport { hasFeature } from './FeatureOps';\nimport { getTenantURL } from '../../api/utils/ApiUtils';\nimport State from '../../shared/State';\n\nexport default (state: State) => {\n return {\n /**\n * Check if service accounts are available\n * @returns {Promise<boolean>} true if service accounts are available, false otherwise\n */\n async isServiceAccountsFeatureAvailable(): Promise<boolean> {\n return isServiceAccountsFeatureAvailable({ state });\n },\n\n /**\n * Create service account\n * @param {string} name Human-readable name of service account\n * @param {string} description Description of service account\n * @param {'Active' | 'Inactive'} accountStatus Service account status\n * @param {string[]} scopes Scopes.\n * @param {JwksInterface} jwks Java Web Key Set\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async createServiceAccount(\n name: string,\n description: string,\n accountStatus: 'Active' | 'Inactive',\n scopes: string[],\n jwks: JwksInterface\n ): Promise<IdObjectSkeletonInterface> {\n return createServiceAccount({\n name,\n description,\n accountStatus,\n scopes,\n jwks,\n state,\n });\n },\n\n /**\n * Get service account\n * @param {string} serviceAccountId service account id\n * @returns {Promise<ServiceAccount>} a promise resolving to a service account object\n */\n async getServiceAccount(serviceAccountId: string) {\n return getServiceAccount({ serviceAccountId, state });\n },\n };\n};\n\nconst moType = 'svcacct';\n\nexport interface ServiceAccountPayloadInterface {\n name: string;\n description: string;\n accountStatus: 'Active' | 'Inactive';\n scopes: string[];\n jwks: string;\n}\n\nexport type ServiceAccount = IdObjectSkeletonInterface &\n ServiceAccountPayloadInterface;\n\n/**\n * Check if service accounts are available\n * @returns {Promise<boolean>} true if service accounts are available, false otherwise\n */\nexport async function isServiceAccountsFeatureAvailable({\n state,\n}: {\n state: State;\n}): Promise<boolean> {\n debugMessage({\n message: `ServiceAccountOps.isServiceAccountsFeatureAvailable: start`,\n state,\n });\n const featureAvailable = await hasFeature({\n featureId: 'service-accounts',\n state,\n });\n debugMessage({\n message: `ServiceAccountOps.isServiceAccountsFeatureAvailable: end, available=${featureAvailable}`,\n state,\n });\n return featureAvailable;\n}\n\n/**\n * Create service account\n * @param {string} name Human-readable name of service account\n * @param {string} description Description of service account\n * @param {'Active' | 'Inactive'} accountStatus Service account status\n * @param {string[]} scopes Scopes.\n * @param {JwksInterface} jwks Java Web Key Set\n * @param {State} state library state\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function createServiceAccount({\n name,\n description,\n accountStatus,\n scopes,\n jwks,\n state,\n}: {\n name: string;\n description: string;\n accountStatus: 'Active' | 'Inactive';\n scopes: string[];\n jwks: JwksInterface;\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage({\n message: `ServiceAccountOps.createServiceAccount: start`,\n state,\n });\n const payload: ServiceAccountPayloadInterface = {\n name,\n description,\n accountStatus,\n scopes,\n jwks: JSON.stringify(jwks),\n };\n debugMessage({\n message: `ServiceAccountOps: createServiceAccount: payload:`,\n state,\n });\n debugMessage({ message: payload, state });\n const result = await createManagedObject(\n getTenantURL(state.getHost()),\n moType,\n payload,\n state\n );\n debugMessage({\n message: `ServiceAccountOps.createServiceAccount: end`,\n state,\n });\n return result;\n}\n\n/**\n * Get service account\n * @param {string} serviceAccountId service account id\n * @param {State} state library state\n * @returns {Promise} a promise resolving to a service account object\n */\nexport async function getServiceAccount({\n serviceAccountId,\n state,\n}: {\n serviceAccountId: string;\n state: State;\n}) {\n const serviceAccount = await getManagedObject({\n baseUrl: getTenantURL(state.getHost()),\n type: moType,\n id: serviceAccountId,\n fields: ['*'],\n state,\n });\n return serviceAccount as ServiceAccount;\n}\n"],"mappings":"SACEA,mBAAmB,EACnBC,gBAAgB;AAAA,SAITC,YAAY;AAAA,SACZC,UAAU;AAAA,SACVC,YAAY;AAGrB,gBAAgBC,KAAY,IAAK;EAC/B,OAAO;IACL;AACJ;AACA;AACA;IACI,MAAMC,iCAAiCA,CAAA,EAAqB;MAC1D,OAAOA,iCAAiC,CAAC;QAAED;MAAM,CAAC,CAAC;IACrD,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAME,oBAAoBA,CACxBC,IAAY,EACZC,WAAmB,EACnBC,aAAoC,EACpCC,MAAgB,EAChBC,IAAmB,EACiB;MACpC,OAAOL,oBAAoB,CAAC;QAC1BC,IAAI;QACJC,WAAW;QACXC,aAAa;QACbC,MAAM;QACNC,IAAI;QACJP;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMQ,iBAAiBA,CAACC,gBAAwB,EAAE;MAChD,OAAOD,iBAAiB,CAAC;QAAEC,gBAAgB;QAAET;MAAM,CAAC,CAAC;IACvD;EACF,CAAC;AACH,CAAC;AAED,MAAMU,MAAM,GAAG,SAAS;AAaxB;AACA;AACA;AACA;AACA,OAAO,eAAeT,iCAAiCA,CAAC;EACtDD;AAGF,CAAC,EAAoB;EACnBH,YAAY,CAAC;IACXc,OAAO,EAAG,4DAA2D;IACrEX;EACF,CAAC,CAAC;EACF,MAAMY,gBAAgB,GAAG,MAAMd,UAAU,CAAC;IACxCe,SAAS,EAAE,kBAAkB;IAC7Bb;EACF,CAAC,CAAC;EACFH,YAAY,CAAC;IACXc,OAAO,EAAG,uEAAsEC,gBAAiB,EAAC;IAClGZ;EACF,CAAC,CAAC;EACF,OAAOY,gBAAgB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeV,oBAAoBA,CAAC;EACzCC,IAAI;EACJC,WAAW;EACXC,aAAa;EACbC,MAAM;EACNC,IAAI;EACJP;AAQF,CAAC,EAAsC;EACrCH,YAAY,CAAC;IACXc,OAAO,EAAG,+CAA8C;IACxDX;EACF,CAAC,CAAC;EACF,MAAMc,OAAuC,GAAG;IAC9CX,IAAI;IACJC,WAAW;IACXC,aAAa;IACbC,MAAM;IACNC,IAAI,EAAEQ,IAAI,CAACC,SAAS,CAACT,IAAI;EAC3B,CAAC;EACDV,YAAY,CAAC;IACXc,OAAO,EAAG,mDAAkD;IAC5DX;EACF,CAAC,CAAC;EACFH,YAAY,CAAC;IAAEc,OAAO,EAAEG,OAAO;IAAEd;EAAM,CAAC,CAAC;EACzC,MAAMiB,MAAM,GAAG,MAAMtB,mBAAmB,CACtCI,YAAY,CAACC,KAAK,CAACkB,OAAO,CAAC,CAAC,CAAC,EAC7BR,MAAM,EACNI,OAAO,EACPd,KACF,CAAC;EACDH,YAAY,CAAC;IACXc,OAAO,EAAG,6CAA4C;IACtDX;EACF,CAAC,CAAC;EACF,OAAOiB,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeT,iBAAiBA,CAAC;EACtCC,gBAAgB;EAChBT;AAIF,CAAC,EAAE;EACD,MAAMmB,cAAc,GAAG,MAAMvB,gBAAgB,CAAC;IAC5CwB,OAAO,EAAErB,YAAY,CAACC,KAAK,CAACkB,OAAO,CAAC,CAAC,CAAC;IACtCG,IAAI,EAAEX,MAAM;IACZY,EAAE,EAAEb,gBAAgB;IACpBc,MAAM,EAAE,CAAC,GAAG,CAAC;IACbvB;EACF,CAAC,CAAC;EACF,OAAOmB,cAAc;AACvB"}
1
+ {"version":3,"file":"ServiceAccountOps.js","names":["createManagedObject","getManagedObject","debugMessage","hasFeature","getTenantURL","state","isServiceAccountsFeatureAvailable","createServiceAccount","name","description","accountStatus","scopes","jwks","getServiceAccount","serviceAccountId","moType","message","featureAvailable","featureId","payload","JSON","stringify","result","getHost","serviceAccount","baseUrl","type","id","fields"],"sources":["../../../src/ops/cloud/ServiceAccountOps.ts"],"sourcesContent":["import {\n createManagedObject,\n getManagedObject,\n} from '../../api/ManagedObjectApi';\nimport { JwksInterface } from '../JoseOps';\nimport { IdObjectSkeletonInterface } from '../../api/ApiTypes';\nimport { debugMessage } from '../utils/Console';\nimport { hasFeature } from './FeatureOps';\nimport { getTenantURL } from '../../api/utils/ApiUtils';\nimport { State } from '../../shared/State';\n\nexport type ServiceAccount = {\n /**\n * Check if service accounts are available\n * @returns {Promise<boolean>} true if service accounts are available, false otherwise\n */\n isServiceAccountsFeatureAvailable(): Promise<boolean>;\n /**\n * Create service account\n * @param {string} name Human-readable name of service account\n * @param {string} description Description of service account\n * @param {'Active' | 'Inactive'} accountStatus Service account status\n * @param {string[]} scopes Scopes.\n * @param {JwksInterface} jwks Java Web Key Set\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n createServiceAccount(\n name: string,\n description: string,\n accountStatus: 'Active' | 'Inactive',\n scopes: string[],\n jwks: JwksInterface\n ): Promise<IdObjectSkeletonInterface>;\n /**\n * Get service account\n * @param {string} serviceAccountId service account id\n * @returns {Promise<ServiceAccountType>} a promise resolving to a service account object\n */\n getServiceAccount(serviceAccountId: string): Promise<ServiceAccountType>;\n};\n\nexport default (state: State): ServiceAccount => {\n return {\n /**\n * Check if service accounts are available\n * @returns {Promise<boolean>} true if service accounts are available, false otherwise\n */\n async isServiceAccountsFeatureAvailable(): Promise<boolean> {\n return isServiceAccountsFeatureAvailable({ state });\n },\n\n /**\n * Create service account\n * @param {string} name Human-readable name of service account\n * @param {string} description Description of service account\n * @param {'Active' | 'Inactive'} accountStatus Service account status\n * @param {string[]} scopes Scopes.\n * @param {JwksInterface} jwks Java Web Key Set\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async createServiceAccount(\n name: string,\n description: string,\n accountStatus: 'Active' | 'Inactive',\n scopes: string[],\n jwks: JwksInterface\n ): Promise<IdObjectSkeletonInterface> {\n return createServiceAccount({\n name,\n description,\n accountStatus,\n scopes,\n jwks,\n state,\n });\n },\n\n /**\n * Get service account\n * @param {string} serviceAccountId service account id\n * @returns {Promise<ServiceAccountType>} a promise resolving to a service account object\n */\n async getServiceAccount(serviceAccountId: string) {\n return getServiceAccount({ serviceAccountId, state });\n },\n };\n};\n\nconst moType = 'svcacct';\n\nexport interface ServiceAccountPayloadInterface {\n name: string;\n description: string;\n accountStatus: 'Active' | 'Inactive';\n scopes: string[];\n jwks: string;\n}\n\nexport type ServiceAccountType = IdObjectSkeletonInterface &\n ServiceAccountPayloadInterface;\n\n/**\n * Check if service accounts are available\n * @returns {Promise<boolean>} true if service accounts are available, false otherwise\n */\nexport async function isServiceAccountsFeatureAvailable({\n state,\n}: {\n state: State;\n}): Promise<boolean> {\n debugMessage({\n message: `ServiceAccountOps.isServiceAccountsFeatureAvailable: start`,\n state,\n });\n const featureAvailable = await hasFeature({\n featureId: 'service-accounts',\n state,\n });\n debugMessage({\n message: `ServiceAccountOps.isServiceAccountsFeatureAvailable: end, available=${featureAvailable}`,\n state,\n });\n return featureAvailable;\n}\n\n/**\n * Create service account\n * @param {string} name Human-readable name of service account\n * @param {string} description Description of service account\n * @param {'Active' | 'Inactive'} accountStatus Service account status\n * @param {string[]} scopes Scopes.\n * @param {JwksInterface} jwks Java Web Key Set\n * @param {State} state library state\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function createServiceAccount({\n name,\n description,\n accountStatus,\n scopes,\n jwks,\n state,\n}: {\n name: string;\n description: string;\n accountStatus: 'Active' | 'Inactive';\n scopes: string[];\n jwks: JwksInterface;\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage({\n message: `ServiceAccountOps.createServiceAccount: start`,\n state,\n });\n const payload: ServiceAccountPayloadInterface = {\n name,\n description,\n accountStatus,\n scopes,\n jwks: JSON.stringify(jwks),\n };\n debugMessage({\n message: `ServiceAccountOps: createServiceAccount: payload:`,\n state,\n });\n debugMessage({ message: payload, state });\n const result = await createManagedObject(\n getTenantURL(state.getHost()),\n moType,\n payload,\n state\n );\n debugMessage({\n message: `ServiceAccountOps.createServiceAccount: end`,\n state,\n });\n return result;\n}\n\n/**\n * Get service account\n * @param {string} serviceAccountId service account id\n * @param {State} state library state\n * @returns {Promise} a promise resolving to a service account object\n */\nexport async function getServiceAccount({\n serviceAccountId,\n state,\n}: {\n serviceAccountId: string;\n state: State;\n}) {\n const serviceAccount = await getManagedObject({\n baseUrl: getTenantURL(state.getHost()),\n type: moType,\n id: serviceAccountId,\n fields: ['*'],\n state,\n });\n return serviceAccount as ServiceAccountType;\n}\n"],"mappings":"SACEA,mBAAmB,EACnBC,gBAAgB;AAAA,SAITC,YAAY;AAAA,SACZC,UAAU;AAAA,SACVC,YAAY;AAiCrB,gBAAgBC,KAAY,IAAqB;EAC/C,OAAO;IACL;AACJ;AACA;AACA;IACI,MAAMC,iCAAiCA,CAAA,EAAqB;MAC1D,OAAOA,iCAAiC,CAAC;QAAED;MAAM,CAAC,CAAC;IACrD,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAME,oBAAoBA,CACxBC,IAAY,EACZC,WAAmB,EACnBC,aAAoC,EACpCC,MAAgB,EAChBC,IAAmB,EACiB;MACpC,OAAOL,oBAAoB,CAAC;QAC1BC,IAAI;QACJC,WAAW;QACXC,aAAa;QACbC,MAAM;QACNC,IAAI;QACJP;MACF,CAAC,CAAC;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;IACI,MAAMQ,iBAAiBA,CAACC,gBAAwB,EAAE;MAChD,OAAOD,iBAAiB,CAAC;QAAEC,gBAAgB;QAAET;MAAM,CAAC,CAAC;IACvD;EACF,CAAC;AACH,CAAC;AAED,MAAMU,MAAM,GAAG,SAAS;AAaxB;AACA;AACA;AACA;AACA,OAAO,eAAeT,iCAAiCA,CAAC;EACtDD;AAGF,CAAC,EAAoB;EACnBH,YAAY,CAAC;IACXc,OAAO,EAAG,4DAA2D;IACrEX;EACF,CAAC,CAAC;EACF,MAAMY,gBAAgB,GAAG,MAAMd,UAAU,CAAC;IACxCe,SAAS,EAAE,kBAAkB;IAC7Bb;EACF,CAAC,CAAC;EACFH,YAAY,CAAC;IACXc,OAAO,EAAG,uEAAsEC,gBAAiB,EAAC;IAClGZ;EACF,CAAC,CAAC;EACF,OAAOY,gBAAgB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeV,oBAAoBA,CAAC;EACzCC,IAAI;EACJC,WAAW;EACXC,aAAa;EACbC,MAAM;EACNC,IAAI;EACJP;AAQF,CAAC,EAAsC;EACrCH,YAAY,CAAC;IACXc,OAAO,EAAG,+CAA8C;IACxDX;EACF,CAAC,CAAC;EACF,MAAMc,OAAuC,GAAG;IAC9CX,IAAI;IACJC,WAAW;IACXC,aAAa;IACbC,MAAM;IACNC,IAAI,EAAEQ,IAAI,CAACC,SAAS,CAACT,IAAI;EAC3B,CAAC;EACDV,YAAY,CAAC;IACXc,OAAO,EAAG,mDAAkD;IAC5DX;EACF,CAAC,CAAC;EACFH,YAAY,CAAC;IAAEc,OAAO,EAAEG,OAAO;IAAEd;EAAM,CAAC,CAAC;EACzC,MAAMiB,MAAM,GAAG,MAAMtB,mBAAmB,CACtCI,YAAY,CAACC,KAAK,CAACkB,OAAO,CAAC,CAAC,CAAC,EAC7BR,MAAM,EACNI,OAAO,EACPd,KACF,CAAC;EACDH,YAAY,CAAC;IACXc,OAAO,EAAG,6CAA4C;IACtDX;EACF,CAAC,CAAC;EACF,OAAOiB,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeT,iBAAiBA,CAAC;EACtCC,gBAAgB;EAChBT;AAIF,CAAC,EAAE;EACD,MAAMmB,cAAc,GAAG,MAAMvB,gBAAgB,CAAC;IAC5CwB,OAAO,EAAErB,YAAY,CAACC,KAAK,CAACkB,OAAO,CAAC,CAAC,CAAC;IACtCG,IAAI,EAAEX,MAAM;IACZY,EAAE,EAAEb,gBAAgB;IACpBc,MAAM,EAAE,CAAC,GAAG,CAAC;IACbvB;EACF,CAAC,CAAC;EACF,OAAOmB,cAAc;AACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"StartupOps.js","names":["createProgressIndicator","updateProgressIndicator","stopProgressIndicator","getSecrets","getStatus","initiateRestart","RestartStatus","getVariables","state","checkForUpdates","applyUpdates","wait","timeout","_updates$secrets","_updates$variables","updates","secrets","variables","total","undefined","message","type","result","filter","secret","loaded","variable","error","response","data","code","status","updateCount","length","start","Date","getTime","runtime","errors","maxErrors","ready","Promise","resolve","setTimeout","Math","round","_error$response","_error$response$data","_error$response2","_error$response2$data"],"sources":["../../../src/ops/cloud/StartupOps.ts"],"sourcesContent":["import {\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getSecrets } from '../../api/cloud/SecretsApi';\nimport {\n getStatus,\n initiateRestart,\n RestartStatus,\n} from '../../api/cloud/StartupApi';\nimport { getVariables } from '../../api/cloud/VariablesApi';\nimport State from '../../shared/State';\n\nexport default (state: State) => {\n return {\n /**\n * Check for updates that need applying\n * @returns {Promise<Updates>} true if there are updates that need to be applied, false otherwise\n */\n async checkForUpdates(): Promise<Updates> {\n return checkForUpdates({ state });\n },\n\n /**\n * Apply updates\n * @param {boolean} wait wait for the operation to complete or not\n * @param {number} timeout timeout in milliseconds\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\n async applyUpdates(wait: boolean, timeout: number = 10 * 60 * 1000) {\n return applyUpdates({\n wait,\n timeout,\n state,\n });\n },\n };\n};\n\n/**\n * Updates that need to be applied.\n */\nexport interface Updates {\n /**\n * Array of secrets that need applying\n */\n secrets?: unknown[];\n /**\n * Array of variables that need applying\n */\n variables?: unknown[];\n}\n\n/**\n * Check for updates that need applying\n * @returns {Promise<boolean>} true if there are updates that need to be applied, false otherwise\n */\nexport async function checkForUpdates({\n state,\n}: {\n state: State;\n}): Promise<Updates> {\n const updates: Updates = { secrets: [], variables: [] };\n createProgressIndicator({\n total: undefined,\n message: `Checking for updates to apply...`,\n type: 'indeterminate',\n state,\n });\n try {\n updates.secrets = (await getSecrets({ state })).result.filter(\n (secret: { loaded: unknown }) => !secret.loaded\n );\n updates.variables = (await getVariables({ state })).result.filter(\n (variable: { loaded: unknown }) => !variable.loaded\n );\n } catch (error) {\n stopProgressIndicator({\n message: `Error: ${error.response.data.code} - ${error.response.data.message}`,\n status: 'fail',\n state,\n });\n }\n const updateCount = updates.secrets?.length + updates.variables?.length || 0;\n if (updateCount > 0) {\n stopProgressIndicator({\n message: `${updateCount} update(s) need to be applied`,\n status: 'success',\n state,\n });\n } else {\n stopProgressIndicator({\n message: `No updates need to be applied`,\n status: 'success',\n state,\n });\n }\n return updates;\n}\n\n/**\n * Apply updates\n * @param {boolean} wait wait for the operation to complete or not\n * @param {number} timeout timeout in milliseconds\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function applyUpdates({\n wait,\n timeout = 10 * 60 * 1000,\n state,\n}: {\n wait: boolean;\n timeout?: number;\n state: State;\n}) {\n createProgressIndicator({\n total: undefined,\n message: `Applying updates...`,\n type: 'indeterminate',\n state,\n });\n try {\n let status = await initiateRestart({ state });\n if (wait) {\n const start = new Date().getTime();\n let runtime = 0;\n let errors = 0;\n const maxErrors = 3;\n while (\n status !== RestartStatus.ready &&\n start + timeout > new Date().getTime()\n ) {\n await new Promise((resolve) => setTimeout(resolve, 5000));\n try {\n status = await getStatus({ state });\n\n // reset errors after successful status call\n if (errors) errors = 0;\n\n runtime = new Date().getTime() - start;\n updateProgressIndicator({\n message: `${status} (${Math.round(runtime / 1000)}s)`,\n state,\n });\n } catch (error) {\n errors++;\n if (errors > maxErrors) {\n throw error;\n }\n runtime = new Date().getTime() - start;\n updateProgressIndicator({\n message: `${\n error.message\n } - retry ${errors}/${maxErrors} (${Math.round(runtime / 1000)}s)`,\n state,\n });\n }\n }\n if (runtime < timeout) {\n stopProgressIndicator({\n message: `Updates applied in ${Math.round(\n runtime / 1000\n )}s with final status: ${status}`,\n status: 'success',\n state,\n });\n return true;\n } else {\n stopProgressIndicator({\n message: `Updates timed out after ${Math.round(\n runtime / 1000\n )}s with final status: ${status}`,\n status: 'warn',\n state,\n });\n return false;\n }\n } else {\n stopProgressIndicator({\n message: `Updates are being applied. Changes may take up to 10 minutes to propagate, during which time you will not be able to make further updates.`,\n status: 'success',\n state,\n });\n return true;\n }\n } catch (error) {\n stopProgressIndicator({\n message: `Error: ${error.response?.data?.code || error} - ${\n error.response?.data?.message\n }`,\n status: 'fail',\n state,\n });\n return false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"StartupOps.js","names":["createProgressIndicator","updateProgressIndicator","stopProgressIndicator","getSecrets","getStatus","initiateRestart","RestartStatus","getVariables","state","checkForUpdates","applyUpdates","wait","timeout","_updates$secrets","_updates$variables","updates","secrets","variables","total","undefined","message","type","result","filter","secret","loaded","variable","error","response","data","code","status","updateCount","length","start","Date","getTime","runtime","errors","maxErrors","ready","Promise","resolve","setTimeout","Math","round","_error$response","_error$response$data","_error$response2","_error$response2$data"],"sources":["../../../src/ops/cloud/StartupOps.ts"],"sourcesContent":["import {\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getSecrets } from '../../api/cloud/SecretsApi';\nimport {\n getStatus,\n initiateRestart,\n RestartStatus,\n} from '../../api/cloud/StartupApi';\nimport { getVariables } from '../../api/cloud/VariablesApi';\nimport { State } from '../../shared/State';\n\nexport type Startup = {\n /**\n * Check for updates that need applying\n * @returns {Promise<Updates>} true if there are updates that need to be applied, false otherwise\n */\n checkForUpdates(): Promise<Updates>;\n /**\n * Apply updates\n * @param {boolean} wait wait for the operation to complete or not\n * @param {number} timeout timeout in milliseconds\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\n applyUpdates(wait: boolean, timeout?: number): Promise<boolean>;\n};\n\nexport default (state: State): Startup => {\n return {\n /**\n * Check for updates that need applying\n * @returns {Promise<Updates>} true if there are updates that need to be applied, false otherwise\n */\n async checkForUpdates(): Promise<Updates> {\n return checkForUpdates({ state });\n },\n\n /**\n * Apply updates\n * @param {boolean} wait wait for the operation to complete or not\n * @param {number} timeout timeout in milliseconds\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\n async applyUpdates(wait: boolean, timeout: number = 10 * 60 * 1000) {\n return applyUpdates({\n wait,\n timeout,\n state,\n });\n },\n };\n};\n\n/**\n * Updates that need to be applied.\n */\nexport interface Updates {\n /**\n * Array of secrets that need applying\n */\n secrets?: unknown[];\n /**\n * Array of variables that need applying\n */\n variables?: unknown[];\n}\n\n/**\n * Check for updates that need applying\n * @returns {Promise<boolean>} true if there are updates that need to be applied, false otherwise\n */\nexport async function checkForUpdates({\n state,\n}: {\n state: State;\n}): Promise<Updates> {\n const updates: Updates = { secrets: [], variables: [] };\n createProgressIndicator({\n total: undefined,\n message: `Checking for updates to apply...`,\n type: 'indeterminate',\n state,\n });\n try {\n updates.secrets = (await getSecrets({ state })).result.filter(\n (secret: { loaded: unknown }) => !secret.loaded\n );\n updates.variables = (await getVariables({ state })).result.filter(\n (variable: { loaded: unknown }) => !variable.loaded\n );\n } catch (error) {\n stopProgressIndicator({\n message: `Error: ${error.response.data.code} - ${error.response.data.message}`,\n status: 'fail',\n state,\n });\n }\n const updateCount = updates.secrets?.length + updates.variables?.length || 0;\n if (updateCount > 0) {\n stopProgressIndicator({\n message: `${updateCount} update(s) need to be applied`,\n status: 'success',\n state,\n });\n } else {\n stopProgressIndicator({\n message: `No updates need to be applied`,\n status: 'success',\n state,\n });\n }\n return updates;\n}\n\n/**\n * Apply updates\n * @param {boolean} wait wait for the operation to complete or not\n * @param {number} timeout timeout in milliseconds\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function applyUpdates({\n wait,\n timeout = 10 * 60 * 1000,\n state,\n}: {\n wait: boolean;\n timeout?: number;\n state: State;\n}) {\n createProgressIndicator({\n total: undefined,\n message: `Applying updates...`,\n type: 'indeterminate',\n state,\n });\n try {\n let status = await initiateRestart({ state });\n if (wait) {\n const start = new Date().getTime();\n let runtime = 0;\n let errors = 0;\n const maxErrors = 3;\n while (\n status !== RestartStatus.ready &&\n start + timeout > new Date().getTime()\n ) {\n await new Promise((resolve) => setTimeout(resolve, 5000));\n try {\n status = await getStatus({ state });\n\n // reset errors after successful status call\n if (errors) errors = 0;\n\n runtime = new Date().getTime() - start;\n updateProgressIndicator({\n message: `${status} (${Math.round(runtime / 1000)}s)`,\n state,\n });\n } catch (error) {\n errors++;\n if (errors > maxErrors) {\n throw error;\n }\n runtime = new Date().getTime() - start;\n updateProgressIndicator({\n message: `${\n error.message\n } - retry ${errors}/${maxErrors} (${Math.round(runtime / 1000)}s)`,\n state,\n });\n }\n }\n if (runtime < timeout) {\n stopProgressIndicator({\n message: `Updates applied in ${Math.round(\n runtime / 1000\n )}s with final status: ${status}`,\n status: 'success',\n state,\n });\n return true;\n } else {\n stopProgressIndicator({\n message: `Updates timed out after ${Math.round(\n runtime / 1000\n )}s with final status: ${status}`,\n status: 'warn',\n state,\n });\n return false;\n }\n } else {\n stopProgressIndicator({\n message: `Updates are being applied. Changes may take up to 10 minutes to propagate, during which time you will not be able to make further updates.`,\n status: 'success',\n state,\n });\n return true;\n }\n } catch (error) {\n stopProgressIndicator({\n message: `Error: ${error.response?.data?.code || error} - ${\n error.response?.data?.message\n }`,\n status: 'fail',\n state,\n });\n return false;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesOps.js","names":["deleteVariable","getVariable","getVariables","putVariable","setVariableDescription","state","variableId","value","description"],"sources":["../../../src/ops/cloud/VariablesOps.ts"],"sourcesContent":["import {\n deleteVariable,\n getVariable,\n getVariables,\n putVariable,\n setVariableDescription,\n} from '../../api/cloud/VariablesApi';\nimport State from '../../shared/State';\n\nexport default (state: State) => {\n return {\n /**\n * Delete variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n deleteVariable(variableId: string) {\n return deleteVariable({ variableId, state });\n },\n\n /**\n * Get variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n getVariable(variableId: string) {\n return getVariable({ variableId, state });\n },\n\n /**\n * Get all variables\n * @returns {Promise<unknown[]>} a promise that resolves to an array of variable objects\n */\n getVariables() {\n return getVariables({ state });\n },\n\n /**\n * Put variable by id/name\n * @param {string} variableId variable id/name\n * @param {string} value variable value\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n putVariable(variableId: string, value: string, description: string) {\n return putVariable({ variableId, value, description, state });\n },\n\n /**\n * Set variable description\n * @param {string} variableId variable id/name\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n setVariableDescription(variableId: string, description: string) {\n return setVariableDescription({\n variableId,\n description,\n state,\n });\n },\n };\n};\n\nexport {\n deleteVariable,\n getVariable,\n getVariables,\n putVariable,\n setVariableDescription,\n};\n"],"mappings":"SACEA,cAAc,EACdC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,sBAAsB;AAIxB,gBAAgBC,KAAY,IAAK;EAC/B,OAAO;IACL;AACJ;AACA;AACA;AACA;IACIL,cAAcA,CAACM,UAAkB,EAAE;MACjC,OAAON,cAAc,CAAC;QAAEM,UAAU;QAAED;MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIJ,WAAWA,CAACK,UAAkB,EAAE;MAC9B,OAAOL,WAAW,CAAC;QAAEK,UAAU;QAAED;MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;AACJ;AACA;AACA;IACIH,YAAYA,CAAA,EAAG;MACb,OAAOA,YAAY,CAAC;QAAEG;MAAM,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;IACIF,WAAWA,CAACG,UAAkB,EAAEC,KAAa,EAAEC,WAAmB,EAAE;MAClE,OAAOL,WAAW,CAAC;QAAEG,UAAU;QAAEC,KAAK;QAAEC,WAAW;QAAEH;MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACID,sBAAsBA,CAACE,UAAkB,EAAEE,WAAmB,EAAE;MAC9D,OAAOJ,sBAAsB,CAAC;QAC5BE,UAAU;QACVE,WAAW;QACXH;MACF,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AAED,SACEL,cAAc,EACdC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,sBAAsB"}
1
+ {"version":3,"file":"VariablesOps.js","names":["deleteVariable","getVariable","getVariables","putVariable","setVariableDescription","state","variableId","value","description"],"sources":["../../../src/ops/cloud/VariablesOps.ts"],"sourcesContent":["import {\n deleteVariable,\n getVariable,\n getVariables,\n putVariable,\n setVariableDescription,\n} from '../../api/cloud/VariablesApi';\nimport { State } from '../../shared/State';\n\nexport type Variable = {\n /**\n * Delete variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n deleteVariable(variableId: string): Promise<any>;\n /**\n * Get variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n getVariable(variableId: string): Promise<any>;\n /**\n * Get all variables\n * @returns {Promise<unknown[]>} a promise that resolves to an array of variable objects\n */\n getVariables(): Promise<any>;\n /**\n * Put variable by id/name\n * @param {string} variableId variable id/name\n * @param {string} value variable value\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n putVariable(\n variableId: string,\n value: string,\n description: string\n ): Promise<any>;\n /**\n * Set variable description\n * @param {string} variableId variable id/name\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n setVariableDescription(variableId: string, description: string): Promise<any>;\n};\n\nexport default (state: State): Variable => {\n return {\n /**\n * Delete variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n deleteVariable(variableId: string) {\n return deleteVariable({ variableId, state });\n },\n\n /**\n * Get variable by id/name\n * @param {string} variableId variable id/name\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n getVariable(variableId: string) {\n return getVariable({ variableId, state });\n },\n\n /**\n * Get all variables\n * @returns {Promise<unknown[]>} a promise that resolves to an array of variable objects\n */\n getVariables() {\n return getVariables({ state });\n },\n\n /**\n * Put variable by id/name\n * @param {string} variableId variable id/name\n * @param {string} value variable value\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a variable object\n */\n putVariable(variableId: string, value: string, description: string) {\n return putVariable({ variableId, value, description, state });\n },\n\n /**\n * Set variable description\n * @param {string} variableId variable id/name\n * @param {string} description variable description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\n setVariableDescription(variableId: string, description: string) {\n return setVariableDescription({\n variableId,\n description,\n state,\n });\n },\n };\n};\n\nexport {\n deleteVariable,\n getVariable,\n getVariables,\n putVariable,\n setVariableDescription,\n};\n"],"mappings":"SACEA,cAAc,EACdC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,sBAAsB;AA2CxB,gBAAgBC,KAAY,IAAe;EACzC,OAAO;IACL;AACJ;AACA;AACA;AACA;IACIL,cAAcA,CAACM,UAAkB,EAAE;MACjC,OAAON,cAAc,CAAC;QAAEM,UAAU;QAAED;MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIJ,WAAWA,CAACK,UAAkB,EAAE;MAC9B,OAAOL,WAAW,CAAC;QAAEK,UAAU;QAAED;MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;AACJ;AACA;AACA;IACIH,YAAYA,CAAA,EAAG;MACb,OAAOA,YAAY,CAAC;QAAEG;MAAM,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;IACIF,WAAWA,CAACG,UAAkB,EAAEC,KAAa,EAAEC,WAAmB,EAAE;MAClE,OAAOL,WAAW,CAAC;QAAEG,UAAU;QAAEC,KAAK;QAAEC,WAAW;QAAEH;MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACID,sBAAsBA,CAACE,UAAkB,EAAEE,WAAmB,EAAE;MAC9D,OAAOJ,sBAAsB,CAAC;QAC5BE,UAAU;QACVE,WAAW;QACXH;MACF,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AAED,SACEL,cAAc,EACdC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Console.js","names":["Table","printMessage","message","type","newline","state","handler","getPrintHandler","verboseMessage","getVerboseHandler","debugMessage","getDebugHandler","maskPasswordHeader","curlCommand","header","mask","regex","RegExp","replace","curlirizeMessage","getCurlirizeHandler","createProgressIndicator","total","undefined","getCreateProgressHandler","updateProgressIndicator","getUpdateProgressHandler","stopProgressIndicator","status","getStopProgressHandler","createTable","head","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","depth","level","table","keyMap","space","push","hAlign","content","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../../src/ops/utils/Console.ts"],"sourcesContent":["import Table from 'cli-table3';\nimport State from '../../shared/State';\n\n/**\n * Handles data / messages output. The caller decides and implements how\n * the data and messages are handled, by implementing the handler function\n * on its side. `handler` is optional, and if not included by the caller,\n * the data and messages will be lost.\n *\n * @param {string | unknown} message The string message to return\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n * messages returned\n */\nexport function printMessage({\n message,\n type = 'text',\n newline = true,\n state,\n}: {\n message: string | object;\n type?: string;\n newline?: boolean;\n state: State;\n}) {\n const handler = state.getPrintHandler();\n if (handler) {\n handler(message, type, newline);\n }\n}\n\n/**\n * Handles verbose output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string | unknown} message The verbose output message\n */\nexport function verboseMessage({\n message,\n state,\n}: {\n message: string | object;\n state: State;\n}) {\n const handler = state.getVerboseHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Handles debug output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string | object} message The debug output message\n */\nexport function debugMessage({\n message,\n state,\n}: {\n message: string | object;\n state: State;\n}) {\n const handler = state.getDebugHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Helper function to mask password header in curl command\n * @param curlCommand curl command to mask\n * @param {State} state library state\n * @returns masked curl command\n */\nfunction maskPasswordHeader(curlCommand: string) {\n const header = 'X-OpenAM-Password:';\n const mask = '<suppressed>';\n const regex = new RegExp('\"' + header + '.+?\"', 'g');\n return curlCommand.replace(regex, '\"' + header + mask + '\"');\n}\n\n/**\n * Handles curlirize output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string} message The curlirize output message\n */\nexport function curlirizeMessage({\n message,\n state,\n}: {\n message: string;\n state: State;\n}) {\n const handler = state.getCurlirizeHandler();\n if (handler) {\n handler(maskPasswordHeader(message));\n }\n}\n\n/**\n * Calls a callback on client to create a progress indicator.\n * The actual implementation of the indicator is left to the client\n * Two types of indicators are supported:\n * - determinate: should be used when the process completion rate\n * can be detected (example: progress bar showing percentage or count)\n * - indeterminate: used when progress isn’t detectable, or if\n * it’s not necessary to indicate how long an activity will take.\n * (example: spinner showing progress, but not quantifying the progress)\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {String} type optional type of progress indicator. default is 'determinate'\n *\n */\nexport function createProgressIndicator({\n total,\n message = undefined,\n type = 'determinate',\n state,\n}: {\n total: number;\n message?: string;\n type?: string;\n state: State;\n}) {\n const handler = state.getCreateProgressHandler();\n if (handler) {\n handler(type, total, message);\n }\n}\n\n/**\n * Updates the progress indicator with new data/updated status.\n * @param {string} message optional message to show with the indicator\n *\n */\nexport function updateProgressIndicator({\n message = undefined,\n state,\n}: {\n message?: string;\n state: State;\n}) {\n const handler = state.getUpdateProgressHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Stop and hide the progress indicator\n * @param {string} message optional message to show with the indicator\n * @param {string} status one of 'none', 'success', 'warn', 'fail'\n */\nexport function stopProgressIndicator({\n message = null,\n status = 'none',\n state,\n}: {\n message?: string;\n status?: string;\n state: State;\n}) {\n const handler = state.getStopProgressHandler();\n if (handler) {\n handler(message, status);\n }\n}\n\n/**\n * Create an empty table\n * @param {[String]} head header row as an array of strings\n * @returns {CliTable3} an empty table\n */\nexport function createTable(head) {\n return new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n}\n\n/**\n * Create a new key/value table\n * @returns {CliTable3} an empty key/value table\n */\nexport function createKeyValueTable() {\n return new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {Object} object object to render\n * @param {Number} depth total depth of initial object\n * @param {Number} level current level\n * @param {CliTable3} table the object table to add the rows to\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key]['brightCyan'] : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key]['gray'] : key['gray'],\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key]['brightCyan'] : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @returns {CliTable3} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,YAAY;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAAC;EAC3BC,OAAO;EACPC,IAAI,GAAG,MAAM;EACbC,OAAO,GAAG,IAAI;EACdC;AAMF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACE,eAAe,CAAC,CAAC;EACvC,IAAID,OAAO,EAAE;IACXA,OAAO,CAACJ,OAAO,EAAEC,IAAI,EAAEC,OAAO,CAAC;EACjC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,cAAcA,CAAC;EAC7BN,OAAO;EACPG;AAIF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACI,iBAAiB,CAAC,CAAC;EACzC,IAAIH,OAAO,EAAE;IACXA,OAAO,CAACJ,OAAO,CAAC;EAClB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,YAAYA,CAAC;EAC3BR,OAAO;EACPG;AAIF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACM,eAAe,CAAC,CAAC;EACvC,IAAIL,OAAO,EAAE;IACXA,OAAO,CAACJ,OAAO,CAAC;EAClB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,kBAAkBA,CAACC,WAAmB,EAAE;EAC/C,MAAMC,MAAM,GAAG,oBAAoB;EACnC,MAAMC,IAAI,GAAG,cAAc;EAC3B,MAAMC,KAAK,GAAG,IAAIC,MAAM,CAAC,GAAG,GAAGH,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC;EACpD,OAAOD,WAAW,CAACK,OAAO,CAACF,KAAK,EAAE,GAAG,GAAGF,MAAM,GAAGC,IAAI,GAAG,GAAG,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,gBAAgBA,CAAC;EAC/BjB,OAAO;EACPG;AAIF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACe,mBAAmB,CAAC,CAAC;EAC3C,IAAId,OAAO,EAAE;IACXA,OAAO,CAACM,kBAAkB,CAACV,OAAO,CAAC,CAAC;EACtC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASmB,uBAAuBA,CAAC;EACtCC,KAAK;EACLpB,OAAO,GAAGqB,SAAS;EACnBpB,IAAI,GAAG,aAAa;EACpBE;AAMF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACmB,wBAAwB,CAAC,CAAC;EAChD,IAAIlB,OAAO,EAAE;IACXA,OAAO,CAACH,IAAI,EAAEmB,KAAK,EAAEpB,OAAO,CAAC;EAC/B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASuB,uBAAuBA,CAAC;EACtCvB,OAAO,GAAGqB,SAAS;EACnBlB;AAIF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACqB,wBAAwB,CAAC,CAAC;EAChD,IAAIpB,OAAO,EAAE;IACXA,OAAO,CAACJ,OAAO,CAAC;EAClB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASyB,qBAAqBA,CAAC;EACpCzB,OAAO,GAAG,IAAI;EACd0B,MAAM,GAAG,MAAM;EACfvB;AAKF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGD,KAAK,CAACwB,sBAAsB,CAAC,CAAC;EAC9C,IAAIvB,OAAO,EAAE;IACXA,OAAO,CAACJ,OAAO,EAAE0B,MAAM,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,WAAWA,CAACC,IAAI,EAAE;EAChC,OAAO,IAAI/B,KAAK,CAAC;IACf+B,IAAI;IACJC,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAEP,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASQ,mBAAmBA,CAAA,EAAG;EACpC,OAAO,IAAIvC,KAAK,CAAC;IACfgC,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE;IAAE,CAAC;IAChDE,QAAQ,EAAE;EACZ,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,MAAM,EAAE;EAC9B,OAAOC,MAAM,CAACD,MAAM,CAAC,KAAKA,MAAM,GAC5B,CAAC,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAGF,MAAM,CAACG,MAAM,CAACJ,MAAM,CAAC,CAACK,GAAG,CAACN,cAAc,CAAC,CAAC,GAC9D,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASO,SAASA,CAACN,MAAM,EAAE;EACzB,IAAIO,GAAG,GAAG,KAAK;EACf,MAAMC,IAAI,GAAGP,MAAM,CAACO,IAAI,CAACR,MAAM,CAAC;EAChC,KAAK,MAAMS,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC,OAAO,IAAI;IACb;IACAF,GAAG,GAAGA,GAAG,IAAID,SAAS,CAACN,MAAM,CAACS,GAAG,CAAC,CAAC;EACrC;EACA,OAAOF,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,OAAOA,CAACV,MAAM,EAAEW,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE;EACpD,MAAMC,KAAK,GAAG,IAAI;EAClB,MAAMP,IAAI,GAAGP,MAAM,CAACO,IAAI,CAACR,MAAM,CAAC;EAChC,KAAK,MAAMS,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC,IAAIG,KAAK,KAAK,CAAC,EAAE;QACfC,KAAK,CAACG,IAAI,CAAC,CACTF,MAAM,CAACL,GAAG,CAAC,GAAGK,MAAM,CAACL,GAAG,CAAC,CAAC,YAAY,CAAC,GAAGA,GAAG,CAAC,YAAY,CAAC,EAC3DT,MAAM,CAACS,GAAG,CAAC,CACZ,CAAC;MACJ,CAAC,MAAM;QACLI,KAAK,CAACG,IAAI,CAAC,CACT;UACEC,MAAM,EAAE,OAAO;UACfC,OAAO,EAAEJ,MAAM,CAACL,GAAG,CAAC,GAAGK,MAAM,CAACL,GAAG,CAAC,CAAC,MAAM,CAAC,GAAGA,GAAG,CAAC,MAAM;QACzD,CAAC,EACDT,MAAM,CAACS,GAAG,CAAC,CACZ,CAAC;MACJ;IACF;EACF;EACA,KAAK,MAAMA,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC;MACA,IAAIH,SAAS,CAACN,MAAM,CAACS,GAAG,CAAC,CAAC,EAAE;QAC1B,IAAIU,SAAS,GAAG,IAAIC,KAAK,CAACR,KAAK,CAAC,CAACS,IAAI,CAACN,KAAK,CAAC,CAACO,IAAI,CAAC,EAAE,CAAC;QACrD,IAAIV,KAAK,GAAG,CAAC,EAAEO,SAAS,GAAI,KAAIA,SAAU,EAAC;QAC3CN,KAAK,CAACG,IAAI,CAAC,CACTG,SAAS,CAACI,MAAM,CACdT,MAAM,CAACL,GAAG,CAAC,GAAGK,MAAM,CAACL,GAAG,CAAC,CAAC,YAAY,CAAC,GAAGA,GAAG,CAAC,YAAY,CAC5D,CAAC,EACD,EAAE,CACH,CAAC;MACJ;MACA;MACAI,KAAK,GAAGH,OAAO,CAACV,MAAM,CAACS,GAAG,CAAC,EAAEE,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,KAAK,EAAEC,MAAM,CAAC;IAC/D;EACF;EACA,OAAOD,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,iBAAiBA,CAACxB,MAAM,EAAEc,MAAM,GAAG,CAAC,CAAC,EAAE;EACrD;EACA,MAAMH,KAAK,GAAGZ,cAAc,CAACC,MAAM,CAAC;EACpC;EACA,MAAMY,KAAK,GAAG,CAAC;EACf;EACA,MAAMC,KAAK,GAAG,IAAIvD,KAAK,CAAC;IACtBgC,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAEP,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;EACFqB,OAAO,CAACV,MAAM,EAAEW,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAChD,OAAOD,KAAK;AACd"}
1
+ {"version":3,"file":"Console.js","names":["Table","printMessage","message","type","newline","state","handler","getPrintHandler","verboseMessage","getVerboseHandler","debugMessage","getDebugHandler","maskPasswordHeader","curlCommand","header","mask","regex","RegExp","replace","curlirizeMessage","getCurlirizeHandler","createProgressIndicator","total","undefined","getCreateProgressHandler","updateProgressIndicator","getUpdateProgressHandler","stopProgressIndicator","status","getStopProgressHandler","createTable","head","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","depth","level","table","keyMap","space","push","hAlign","content","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../../src/ops/utils/Console.ts"],"sourcesContent":["import Table from 'cli-table3';\nimport { State } from '../../shared/State';\n\n/**\n * Handles data / messages output. The caller decides and implements how\n * the data and messages are handled, by implementing the handler function\n * on its side. `handler` is optional, and if not included by the caller,\n * the data and messages will be lost.\n *\n * @param {string | unknown} message The string message to return\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n * messages returned\n */\nexport function printMessage({\n message,\n type = 'text',\n newline = true,\n state,\n}: {\n message: string | object;\n type?: string;\n newline?: boolean;\n state: State;\n}) {\n const handler = state.getPrintHandler();\n if (handler) {\n handler(message, type, newline);\n }\n}\n\n/**\n * Handles verbose output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string | unknown} message The verbose output message\n */\nexport function verboseMessage({\n message,\n state,\n}: {\n message: string | object;\n state: State;\n}) {\n const handler = state.getVerboseHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Handles debug output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string | object} message The debug output message\n */\nexport function debugMessage({\n message,\n state,\n}: {\n message: string | object;\n state: State;\n}) {\n const handler = state.getDebugHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Helper function to mask password header in curl command\n * @param curlCommand curl command to mask\n * @param {State} state library state\n * @returns masked curl command\n */\nfunction maskPasswordHeader(curlCommand: string) {\n const header = 'X-OpenAM-Password:';\n const mask = '<suppressed>';\n const regex = new RegExp('\"' + header + '.+?\"', 'g');\n return curlCommand.replace(regex, '\"' + header + mask + '\"');\n}\n\n/**\n * Handles curlirize output. The caller decides and implements how\n * the messages are handled, by implementing the handler function\n * on its side. Implementing and registering a `handler` is optional.\n *\n * @param {string} message The curlirize output message\n */\nexport function curlirizeMessage({\n message,\n state,\n}: {\n message: string;\n state: State;\n}) {\n const handler = state.getCurlirizeHandler();\n if (handler) {\n handler(maskPasswordHeader(message));\n }\n}\n\n/**\n * Calls a callback on client to create a progress indicator.\n * The actual implementation of the indicator is left to the client\n * Two types of indicators are supported:\n * - determinate: should be used when the process completion rate\n * can be detected (example: progress bar showing percentage or count)\n * - indeterminate: used when progress isn’t detectable, or if\n * it’s not necessary to indicate how long an activity will take.\n * (example: spinner showing progress, but not quantifying the progress)\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {String} type optional type of progress indicator. default is 'determinate'\n *\n */\nexport function createProgressIndicator({\n total,\n message = undefined,\n type = 'determinate',\n state,\n}: {\n total: number;\n message?: string;\n type?: string;\n state: State;\n}) {\n const handler = state.getCreateProgressHandler();\n if (handler) {\n handler(type, total, message);\n }\n}\n\n/**\n * Updates the progress indicator with new data/updated status.\n * @param {string} message optional message to show with the indicator\n *\n */\nexport function updateProgressIndicator({\n message = undefined,\n state,\n}: {\n message?: string;\n state: State;\n}) {\n const handler = state.getUpdateProgressHandler();\n if (handler) {\n handler(message);\n }\n}\n\n/**\n * Stop and hide the progress indicator\n * @param {string} message optional message to show with the indicator\n * @param {string} status one of 'none', 'success', 'warn', 'fail'\n */\nexport function stopProgressIndicator({\n message = null,\n status = 'none',\n state,\n}: {\n message?: string;\n status?: string;\n state: State;\n}) {\n const handler = state.getStopProgressHandler();\n if (handler) {\n handler(message, status);\n }\n}\n\n/**\n * Create an empty table\n * @param {[String]} head header row as an array of strings\n * @returns {CliTable3} an empty table\n */\nexport function createTable(head) {\n return new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n}\n\n/**\n * Create a new key/value table\n * @returns {CliTable3} an empty key/value table\n */\nexport function createKeyValueTable() {\n return new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {Object} object object to render\n * @param {Number} depth total depth of initial object\n * @param {Number} level current level\n * @param {CliTable3} table the object table to add the rows to\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key]['brightCyan'] : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key]['gray'] : key['gray'],\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key]['brightCyan'] : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @returns {CliTable3} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"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"}
@@ -14,7 +14,7 @@ import crypto from 'crypto';
14
14
  import { homedir } from 'os';
15
15
  import { promisify } from 'util';
16
16
  import { printMessage } from "./Console.js";
17
- import { FRODO_MASTER_KEY_PATH_KEY, FRODO_MASTER_KEY_KEY } from "../../storage/StaticStorage.js";
17
+ import Constants from "../../shared/Constants.js";
18
18
  const scrypt = promisify(crypto.scrypt);
19
19
  // using WeakMaps for added security since it gets garbage collected
20
20
  const _masterKey = new WeakMap();
@@ -27,11 +27,11 @@ class DataProtection {
27
27
  pathToMasterKey = undefined,
28
28
  state
29
29
  }) {
30
- const masterKeyPath = () => pathToMasterKey || process.env[FRODO_MASTER_KEY_PATH_KEY] || `${homedir()}/.frodo/masterkey.key`;
30
+ const masterKeyPath = () => pathToMasterKey || process.env[Constants.FRODO_MASTER_KEY_PATH_KEY] || `${homedir()}/.frodo/masterkey.key`;
31
31
  // Generates a master key in base64 format. This master key will be used to derive the key for encryption. this key should be protected by an HSM or KMS
32
32
  _masterKey.set(this, async () => {
33
33
  try {
34
- if (process.env[FRODO_MASTER_KEY_KEY]) return process.env[FRODO_MASTER_KEY_KEY];
34
+ if (process.env[Constants.FRODO_MASTER_KEY_KEY]) return process.env[Constants.FRODO_MASTER_KEY_KEY];
35
35
  if (!fs.existsSync(masterKeyPath())) {
36
36
  const masterKey = crypto.randomBytes(32).toString('base64');
37
37
  await fsp.writeFile(masterKeyPath(), masterKey);
@@ -1 +1 @@
1
- {"version":3,"file":"DataProtection.js","names":["fs","promises","fsp","crypto","homedir","promisify","printMessage","FRODO_MASTER_KEY_PATH_KEY","FRODO_MASTER_KEY_KEY","scrypt","_masterKey","WeakMap","_nonce","_salt","_key","_encrypt","DataProtection","constructor","pathToMasterKey","undefined","state","masterKeyPath","process","env","set","existsSync","masterKey","randomBytes","toString","writeFile","readFile","err","message","type","salt","key","nonce","data","cipher","createCipheriv","encrypted","Buffer","concat","update","JSON","stringify","final","tag","getAuthTag","buffer","encrypt","get","decrypt","from","slice","decipher","createDecipheriv","setAuthTag","parse"],"sources":["../../../src/ops/utils/DataProtection.ts"],"sourcesContent":["/**\n * Data is stored in base64 format. Initially it was binary data\n * Format used in this encryption module.\n * inspired by AndiDittrich\n * +--------------------+-----------------------+----------------+----------------+\n * | SALT | Initialization Vector | Auth Tag | Payload |\n * | Used to derive key | AES GCM XOR Init | Data Integrity | Encrypted Data |\n * | 64 Bytes, random | 16 Bytes, random | 16 Bytes | (N-96) Bytes |\n * +--------------------+-----------------------+----------------+----------------+\n * This module doesn't take care of data persistence, it's assumed the consuming method/class/package will do so.\n */\nimport fs, { promises as fsp } from 'fs';\nimport crypto from 'crypto';\nimport { homedir } from 'os';\nimport { promisify } from 'util';\nimport { printMessage } from './Console';\nimport {\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n} from '../../storage/StaticStorage';\nimport State from '../../shared/State';\n\nconst scrypt = promisify(crypto.scrypt);\n// using WeakMaps for added security since it gets garbage collected\nconst _masterKey = new WeakMap();\nconst _nonce = new WeakMap();\nconst _salt = new WeakMap();\nconst _key = new WeakMap();\nconst _encrypt = new WeakMap();\n\nclass DataProtection {\n constructor({\n pathToMasterKey = undefined,\n state,\n }: {\n pathToMasterKey?: string;\n state: State;\n }) {\n const masterKeyPath = () =>\n pathToMasterKey ||\n process.env[FRODO_MASTER_KEY_PATH_KEY] ||\n `${homedir()}/.frodo/masterkey.key`;\n // Generates a master key in base64 format. This master key will be used to derive the key for encryption. this key should be protected by an HSM or KMS\n _masterKey.set(this, async () => {\n try {\n if (process.env[FRODO_MASTER_KEY_KEY])\n return process.env[FRODO_MASTER_KEY_KEY];\n if (!fs.existsSync(masterKeyPath())) {\n const masterKey = crypto.randomBytes(32).toString('base64');\n await fsp.writeFile(masterKeyPath(), masterKey);\n }\n return await fsp.readFile(masterKeyPath(), 'utf8');\n } catch (err) {\n printMessage({ message: err.message, type: 'error', state });\n return '';\n }\n });\n\n // the nonce for AES GCM\n _nonce.set(this, () => crypto.randomBytes(16));\n\n // The salt\n _salt.set(this, () => crypto.randomBytes(64));\n\n // The function that derives the key, this supports sync and async operations\n _key.set(\n this,\n // eslint-disable-next-line no-return-await\n async (masterKey, salt) => await scrypt(masterKey, salt, 32)\n );\n\n // private method to encrypt and return encrypted data. cleaner code\n _encrypt.set(this, (key, nonce, data, salt) => {\n const cipher = crypto.createCipheriv('aes-256-gcm', key, nonce);\n const encrypted = Buffer.concat([\n cipher.update(JSON.stringify(data), 'utf8'),\n cipher.final(),\n ]);\n const tag = cipher.getAuthTag();\n const buffer = Buffer.concat([salt, nonce, tag, encrypted]);\n return buffer.toString('base64');\n });\n }\n\n async encrypt(data) {\n const nonce = _nonce.get(this)();\n const salt = _salt.get(this)();\n const masterKey = await _masterKey.get(this)();\n const key = await _key.get(this)(masterKey, salt);\n return _encrypt.get(this)(key, nonce, data, salt);\n }\n\n async decrypt(data) {\n const buffer = Buffer.from(data.toString(), 'base64');\n const salt = buffer.slice(0, 64);\n const nonce = buffer.slice(64, 80);\n const tag = buffer.slice(80, 96);\n const encrypted = buffer.slice(96);\n const masterKey = await _masterKey.get(this)();\n const key = await _key.get(this)(masterKey, salt);\n const decipher = crypto.createDecipheriv('aes-256-gcm', key, nonce);\n decipher.setAuthTag(tag);\n return JSON.parse(\n decipher.update(encrypted.toString('binary'), 'binary', 'utf8') +\n decipher.final('utf8')\n );\n }\n}\nexport default DataProtection;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataProtection.js","names":["fs","promises","fsp","crypto","homedir","promisify","printMessage","Constants","scrypt","_masterKey","WeakMap","_nonce","_salt","_key","_encrypt","DataProtection","constructor","pathToMasterKey","undefined","state","masterKeyPath","process","env","FRODO_MASTER_KEY_PATH_KEY","set","FRODO_MASTER_KEY_KEY","existsSync","masterKey","randomBytes","toString","writeFile","readFile","err","message","type","salt","key","nonce","data","cipher","createCipheriv","encrypted","Buffer","concat","update","JSON","stringify","final","tag","getAuthTag","buffer","encrypt","get","decrypt","from","slice","decipher","createDecipheriv","setAuthTag","parse"],"sources":["../../../src/ops/utils/DataProtection.ts"],"sourcesContent":["/**\n * Data is stored in base64 format. Initially it was binary data\n * Format used in this encryption module.\n * inspired by AndiDittrich\n * +--------------------+-----------------------+----------------+----------------+\n * | SALT | Initialization Vector | Auth Tag | Payload |\n * | Used to derive key | AES GCM XOR Init | Data Integrity | Encrypted Data |\n * | 64 Bytes, random | 16 Bytes, random | 16 Bytes | (N-96) Bytes |\n * +--------------------+-----------------------+----------------+----------------+\n * This module doesn't take care of data persistence, it's assumed the consuming method/class/package will do so.\n */\nimport fs, { promises as fsp } from 'fs';\nimport crypto from 'crypto';\nimport { homedir } from 'os';\nimport { promisify } from 'util';\nimport { printMessage } from './Console';\nimport Constants from '../../shared/Constants';\nimport { State } from '../../shared/State';\n\nconst scrypt = promisify(crypto.scrypt);\n// using WeakMaps for added security since it gets garbage collected\nconst _masterKey = new WeakMap();\nconst _nonce = new WeakMap();\nconst _salt = new WeakMap();\nconst _key = new WeakMap();\nconst _encrypt = new WeakMap();\n\nclass DataProtection {\n constructor({\n pathToMasterKey = undefined,\n state,\n }: {\n pathToMasterKey?: string;\n state: State;\n }) {\n const masterKeyPath = () =>\n pathToMasterKey ||\n process.env[Constants.FRODO_MASTER_KEY_PATH_KEY] ||\n `${homedir()}/.frodo/masterkey.key`;\n // Generates a master key in base64 format. This master key will be used to derive the key for encryption. this key should be protected by an HSM or KMS\n _masterKey.set(this, async () => {\n try {\n if (process.env[Constants.FRODO_MASTER_KEY_KEY])\n return process.env[Constants.FRODO_MASTER_KEY_KEY];\n if (!fs.existsSync(masterKeyPath())) {\n const masterKey = crypto.randomBytes(32).toString('base64');\n await fsp.writeFile(masterKeyPath(), masterKey);\n }\n return await fsp.readFile(masterKeyPath(), 'utf8');\n } catch (err) {\n printMessage({ message: err.message, type: 'error', state });\n return '';\n }\n });\n\n // the nonce for AES GCM\n _nonce.set(this, () => crypto.randomBytes(16));\n\n // The salt\n _salt.set(this, () => crypto.randomBytes(64));\n\n // The function that derives the key, this supports sync and async operations\n _key.set(\n this,\n // eslint-disable-next-line no-return-await\n async (masterKey, salt) => await scrypt(masterKey, salt, 32)\n );\n\n // private method to encrypt and return encrypted data. cleaner code\n _encrypt.set(this, (key, nonce, data, salt) => {\n const cipher = crypto.createCipheriv('aes-256-gcm', key, nonce);\n const encrypted = Buffer.concat([\n cipher.update(JSON.stringify(data), 'utf8'),\n cipher.final(),\n ]);\n const tag = cipher.getAuthTag();\n const buffer = Buffer.concat([salt, nonce, tag, encrypted]);\n return buffer.toString('base64');\n });\n }\n\n async encrypt(data) {\n const nonce = _nonce.get(this)();\n const salt = _salt.get(this)();\n const masterKey = await _masterKey.get(this)();\n const key = await _key.get(this)(masterKey, salt);\n return _encrypt.get(this)(key, nonce, data, salt);\n }\n\n async decrypt(data) {\n const buffer = Buffer.from(data.toString(), 'base64');\n const salt = buffer.slice(0, 64);\n const nonce = buffer.slice(64, 80);\n const tag = buffer.slice(80, 96);\n const encrypted = buffer.slice(96);\n const masterKey = await _masterKey.get(this)();\n const key = await _key.get(this)(masterKey, salt);\n const decipher = crypto.createDecipheriv('aes-256-gcm', key, nonce);\n decipher.setAuthTag(tag);\n return JSON.parse(\n decipher.update(encrypted.toString('binary'), 'binary', 'utf8') +\n decipher.final('utf8')\n );\n }\n}\nexport default DataProtection;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import State from "../../shared/State.js";
1
+ import StateImpl from "../../shared/State.js";
2
2
  import DataProtection from "./DataProtection.js";
3
- const state = new State({});
3
+ const state = StateImpl({});
4
4
  test('DataProtection to encrypt', async () => {
5
5
  // Note this test checks that encyption happned not that encryption is correct
6
6
  // this test relys on other tests to proove the likelyhood of successful encryption
@@ -1 +1 @@
1
- {"version":3,"file":"DataProtection.test.js","names":["State","DataProtection","state","test","dp","EXPECTED","originalString","RESULT","encrypt","expect","length","toBe","encrypted","decrypt"],"sources":["../../../src/ops/utils/DataProtection.test.ts"],"sourcesContent":["import State from '../../shared/State';\nimport DataProtection from './DataProtection';\n\nconst state: State = new State({});\n\ntest('DataProtection to encrypt', async () => {\n // Note this test checks that encyption happned not that encryption is correct\n // this test relys on other tests to proove the likelyhood of successful encryption\n // Arrange\n const dp = new DataProtection({ state });\n const EXPECTED =\n 'aMLtCqK1b+d3d88DDKrmIV7A6pifP77IItLKX7N7/UTOPxf8YCQWHCpTrmNnM5wNXue8HllEFIS+sxXRb20oCb4HImpbQM0so5DrHIqcIlF5LYDKjvzBOz1PdlclhIuIV+Gr8M3GRbNkQxXJuUZ4th5ISLpOjM+k8bDAlnHsRx5LLlbLFnAKq8Pu9DaTYUkZABOCOjfkoTb6re1p9c7xE2pAe213';\n const originalString =\n 'Go not to the Elves for counsel, for they will say both no and yes.';\n // Act\n const RESULT = await dp.encrypt(originalString);\n // Assert\n expect(RESULT.length).toBe(EXPECTED.length);\n});\n\ntest('DataProtection to decrypt', async () => {\n // Arrange\n const dp = new DataProtection({ state });\n const originalString =\n 'Go not to the Elves for counsel, for they will say both no and yes.';\n // Act\n const encrypted = await dp.encrypt(originalString);\n const RESULT = await dp.decrypt(encrypted);\n // Assert\n expect(RESULT).toBe(originalString);\n});\n"],"mappings":"OAAOA,KAAK;AAAA,OACLC,cAAc;AAErB,MAAMC,KAAY,GAAG,IAAIF,KAAK,CAAC,CAAC,CAAC,CAAC;AAElCG,IAAI,CAAC,2BAA2B,EAAE,YAAY;EAC5C;EACA;EACA;EACA,MAAMC,EAAE,GAAG,IAAIH,cAAc,CAAC;IAAEC;EAAM,CAAC,CAAC;EACxC,MAAMG,QAAQ,GACZ,8NAA8N;EAChO,MAAMC,cAAc,GAClB,qEAAqE;EACvE;EACA,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAACI,OAAO,CAACF,cAAc,CAAC;EAC/C;EACAG,MAAM,CAACF,MAAM,CAACG,MAAM,CAAC,CAACC,IAAI,CAACN,QAAQ,CAACK,MAAM,CAAC;AAC7C,CAAC,CAAC;AAEFP,IAAI,CAAC,2BAA2B,EAAE,YAAY;EAC5C;EACA,MAAMC,EAAE,GAAG,IAAIH,cAAc,CAAC;IAAEC;EAAM,CAAC,CAAC;EACxC,MAAMI,cAAc,GAClB,qEAAqE;EACvE;EACA,MAAMM,SAAS,GAAG,MAAMR,EAAE,CAACI,OAAO,CAACF,cAAc,CAAC;EAClD,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAACS,OAAO,CAACD,SAAS,CAAC;EAC1C;EACAH,MAAM,CAACF,MAAM,CAAC,CAACI,IAAI,CAACL,cAAc,CAAC;AACrC,CAAC,CAAC"}
1
+ {"version":3,"file":"DataProtection.test.js","names":["StateImpl","DataProtection","state","test","dp","EXPECTED","originalString","RESULT","encrypt","expect","length","toBe","encrypted","decrypt"],"sources":["../../../src/ops/utils/DataProtection.test.ts"],"sourcesContent":["import StateImpl, { type State } from '../../shared/State';\nimport DataProtection from './DataProtection';\n\nconst state: State = StateImpl({});\n\ntest('DataProtection to encrypt', async () => {\n // Note this test checks that encyption happned not that encryption is correct\n // this test relys on other tests to proove the likelyhood of successful encryption\n // Arrange\n const dp = new DataProtection({ state });\n const EXPECTED =\n 'aMLtCqK1b+d3d88DDKrmIV7A6pifP77IItLKX7N7/UTOPxf8YCQWHCpTrmNnM5wNXue8HllEFIS+sxXRb20oCb4HImpbQM0so5DrHIqcIlF5LYDKjvzBOz1PdlclhIuIV+Gr8M3GRbNkQxXJuUZ4th5ISLpOjM+k8bDAlnHsRx5LLlbLFnAKq8Pu9DaTYUkZABOCOjfkoTb6re1p9c7xE2pAe213';\n const originalString =\n 'Go not to the Elves for counsel, for they will say both no and yes.';\n // Act\n const RESULT = await dp.encrypt(originalString);\n // Assert\n expect(RESULT.length).toBe(EXPECTED.length);\n});\n\ntest('DataProtection to decrypt', async () => {\n // Arrange\n const dp = new DataProtection({ state });\n const originalString =\n 'Go not to the Elves for counsel, for they will say both no and yes.';\n // Act\n const encrypted = await dp.encrypt(originalString);\n const RESULT = await dp.decrypt(encrypted);\n // Assert\n expect(RESULT).toBe(originalString);\n});\n"],"mappings":"OAAOA,SAAS;AAAA,OACTC,cAAc;AAErB,MAAMC,KAAY,GAAGF,SAAS,CAAC,CAAC,CAAC,CAAC;AAElCG,IAAI,CAAC,2BAA2B,EAAE,YAAY;EAC5C;EACA;EACA;EACA,MAAMC,EAAE,GAAG,IAAIH,cAAc,CAAC;IAAEC;EAAM,CAAC,CAAC;EACxC,MAAMG,QAAQ,GACZ,8NAA8N;EAChO,MAAMC,cAAc,GAClB,qEAAqE;EACvE;EACA,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAACI,OAAO,CAACF,cAAc,CAAC;EAC/C;EACAG,MAAM,CAACF,MAAM,CAACG,MAAM,CAAC,CAACC,IAAI,CAACN,QAAQ,CAACK,MAAM,CAAC;AAC7C,CAAC,CAAC;AAEFP,IAAI,CAAC,2BAA2B,EAAE,YAAY;EAC5C;EACA,MAAMC,EAAE,GAAG,IAAIH,cAAc,CAAC;IAAEC;EAAM,CAAC,CAAC;EACxC,MAAMI,cAAc,GAClB,qEAAqE;EACvE;EACA,MAAMM,SAAS,GAAG,MAAMR,EAAE,CAACI,OAAO,CAACF,cAAc,CAAC;EAClD,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAACS,OAAO,CAACD,SAAS,CAAC;EAC1C;EACAH,MAAM,CAACF,MAAM,CAAC,CAACI,IAAI,CAACL,cAAc,CAAC;AACrC,CAAC,CAAC"}
@@ -3,7 +3,7 @@ import { lstat, readdir } from 'fs/promises';
3
3
  import { join } from 'path';
4
4
  import slugify from 'slugify';
5
5
  import { decode, decodeBase64Url, encode, encodeBase64Url } from "../../api/utils/Base64.js";
6
- import { FRODO_METADATA_ID } from "../../storage/StaticStorage.js";
6
+ import Constants from "../../shared/Constants.js";
7
7
  import { debugMessage, printMessage } from "./Console.js";
8
8
  export default (state => {
9
9
  return {
@@ -108,7 +108,7 @@ export function getMetadata({
108
108
  originAmVersion: state.getAmVersion(),
109
109
  exportedBy: state.getUsername(),
110
110
  exportDate: new Date().toISOString(),
111
- exportTool: FRODO_METADATA_ID,
111
+ exportTool: Constants.FRODO_METADATA_ID,
112
112
  exportToolVersion: state.getFrodoVersion()
113
113
  };
114
114
  return metadata;