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

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 (398) 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.map +1 -1
  37. package/cjs/lib/Frodo.js +9 -2
  38. package/cjs/lib/Frodo.js.map +1 -1
  39. package/cjs/lib/FrodoLib.js +17 -20
  40. package/cjs/lib/FrodoLib.js.map +1 -1
  41. package/cjs/ops/AdminOps.js.map +1 -1
  42. package/cjs/ops/AgentOps.js +35 -35
  43. package/cjs/ops/AgentOps.js.map +1 -1
  44. package/cjs/ops/AuthenticateOps.js +10 -12
  45. package/cjs/ops/AuthenticateOps.js.map +1 -1
  46. package/cjs/ops/CirclesOfTrustOps.js +14 -14
  47. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  48. package/cjs/ops/ConnectionProfileOps.js +2 -2
  49. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  50. package/cjs/ops/ConnectionProfileOps.test.js +5 -5
  51. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  52. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  53. package/cjs/ops/IdmOps.js.map +1 -1
  54. package/cjs/ops/IdpOps.js.map +1 -1
  55. package/cjs/ops/InfoOps.js +3 -4
  56. package/cjs/ops/InfoOps.js.map +1 -1
  57. package/cjs/ops/JoseOps.js +30 -0
  58. package/cjs/ops/JoseOps.js.map +1 -1
  59. package/cjs/ops/JourneyOps.js +41 -43
  60. package/cjs/ops/JourneyOps.js.map +1 -1
  61. package/cjs/ops/JourneyOps.test.js +3 -2
  62. package/cjs/ops/JourneyOps.test.js.map +1 -1
  63. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  64. package/cjs/ops/NodeOps.js.map +1 -1
  65. package/cjs/ops/OAuth2ClientOps.js +19 -19
  66. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  67. package/cjs/ops/OAuth2OidcOps.js.map +1 -1
  68. package/cjs/ops/OAuth2ProviderOps.js.map +1 -1
  69. package/cjs/ops/OpsTypes.js.map +1 -1
  70. package/cjs/ops/OrganizationOps.js.map +1 -1
  71. package/cjs/ops/PolicyOps.js +29 -29
  72. package/cjs/ops/PolicyOps.js.map +1 -1
  73. package/cjs/ops/PolicySetOps.js +27 -27
  74. package/cjs/ops/PolicySetOps.js.map +1 -1
  75. package/cjs/ops/RealmOps.js.map +1 -1
  76. package/cjs/ops/ResourceTypeOps.js +23 -23
  77. package/cjs/ops/ResourceTypeOps.js.map +1 -1
  78. package/cjs/ops/Saml2Ops.js +11 -11
  79. package/cjs/ops/Saml2Ops.js.map +1 -1
  80. package/cjs/ops/Saml2Ops.test.js +3 -2
  81. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  82. package/cjs/ops/ScriptOps.js +3 -3
  83. package/cjs/ops/ScriptOps.js.map +1 -1
  84. package/cjs/ops/ServiceOps.js.map +1 -1
  85. package/cjs/ops/ThemeOps.js.map +1 -1
  86. package/cjs/ops/cloud/AdminFederationOps.js.map +1 -1
  87. package/cjs/ops/cloud/FeatureOps.js.map +1 -1
  88. package/cjs/ops/cloud/LogOps.js.map +1 -1
  89. package/cjs/ops/cloud/SecretsOps.js.map +1 -1
  90. package/cjs/ops/cloud/ServiceAccountOps.js +1 -1
  91. package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -1
  92. package/cjs/ops/cloud/StartupOps.js.map +1 -1
  93. package/cjs/ops/cloud/VariablesOps.js.map +1 -1
  94. package/cjs/ops/utils/Console.js.map +1 -1
  95. package/cjs/ops/utils/DataProtection.js +3 -3
  96. package/cjs/ops/utils/DataProtection.js.map +1 -1
  97. package/cjs/ops/utils/DataProtection.test.js +1 -1
  98. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  99. package/cjs/ops/utils/ExportImportUtils.js +2 -2
  100. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  101. package/cjs/ops/utils/OpsUtils.js +105 -25
  102. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  103. package/cjs/ops/utils/OpsUtils.test.js +6 -5
  104. package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
  105. package/cjs/ops/utils/ScriptValidationUtils.js +33 -2
  106. package/cjs/ops/utils/ScriptValidationUtils.js.map +1 -1
  107. package/cjs/ops/utils/ScriptValidationUtils.test.js +1 -1
  108. package/cjs/ops/utils/ScriptValidationUtils.test.js.map +1 -1
  109. package/cjs/ops/utils/{Version.js → VersionUtils.js} +1 -1
  110. package/cjs/ops/utils/VersionUtils.js.map +1 -0
  111. package/cjs/ops/utils/{Version.test.js → VersionUtils.test.js} +3 -3
  112. package/cjs/ops/utils/VersionUtils.test.js.map +1 -0
  113. package/cjs/shared/Constants.js +34 -0
  114. package/cjs/shared/Constants.js.map +1 -0
  115. package/cjs/shared/State.js +477 -220
  116. package/cjs/shared/State.js.map +1 -1
  117. package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
  118. package/esm/api/AgentApi.js.map +1 -1
  119. package/esm/api/AuthenticateApi.js.map +1 -1
  120. package/esm/api/BaseApi.js +2 -2
  121. package/esm/api/BaseApi.js.map +1 -1
  122. package/esm/api/CirclesOfTrustApi.js.map +1 -1
  123. package/esm/api/IdmConfigApi.js.map +1 -1
  124. package/esm/api/IdmSystemApi.js.map +1 -1
  125. package/esm/api/ManagedObjectApi.js.map +1 -1
  126. package/esm/api/NodeApi.js.map +1 -1
  127. package/esm/api/OAuth2ClientApi.js.map +1 -1
  128. package/esm/api/OAuth2OIDCApi.js.map +1 -1
  129. package/esm/api/OAuth2OIDCApi.test.js +2 -2
  130. package/esm/api/OAuth2OIDCApi.test.js.map +1 -1
  131. package/esm/api/OAuth2ProviderApi.js.map +1 -1
  132. package/esm/api/PoliciesApi.js.map +1 -1
  133. package/esm/api/PolicySetApi.js.map +1 -1
  134. package/esm/api/RealmApi.js.map +1 -1
  135. package/esm/api/ResourceTypesApi.js.map +1 -1
  136. package/esm/api/Saml2Api.js.map +1 -1
  137. package/esm/api/ScriptApi.js.map +1 -1
  138. package/esm/api/ServerInfoApi.js.map +1 -1
  139. package/esm/api/ServiceApi.js.map +1 -1
  140. package/esm/api/SocialIdentityProvidersApi.js.map +1 -1
  141. package/esm/api/TreeApi.js.map +1 -1
  142. package/esm/api/cloud/AdminFederationProvidersApi.js.map +1 -1
  143. package/esm/api/cloud/EnvInfoApi.js.map +1 -1
  144. package/esm/api/cloud/FeatureApi.js.map +1 -1
  145. package/esm/api/cloud/LogApi.js.map +1 -1
  146. package/esm/api/cloud/SecretsApi.js.map +1 -1
  147. package/esm/api/cloud/StartupApi.js.map +1 -1
  148. package/esm/api/cloud/VariablesApi.js.map +1 -1
  149. package/esm/api/utils/ApiUtils.js.map +1 -1
  150. package/esm/api/utils/Base64.js +4 -4
  151. package/esm/api/utils/Base64.js.map +1 -1
  152. package/esm/index.js +13 -1
  153. package/esm/index.js.map +1 -1
  154. package/esm/lib/Frodo.js +9 -2
  155. package/esm/lib/Frodo.js.map +1 -1
  156. package/esm/lib/FrodoLib.js +12 -16
  157. package/esm/lib/FrodoLib.js.map +1 -1
  158. package/esm/ops/AdminOps.js.map +1 -1
  159. package/esm/ops/AgentOps.js.map +1 -1
  160. package/esm/ops/AuthenticateOps.js +10 -10
  161. package/esm/ops/AuthenticateOps.js.map +1 -1
  162. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  163. package/esm/ops/ConnectionProfileOps.js +2 -2
  164. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  165. package/esm/ops/ConnectionProfileOps.test.js +5 -5
  166. package/esm/ops/ConnectionProfileOps.test.js.map +1 -1
  167. package/esm/ops/EmailTemplateOps.js.map +1 -1
  168. package/esm/ops/IdmOps.js.map +1 -1
  169. package/esm/ops/IdpOps.js.map +1 -1
  170. package/esm/ops/InfoOps.js +2 -2
  171. package/esm/ops/InfoOps.js.map +1 -1
  172. package/esm/ops/JoseOps.js +20 -0
  173. package/esm/ops/JoseOps.js.map +1 -1
  174. package/esm/ops/JourneyOps.js +10 -11
  175. package/esm/ops/JourneyOps.js.map +1 -1
  176. package/esm/ops/JourneyOps.test.js +2 -2
  177. package/esm/ops/JourneyOps.test.js.map +1 -1
  178. package/esm/ops/ManagedObjectOps.js.map +1 -1
  179. package/esm/ops/NodeOps.js.map +1 -1
  180. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  181. package/esm/ops/OAuth2OidcOps.js.map +1 -1
  182. package/esm/ops/OAuth2ProviderOps.js.map +1 -1
  183. package/esm/ops/OpsTypes.js.map +1 -1
  184. package/esm/ops/OrganizationOps.js.map +1 -1
  185. package/esm/ops/PolicyOps.js.map +1 -1
  186. package/esm/ops/PolicySetOps.js.map +1 -1
  187. package/esm/ops/RealmOps.js.map +1 -1
  188. package/esm/ops/ResourceTypeOps.js.map +1 -1
  189. package/esm/ops/Saml2Ops.js.map +1 -1
  190. package/esm/ops/Saml2Ops.test.js +2 -2
  191. package/esm/ops/Saml2Ops.test.js.map +1 -1
  192. package/esm/ops/ScriptOps.js.map +1 -1
  193. package/esm/ops/ServiceOps.js.map +1 -1
  194. package/esm/ops/ThemeOps.js.map +1 -1
  195. package/esm/ops/cloud/AdminFederationOps.js.map +1 -1
  196. package/esm/ops/cloud/FeatureOps.js.map +1 -1
  197. package/esm/ops/cloud/LogOps.js.map +1 -1
  198. package/esm/ops/cloud/SecretsOps.js.map +1 -1
  199. package/esm/ops/cloud/ServiceAccountOps.js +1 -1
  200. package/esm/ops/cloud/ServiceAccountOps.js.map +1 -1
  201. package/esm/ops/cloud/StartupOps.js.map +1 -1
  202. package/esm/ops/cloud/VariablesOps.js.map +1 -1
  203. package/esm/ops/utils/Console.js.map +1 -1
  204. package/esm/ops/utils/DataProtection.js +3 -3
  205. package/esm/ops/utils/DataProtection.js.map +1 -1
  206. package/esm/ops/utils/DataProtection.test.js +2 -2
  207. package/esm/ops/utils/DataProtection.test.js.map +1 -1
  208. package/esm/ops/utils/ExportImportUtils.js +2 -2
  209. package/esm/ops/utils/ExportImportUtils.js.map +1 -1
  210. package/esm/ops/utils/OpsUtils.js +96 -22
  211. package/esm/ops/utils/OpsUtils.js.map +1 -1
  212. package/esm/ops/utils/OpsUtils.test.js +5 -5
  213. package/esm/ops/utils/OpsUtils.test.js.map +1 -1
  214. package/esm/ops/utils/ScriptValidationUtils.js +28 -0
  215. package/esm/ops/utils/ScriptValidationUtils.js.map +1 -1
  216. package/esm/ops/utils/ScriptValidationUtils.test.js +2 -2
  217. package/esm/ops/utils/ScriptValidationUtils.test.js.map +1 -1
  218. package/esm/ops/utils/{Version.js → VersionUtils.js} +1 -1
  219. package/esm/ops/utils/VersionUtils.js.map +1 -0
  220. package/esm/ops/utils/{Version.test.js → VersionUtils.test.js} +2 -2
  221. package/esm/ops/utils/VersionUtils.test.js.map +1 -0
  222. package/esm/shared/Constants.js +27 -0
  223. package/esm/shared/Constants.js.map +1 -0
  224. package/esm/shared/State.js +481 -226
  225. package/esm/shared/State.js.map +1 -1
  226. package/esm/utils/SetupPollyForFrodoLib.js.map +1 -1
  227. package/package.json +5 -2
  228. package/types/api/AgentApi.d.ts +1 -1
  229. package/types/api/AgentApi.d.ts.map +1 -1
  230. package/types/api/AuthenticateApi.d.ts +1 -1
  231. package/types/api/AuthenticateApi.d.ts.map +1 -1
  232. package/types/api/BaseApi.d.ts +1 -1
  233. package/types/api/BaseApi.d.ts.map +1 -1
  234. package/types/api/CirclesOfTrustApi.d.ts +1 -1
  235. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  236. package/types/api/IdmConfigApi.d.ts +1 -1
  237. package/types/api/IdmConfigApi.d.ts.map +1 -1
  238. package/types/api/IdmSystemApi.d.ts +1 -1
  239. package/types/api/IdmSystemApi.d.ts.map +1 -1
  240. package/types/api/ManagedObjectApi.d.ts +1 -1
  241. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  242. package/types/api/NodeApi.d.ts +1 -1
  243. package/types/api/NodeApi.d.ts.map +1 -1
  244. package/types/api/OAuth2ClientApi.d.ts +1 -1
  245. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  246. package/types/api/OAuth2OIDCApi.d.ts +1 -1
  247. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  248. package/types/api/OAuth2ProviderApi.d.ts +1 -1
  249. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  250. package/types/api/PoliciesApi.d.ts +1 -1
  251. package/types/api/PoliciesApi.d.ts.map +1 -1
  252. package/types/api/PolicySetApi.d.ts +1 -1
  253. package/types/api/PolicySetApi.d.ts.map +1 -1
  254. package/types/api/RealmApi.d.ts +1 -1
  255. package/types/api/RealmApi.d.ts.map +1 -1
  256. package/types/api/ResourceTypesApi.d.ts +1 -1
  257. package/types/api/ResourceTypesApi.d.ts.map +1 -1
  258. package/types/api/Saml2Api.d.ts +1 -1
  259. package/types/api/Saml2Api.d.ts.map +1 -1
  260. package/types/api/ScriptApi.d.ts +1 -1
  261. package/types/api/ScriptApi.d.ts.map +1 -1
  262. package/types/api/ServerInfoApi.d.ts +1 -1
  263. package/types/api/ServerInfoApi.d.ts.map +1 -1
  264. package/types/api/ServiceApi.d.ts +1 -1
  265. package/types/api/ServiceApi.d.ts.map +1 -1
  266. package/types/api/SocialIdentityProvidersApi.d.ts +1 -1
  267. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  268. package/types/api/TreeApi.d.ts +1 -1
  269. package/types/api/TreeApi.d.ts.map +1 -1
  270. package/types/api/cloud/AdminFederationProvidersApi.d.ts +1 -1
  271. package/types/api/cloud/AdminFederationProvidersApi.d.ts.map +1 -1
  272. package/types/api/cloud/EnvInfoApi.d.ts +1 -1
  273. package/types/api/cloud/EnvInfoApi.d.ts.map +1 -1
  274. package/types/api/cloud/FeatureApi.d.ts +1 -1
  275. package/types/api/cloud/FeatureApi.d.ts.map +1 -1
  276. package/types/api/cloud/LogApi.d.ts +1 -1
  277. package/types/api/cloud/LogApi.d.ts.map +1 -1
  278. package/types/api/cloud/SecretsApi.d.ts +1 -1
  279. package/types/api/cloud/SecretsApi.d.ts.map +1 -1
  280. package/types/api/cloud/StartupApi.d.ts +1 -1
  281. package/types/api/cloud/StartupApi.d.ts.map +1 -1
  282. package/types/api/cloud/VariablesApi.d.ts +1 -1
  283. package/types/api/cloud/VariablesApi.d.ts.map +1 -1
  284. package/types/api/utils/ApiUtils.d.ts +1 -1
  285. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  286. package/types/api/utils/Base64.d.ts +6 -6
  287. package/types/api/utils/Base64.d.ts.map +1 -1
  288. package/types/index.d.ts +37 -0
  289. package/types/index.d.ts.map +1 -1
  290. package/types/lib/Frodo.d.ts +13 -1135
  291. package/types/lib/Frodo.d.ts.map +1 -1
  292. package/types/lib/FrodoLib.d.ts +79 -368
  293. package/types/lib/FrodoLib.d.ts.map +1 -1
  294. package/types/ops/AdminOps.d.ts +3 -2
  295. package/types/ops/AdminOps.d.ts.map +1 -1
  296. package/types/ops/AgentOps.d.ts +3 -2
  297. package/types/ops/AgentOps.d.ts.map +1 -1
  298. package/types/ops/AuthenticateOps.d.ts +3 -2
  299. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  300. package/types/ops/CirclesOfTrustOps.d.ts +3 -2
  301. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -1
  302. package/types/ops/ConnectionProfileOps.d.ts +3 -2
  303. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  304. package/types/ops/EmailTemplateOps.d.ts +3 -2
  305. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  306. package/types/ops/IdmOps.d.ts +3 -2
  307. package/types/ops/IdmOps.d.ts.map +1 -1
  308. package/types/ops/IdpOps.d.ts +3 -2
  309. package/types/ops/IdpOps.d.ts.map +1 -1
  310. package/types/ops/InfoOps.d.ts +3 -2
  311. package/types/ops/InfoOps.d.ts.map +1 -1
  312. package/types/ops/JoseOps.d.ts +17 -1
  313. package/types/ops/JoseOps.d.ts.map +1 -1
  314. package/types/ops/JourneyOps.d.ts +16 -10
  315. package/types/ops/JourneyOps.d.ts.map +1 -1
  316. package/types/ops/ManagedObjectOps.d.ts +3 -2
  317. package/types/ops/ManagedObjectOps.d.ts.map +1 -1
  318. package/types/ops/NodeOps.d.ts +3 -2
  319. package/types/ops/NodeOps.d.ts.map +1 -1
  320. package/types/ops/OAuth2ClientOps.d.ts +3 -2
  321. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  322. package/types/ops/OAuth2OidcOps.d.ts +6 -5
  323. package/types/ops/OAuth2OidcOps.d.ts.map +1 -1
  324. package/types/ops/OAuth2ProviderOps.d.ts +3 -2
  325. package/types/ops/OAuth2ProviderOps.d.ts.map +1 -1
  326. package/types/ops/OpsTypes.d.ts +1 -1
  327. package/types/ops/OpsTypes.d.ts.map +1 -1
  328. package/types/ops/OrganizationOps.d.ts +3 -2
  329. package/types/ops/OrganizationOps.d.ts.map +1 -1
  330. package/types/ops/PolicyOps.d.ts +3 -2
  331. package/types/ops/PolicyOps.d.ts.map +1 -1
  332. package/types/ops/PolicySetOps.d.ts +3 -2
  333. package/types/ops/PolicySetOps.d.ts.map +1 -1
  334. package/types/ops/RealmOps.d.ts +3 -2
  335. package/types/ops/RealmOps.d.ts.map +1 -1
  336. package/types/ops/ResourceTypeOps.d.ts +3 -2
  337. package/types/ops/ResourceTypeOps.d.ts.map +1 -1
  338. package/types/ops/Saml2Ops.d.ts +3 -2
  339. package/types/ops/Saml2Ops.d.ts.map +1 -1
  340. package/types/ops/ScriptOps.d.ts +3 -2
  341. package/types/ops/ScriptOps.d.ts.map +1 -1
  342. package/types/ops/ServiceOps.d.ts +4 -3
  343. package/types/ops/ServiceOps.d.ts.map +1 -1
  344. package/types/ops/ThemeOps.d.ts +3 -2
  345. package/types/ops/ThemeOps.d.ts.map +1 -1
  346. package/types/ops/cloud/AdminFederationOps.d.ts +3 -2
  347. package/types/ops/cloud/AdminFederationOps.d.ts.map +1 -1
  348. package/types/ops/cloud/FeatureOps.d.ts +3 -2
  349. package/types/ops/cloud/FeatureOps.d.ts.map +1 -1
  350. package/types/ops/cloud/LogOps.d.ts +3 -2
  351. package/types/ops/cloud/LogOps.d.ts.map +1 -1
  352. package/types/ops/cloud/SecretsOps.d.ts +3 -2
  353. package/types/ops/cloud/SecretsOps.d.ts.map +1 -1
  354. package/types/ops/cloud/ServiceAccountOps.d.ts +7 -6
  355. package/types/ops/cloud/ServiceAccountOps.d.ts.map +1 -1
  356. package/types/ops/cloud/StartupOps.d.ts +3 -2
  357. package/types/ops/cloud/StartupOps.d.ts.map +1 -1
  358. package/types/ops/cloud/VariablesOps.d.ts +3 -2
  359. package/types/ops/cloud/VariablesOps.d.ts.map +1 -1
  360. package/types/ops/utils/Console.d.ts +1 -1
  361. package/types/ops/utils/Console.d.ts.map +1 -1
  362. package/types/ops/utils/DataProtection.d.ts +1 -1
  363. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  364. package/types/ops/utils/ExportImportUtils.d.ts +3 -2
  365. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  366. package/types/ops/utils/OpsUtils.d.ts +73 -17
  367. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  368. package/types/ops/utils/ScriptValidationUtils.d.ts +20 -1
  369. package/types/ops/utils/ScriptValidationUtils.d.ts.map +1 -1
  370. package/types/ops/utils/{Version.d.ts → VersionUtils.d.ts} +4 -4
  371. package/types/ops/utils/VersionUtils.d.ts.map +1 -0
  372. package/types/shared/Constants.d.ts +34 -0
  373. package/types/shared/Constants.d.ts.map +1 -0
  374. package/types/shared/State.d.ts +38 -38
  375. package/types/shared/State.d.ts.map +1 -1
  376. package/types/utils/SetupPollyForFrodoLib.d.ts +1 -1
  377. package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -1
  378. package/cjs/ops/utils/Version.js.map +0 -1
  379. package/cjs/ops/utils/Version.test.js.map +0 -1
  380. package/cjs/ops/utils/Wordwrap.js +0 -12
  381. package/cjs/ops/utils/Wordwrap.js.map +0 -1
  382. package/cjs/ops/utils/Wordwrap.test.js +0 -22
  383. package/cjs/ops/utils/Wordwrap.test.js.map +0 -1
  384. package/cjs/storage/StaticStorage.js +0 -31
  385. package/cjs/storage/StaticStorage.js.map +0 -1
  386. package/esm/ops/utils/Version.js.map +0 -1
  387. package/esm/ops/utils/Version.test.js.map +0 -1
  388. package/esm/ops/utils/Wordwrap.js +0 -5
  389. package/esm/ops/utils/Wordwrap.js.map +0 -1
  390. package/esm/ops/utils/Wordwrap.test.js +0 -19
  391. package/esm/ops/utils/Wordwrap.test.js.map +0 -1
  392. package/esm/storage/StaticStorage.js +0 -15
  393. package/esm/storage/StaticStorage.js.map +0 -1
  394. package/types/ops/utils/Version.d.ts.map +0 -1
  395. package/types/ops/utils/Wordwrap.d.ts +0 -2
  396. package/types/ops/utils/Wordwrap.d.ts.map +0 -1
  397. package/types/storage/StaticStorage.d.ts +0 -15
  398. package/types/storage/StaticStorage.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ExportImportUtils.js","names":["fs","lstat","readdir","join","slugify","decode","decodeBase64Url","encode","encodeBase64Url","FRODO_METADATA_ID","debugMessage","printMessage","state","getMetadata","titleCase","input","getRealmString","convertBase64TextToArray","b64text","convertBase64UrlTextToArray","b64UTF8Text","convertTextArrayToBase64","textArray","convertTextArrayToBase64Url","validateImport","metadata","getTypedFilename","name","type","suffix","getWorkingDirectory","saveToFile","data","identifier","filename","saveJsonToFile","includeMeta","appendTextToFile","findFilesByName","fileName","fast","path","readFilesRecursive","directory","origin","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","Date","toISOString","exportTool","exportToolVersion","getFrodoVersion","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","realm","getRealm","reduce","result","item","arrayOut","plainText","replace","joinedText","b64encodedScript","slug","wd","getDirectory","existsSync","message","mkdirSync","recursive","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","writeFileSync","appendFileSync","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","items","filePathsNested","Promise","all","entity","flat"],"sources":["../../../src/ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport State from '../../shared/State';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport default (state: State) => {\n return {\n getMetadata(): ExportMetaData {\n return getMetadata({ state });\n },\n\n /*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\n titleCase(input: string) {\n return titleCase(input);\n },\n\n getRealmString() {\n return getRealmString({ state });\n },\n\n convertBase64TextToArray(b64text: string) {\n return convertBase64TextToArray(b64text);\n },\n\n convertBase64UrlTextToArray(b64UTF8Text: string) {\n return convertBase64UrlTextToArray(b64UTF8Text);\n },\n\n convertTextArrayToBase64(textArray: string[]) {\n return convertTextArrayToBase64(textArray);\n },\n\n convertTextArrayToBase64Url(textArray: string[]) {\n return convertTextArrayToBase64Url(textArray);\n },\n\n validateImport(metadata): boolean {\n return validateImport(metadata);\n },\n\n getTypedFilename(name: string, type: string, suffix = 'json') {\n return getTypedFilename(name, type, suffix);\n },\n\n getWorkingDirectory() {\n return getWorkingDirectory({ state });\n },\n\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ) {\n return saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n });\n },\n\n /**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta = true\n ): boolean {\n return saveJsonToFile({ data, filename, includeMeta, state });\n },\n\n /**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\n appendTextToFile(data: string, filename: string) {\n return appendTextToFile(data, filename);\n },\n\n /**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\n findFilesByName(fileName: string, fast = true, path = './'): string[] {\n return findFilesByName(fileName, fast, path);\n },\n\n /**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\n async readFilesRecursive(directory: string): Promise<string[]> {\n return readFilesRecursive(directory);\n },\n };\n};\n\nexport function getMetadata({ state }: { state: State }): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: new Date().toISOString(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input: string) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString({ state }: { state: State }) {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text: string) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text: string) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory({ state }: { state: State }) {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage({\n message: `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`,\n state,\n });\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n}: {\n type: string;\n data: object;\n identifier: string;\n filename: string;\n state: State;\n}) {\n const exportData = {};\n exportData['meta'] = getMetadata({ state });\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage({\n message: `ERROR - can't save ${type} to file`,\n state,\n type: 'error',\n });\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile({\n data,\n filename,\n includeMeta = true,\n state,\n}: {\n data: object;\n filename: string;\n includeMeta?: boolean;\n state: State;\n}): boolean {\n const exportData = data;\n if (includeMeta) exportData['meta'] = getMetadata({ state });\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage({\n message: `ERROR - can't save ${filename}`,\n type: 'error',\n state,\n });\n return false;\n }\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data: string, filename: string) {\n fs.appendFileSync(filename, data);\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExportImportUtils.js","names":["fs","lstat","readdir","join","slugify","decode","decodeBase64Url","encode","encodeBase64Url","Constants","debugMessage","printMessage","state","getMetadata","titleCase","input","getRealmString","convertBase64TextToArray","b64text","convertBase64UrlTextToArray","b64UTF8Text","convertTextArrayToBase64","textArray","convertTextArrayToBase64Url","validateImport","metadata","getTypedFilename","name","type","suffix","getWorkingDirectory","saveToFile","data","identifier","filename","saveJsonToFile","includeMeta","appendTextToFile","findFilesByName","fileName","fast","path","readFilesRecursive","directory","origin","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","Date","toISOString","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","realm","getRealm","reduce","result","item","arrayOut","plainText","replace","joinedText","b64encodedScript","slug","wd","getDirectory","existsSync","message","mkdirSync","recursive","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","writeFileSync","appendFileSync","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","items","filePathsNested","Promise","all","entity","flat"],"sources":["../../../src/ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport { State } from '../../shared/State';\nimport Constants from '../../shared/Constants';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport type ExportImport = {\n getMetadata(): ExportMetaData;\n titleCase(input: string): string;\n getRealmString(): string;\n convertBase64TextToArray(b64text: string): any[];\n convertBase64UrlTextToArray(b64UTF8Text: string): any[];\n convertTextArrayToBase64(textArray: string[]): string;\n convertTextArrayToBase64Url(textArray: string[]): any;\n validateImport(metadata: any): boolean;\n getTypedFilename(name: string, type: string, suffix?: string): string;\n getWorkingDirectory(): string;\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ): void;\n /**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta?: boolean\n ): boolean;\n /**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\n appendTextToFile(data: string, filename: string): void;\n /**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\n findFilesByName(fileName: string, fast?: boolean, path?: string): string[];\n /**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\n readFilesRecursive(directory: string): Promise<string[]>;\n};\n\nexport default (state: State): ExportImport => {\n return {\n getMetadata(): ExportMetaData {\n return getMetadata({ state });\n },\n\n /*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\n titleCase(input: string) {\n return titleCase(input);\n },\n\n getRealmString() {\n return getRealmString({ state });\n },\n\n convertBase64TextToArray(b64text: string) {\n return convertBase64TextToArray(b64text);\n },\n\n convertBase64UrlTextToArray(b64UTF8Text: string) {\n return convertBase64UrlTextToArray(b64UTF8Text);\n },\n\n convertTextArrayToBase64(textArray: string[]) {\n return convertTextArrayToBase64(textArray);\n },\n\n convertTextArrayToBase64Url(textArray: string[]) {\n return convertTextArrayToBase64Url(textArray);\n },\n\n validateImport(metadata): boolean {\n return validateImport(metadata);\n },\n\n getTypedFilename(name: string, type: string, suffix = 'json') {\n return getTypedFilename(name, type, suffix);\n },\n\n getWorkingDirectory() {\n return getWorkingDirectory({ state });\n },\n\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ) {\n return saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n });\n },\n\n /**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta = true\n ): boolean {\n return saveJsonToFile({ data, filename, includeMeta, state });\n },\n\n /**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\n appendTextToFile(data: string, filename: string) {\n return appendTextToFile(data, filename);\n },\n\n /**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\n findFilesByName(fileName: string, fast = true, path = './'): string[] {\n return findFilesByName(fileName, fast, path);\n },\n\n /**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\n async readFilesRecursive(directory: string): Promise<string[]> {\n return readFilesRecursive(directory);\n },\n };\n};\n\nexport function getMetadata({ state }: { state: State }): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: new Date().toISOString(),\n exportTool: Constants.FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input: string) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString({ state }: { state: State }) {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text: string) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text: string) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory({ state }: { state: State }) {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage({\n message: `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`,\n state,\n });\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n}: {\n type: string;\n data: object;\n identifier: string;\n filename: string;\n state: State;\n}) {\n const exportData = {};\n exportData['meta'] = getMetadata({ state });\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage({\n message: `ERROR - can't save ${type} to file`,\n state,\n type: 'error',\n });\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile({\n data,\n filename,\n includeMeta = true,\n state,\n}: {\n data: object;\n filename: string;\n includeMeta?: boolean;\n state: State;\n}): boolean {\n const exportData = data;\n if (includeMeta) exportData['meta'] = getMetadata({ state });\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage({\n message: `ERROR - can't save ${filename}`,\n type: 'error',\n state,\n });\n return false;\n }\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data: string, filename: string) {\n fs.appendFileSync(filename, data);\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
@@ -1,23 +1,97 @@
1
- import * as globalConfig from "../../storage/StaticStorage.js";
1
+ import Constants from "../../shared/Constants.js";
2
2
  import { getCurrentRealmName, getRealmName as _getRealmName } from "../../api/utils/ApiUtils.js";
3
3
  import { lstat, readdir, readFile } from 'fs/promises';
4
4
  import { join } from 'path';
5
5
  import replaceall from 'replaceall';
6
-
7
- // TODO: do we really need this? if yes: document
8
- export function escapeRegExp(str) {
9
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
10
- }
11
-
12
- // TODO: do we really need this? if yes: document
13
- export function replaceAll(str, find, replace) {
14
- return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
15
- }
6
+ import * as Base64 from "../../api/utils/Base64.js";
7
+ export default (state => {
8
+ return {
9
+ encodeB64(input, padding = true) {
10
+ return Base64.encode(input, padding);
11
+ },
12
+ decodeB64(input) {
13
+ return Base64.decode(input);
14
+ },
15
+ encodeB64Url(input) {
16
+ return Base64.encodeBase64Url(input);
17
+ },
18
+ decodeB64Url(input) {
19
+ return Base64.decodeBase64Url(input);
20
+ },
21
+ /**
22
+ * Get new name when names collide
23
+ * @param {string} name to apply policy to
24
+ * @returns {string} new name according to policy
25
+ */
26
+ applyNameCollisionPolicy(name) {
27
+ return applyNameCollisionPolicy(name);
28
+ },
29
+ /**
30
+ * Get the name of the managed user object for the current realm
31
+ * @returns {string} the name of the managed user object for the current realm
32
+ */
33
+ getRealmManagedUser() {
34
+ return getRealmManagedUser({
35
+ state
36
+ });
37
+ },
38
+ /**
39
+ * Compare two json objects
40
+ * @param {object} obj1 object 1
41
+ * @param {object} obj2 object 2
42
+ * @param {string[]} ignoreKeys array of keys to ignore in comparison
43
+ * @returns {boolean} true if the two json objects have the same length and all the properties have the same value
44
+ */
45
+ isEqualJson(obj1, obj2, ignoreKeys = []) {
46
+ return isEqualJson(obj1, obj2, ignoreKeys);
47
+ },
48
+ /**
49
+ * Get current realm name
50
+ * @param {string} realm realm
51
+ * @returns {string} name of the realm. /alpha -> alpha
52
+ */
53
+ getRealmName(realm) {
54
+ return getRealmName(realm);
55
+ },
56
+ /**
57
+ * find all (nested) files in a directory
58
+ *
59
+ * @param baseDirectory directory to search
60
+ * @param childDirectory subdirectory to search
61
+ * @returns list of files
62
+ */
63
+ async readFiles(baseDirectory, childDirectory = '') {
64
+ return readFiles(baseDirectory, childDirectory);
65
+ },
66
+ substituteEnvParams(input, reader) {
67
+ return substituteEnvParams(input, reader);
68
+ },
69
+ unSubstituteEnvParams(input, reader) {
70
+ return unSubstituteEnvParams(input, reader);
71
+ },
72
+ /**
73
+ * Check if a string is a valid URL
74
+ * @param {string} urlString input string to be evaluated
75
+ * @returns {boolean} true if a valid URL, false otherwise
76
+ */
77
+ isValidUrl(urlString) {
78
+ return isValidUrl(urlString);
79
+ },
80
+ /**
81
+ * Deep clone object
82
+ * @param {object} obj object to deep clone
83
+ * @returns {object} new object cloned from obj
84
+ */
85
+ cloneDeep(obj) {
86
+ return cloneDeep(obj);
87
+ }
88
+ };
89
+ });
16
90
 
17
91
  /**
18
92
  * Get new name when names collide
19
- * @param {String} name to apply policy to
20
- * @returns {String} new name according to policy
93
+ * @param {string} name to apply policy to
94
+ * @returns {string} new name according to policy
21
95
  */
22
96
  export function applyNameCollisionPolicy(name) {
23
97
  const capturingRegex = /(.* - imported) \(([0-9]+)\)/;
@@ -33,13 +107,13 @@ export function applyNameCollisionPolicy(name) {
33
107
 
34
108
  /**
35
109
  * Get the name of the managed user object for the current realm
36
- * @returns {String} the name of the managed user object for the current realm
110
+ * @returns {string} the name of the managed user object for the current realm
37
111
  */
38
112
  export function getRealmManagedUser({
39
113
  state
40
114
  }) {
41
115
  let realmManagedUser = 'user';
42
- if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {
116
+ if (state.getDeploymentType() === Constants.CLOUD_DEPLOYMENT_TYPE_KEY) {
43
117
  realmManagedUser = `${getCurrentRealmName(state)}_user`;
44
118
  }
45
119
  return realmManagedUser;
@@ -47,9 +121,9 @@ export function getRealmManagedUser({
47
121
 
48
122
  /**
49
123
  * Compare two json objects
50
- * @param {Object} obj1 object 1
51
- * @param {Object} obj2 object 2
52
- * @param {[String]} ignoreKeys array of keys to ignore in comparison
124
+ * @param {object} obj1 object 1
125
+ * @param {object} obj2 object 2
126
+ * @param {string[]} ignoreKeys array of keys to ignore in comparison
53
127
  * @returns {boolean} true if the two json objects have the same length and all the properties have the same value
54
128
  */
55
129
  export function isEqualJson(obj1, obj2, ignoreKeys = []) {
@@ -74,8 +148,8 @@ export function isEqualJson(obj1, obj2, ignoreKeys = []) {
74
148
 
75
149
  /**
76
150
  * Get current realm name
77
- * @param {String} realm realm
78
- * @returns {String} name of the realm. /alpha -> alpha
151
+ * @param {string} realm realm
152
+ * @returns {string} name of the realm. /alpha -> alpha
79
153
  */
80
154
  export function getRealmName(realm) {
81
155
  return _getRealmName(realm);
@@ -133,8 +207,8 @@ export function isValidUrl(urlString) {
133
207
 
134
208
  /**
135
209
  * Deep clone object
136
- * @param {any} obj object to deep clone
137
- * @returns {any} new object cloned from obj
210
+ * @param {object} obj object to deep clone
211
+ * @returns {object} new object cloned from obj
138
212
  */
139
213
  export function cloneDeep(obj) {
140
214
  return JSON.parse(JSON.stringify(obj));
@@ -1 +1 @@
1
- {"version":3,"file":"OpsUtils.js","names":["globalConfig","getCurrentRealmName","getRealmName","_getRealmName","lstat","readdir","readFile","join","replaceall","escapeRegExp","str","replace","replaceAll","find","RegExp","applyNameCollisionPolicy","name","capturingRegex","found","match","length","parseInt","getRealmManagedUser","state","realmManagedUser","getDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","isEqualJson","obj1","obj2","ignoreKeys","obj1Keys","Object","keys","filter","key","includes","obj2Keys","objKey","realm","readFiles","baseDirectory","childDirectory","targetDirectory","directoryItems","childPaths","map","item","filePathsNested","Promise","all","childPath","path","isDirectory","content","flat","substituteEnvParams","input","reader","each","value","unSubstituteEnvParams","isValidUrl","urlString","Boolean","URL","error","cloneDeep","obj","JSON","parse","stringify"],"sources":["../../../src/ops/utils/OpsUtils.ts"],"sourcesContent":["import State from '../../shared/State';\nimport * as globalConfig from '../../storage/StaticStorage';\nimport {\n getCurrentRealmName,\n getRealmName as _getRealmName,\n} from '../../api/utils/ApiUtils';\nimport { lstat, readdir, readFile } from 'fs/promises';\nimport { join } from 'path';\nimport { Reader } from 'properties-reader';\nimport replaceall from 'replaceall';\n\n// TODO: do we really need this? if yes: document\nexport function escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n// TODO: do we really need this? if yes: document\nexport function replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n}\n\n/**\n * Get new name when names collide\n * @param {String} name to apply policy to\n * @returns {String} new name according to policy\n */\nexport function applyNameCollisionPolicy(name) {\n const capturingRegex = /(.* - imported) \\(([0-9]+)\\)/;\n const found = name.match(capturingRegex);\n if (found && found.length > 0 && found.length === 3) {\n // already renamed one or more times\n // return the next number\n return `${found[1]} (${parseInt(found[2], 10) + 1})`;\n }\n // first time\n return `${name} - imported (1)`;\n}\n\n/**\n * Get the name of the managed user object for the current realm\n * @returns {String} the name of the managed user object for the current realm\n */\nexport function getRealmManagedUser({ state }: { state: State }) {\n let realmManagedUser = 'user';\n if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {\n realmManagedUser = `${getCurrentRealmName(state)}_user`;\n }\n return realmManagedUser;\n}\n\n/**\n * Compare two json objects\n * @param {Object} obj1 object 1\n * @param {Object} obj2 object 2\n * @param {[String]} ignoreKeys array of keys to ignore in comparison\n * @returns {boolean} true if the two json objects have the same length and all the properties have the same value\n */\nexport function isEqualJson(obj1, obj2, ignoreKeys: string[] = []) {\n const obj1Keys = Object.keys(obj1).filter((key) => !ignoreKeys.includes(key));\n const obj2Keys = Object.keys(obj2).filter((key) => !ignoreKeys.includes(key));\n\n if (obj1Keys.length !== obj2Keys.length) {\n return false;\n }\n\n for (const objKey of obj1Keys) {\n if (obj1[objKey] !== obj2[objKey]) {\n if (\n typeof obj1[objKey] === 'object' &&\n typeof obj2[objKey] === 'object'\n ) {\n if (!isEqualJson(obj1[objKey], obj2[objKey], ignoreKeys)) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * Get current realm name\n * @param {String} realm realm\n * @returns {String} name of the realm. /alpha -> alpha\n */\nexport function getRealmName(realm) {\n return _getRealmName(realm);\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param baseDirectory directory to search\n * @param childDirectory subdirectory to search\n * @returns list of files\n */\nexport async function readFiles(\n baseDirectory: string,\n childDirectory = ''\n): Promise<\n {\n path: string;\n content: string;\n }[]\n> {\n const targetDirectory = join(baseDirectory, childDirectory);\n const directoryItems = await readdir(targetDirectory);\n const childPaths = directoryItems.map((item) => join(childDirectory, item));\n\n const filePathsNested = await Promise.all(\n childPaths.map(async (childPath) => {\n const path = join(baseDirectory, childPath);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFiles(baseDirectory, childPath);\n }\n\n return {\n path: childPath,\n content: await readFile(path, 'utf8'),\n };\n })\n );\n\n return filePathsNested.flat();\n}\n\nexport function substituteEnvParams(input: string, reader: Reader) {\n reader.each((key, value) => {\n input = replaceall(value, `\\${${key}}`, input);\n });\n return input;\n}\n\nexport function unSubstituteEnvParams(input: string, reader: Reader) {\n reader.each((key, value) => {\n input = replaceall(`\\${${key}}`, value, input);\n });\n return input;\n}\n\n/**\n * Check if a string is a valid URL\n * @param {string} urlString input string to be evaluated\n * @returns {boolean} true if a valid URL, false otherwise\n */\nexport function isValidUrl(urlString: string) {\n try {\n return Boolean(new URL(urlString));\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Deep clone object\n * @param {any} obj object to deep clone\n * @returns {any} new object cloned from obj\n */\nexport function cloneDeep(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n"],"mappings":"OACO,KAAKA,YAAY;AAAA,SAEtBC,mBAAmB,EACnBC,YAAY,IAAIC,aAAa;AAE/B,SAASC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,aAAa;AACtD,SAASC,IAAI,QAAQ,MAAM;AAE3B,OAAOC,UAAU,MAAM,YAAY;;AAEnC;AACA,OAAO,SAASC,YAAYA,CAACC,GAAG,EAAE;EAChC,OAAOA,GAAG,CAACC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD;;AAEA;AACA,OAAO,SAASC,UAAUA,CAACF,GAAG,EAAEG,IAAI,EAAEF,OAAO,EAAE;EAC7C,OAAOD,GAAG,CAACC,OAAO,CAAC,IAAIG,MAAM,CAACL,YAAY,CAACI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAEF,OAAO,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,wBAAwBA,CAACC,IAAI,EAAE;EAC7C,MAAMC,cAAc,GAAG,8BAA8B;EACrD,MAAMC,KAAK,GAAGF,IAAI,CAACG,KAAK,CAACF,cAAc,CAAC;EACxC,IAAIC,KAAK,IAAIA,KAAK,CAACE,MAAM,GAAG,CAAC,IAAIF,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;IACnD;IACA;IACA,OAAQ,GAAEF,KAAK,CAAC,CAAC,CAAE,KAAIG,QAAQ,CAACH,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAE,GAAE;EACtD;EACA;EACA,OAAQ,GAAEF,IAAK,iBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,mBAAmBA,CAAC;EAAEC;AAAwB,CAAC,EAAE;EAC/D,IAAIC,gBAAgB,GAAG,MAAM;EAC7B,IAAID,KAAK,CAACE,iBAAiB,CAAC,CAAC,KAAKzB,YAAY,CAAC0B,yBAAyB,EAAE;IACxEF,gBAAgB,GAAI,GAAEvB,mBAAmB,CAACsB,KAAK,CAAE,OAAM;EACzD;EACA,OAAOC,gBAAgB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,WAAWA,CAACC,IAAI,EAAEC,IAAI,EAAEC,UAAoB,GAAG,EAAE,EAAE;EACjE,MAAMC,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACL,IAAI,CAAC,CAACM,MAAM,CAAEC,GAAG,IAAK,CAACL,UAAU,CAACM,QAAQ,CAACD,GAAG,CAAC,CAAC;EAC7E,MAAME,QAAQ,GAAGL,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC,CAACK,MAAM,CAAEC,GAAG,IAAK,CAACL,UAAU,CAACM,QAAQ,CAACD,GAAG,CAAC,CAAC;EAE7E,IAAIJ,QAAQ,CAACX,MAAM,KAAKiB,QAAQ,CAACjB,MAAM,EAAE;IACvC,OAAO,KAAK;EACd;EAEA,KAAK,MAAMkB,MAAM,IAAIP,QAAQ,EAAE;IAC7B,IAAIH,IAAI,CAACU,MAAM,CAAC,KAAKT,IAAI,CAACS,MAAM,CAAC,EAAE;MACjC,IACE,OAAOV,IAAI,CAACU,MAAM,CAAC,KAAK,QAAQ,IAChC,OAAOT,IAAI,CAACS,MAAM,CAAC,KAAK,QAAQ,EAChC;QACA,IAAI,CAACX,WAAW,CAACC,IAAI,CAACU,MAAM,CAAC,EAAET,IAAI,CAACS,MAAM,CAAC,EAAER,UAAU,CAAC,EAAE;UACxD,OAAO,KAAK;QACd;MACF,CAAC,MAAM;QACL,OAAO,KAAK;MACd;IACF;EACF;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS5B,YAAYA,CAACqC,KAAK,EAAE;EAClC,OAAOpC,aAAa,CAACoC,KAAK,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,SAASA,CAC7BC,aAAqB,EACrBC,cAAc,GAAG,EAAE,EAMnB;EACA,MAAMC,eAAe,GAAGpC,IAAI,CAACkC,aAAa,EAAEC,cAAc,CAAC;EAC3D,MAAME,cAAc,GAAG,MAAMvC,OAAO,CAACsC,eAAe,CAAC;EACrD,MAAME,UAAU,GAAGD,cAAc,CAACE,GAAG,CAAEC,IAAI,IAAKxC,IAAI,CAACmC,cAAc,EAAEK,IAAI,CAAC,CAAC;EAE3E,MAAMC,eAAe,GAAG,MAAMC,OAAO,CAACC,GAAG,CACvCL,UAAU,CAACC,GAAG,CAAC,MAAOK,SAAS,IAAK;IAClC,MAAMC,IAAI,GAAG7C,IAAI,CAACkC,aAAa,EAAEU,SAAS,CAAC;IAC3C,MAAME,WAAW,GAAG,CAAC,MAAMjD,KAAK,CAACgD,IAAI,CAAC,EAAEC,WAAW,CAAC,CAAC;IAErD,IAAIA,WAAW,EAAE;MACf,OAAOb,SAAS,CAACC,aAAa,EAAEU,SAAS,CAAC;IAC5C;IAEA,OAAO;MACLC,IAAI,EAAED,SAAS;MACfG,OAAO,EAAE,MAAMhD,QAAQ,CAAC8C,IAAI,EAAE,MAAM;IACtC,CAAC;EACH,CAAC,CACH,CAAC;EAED,OAAOJ,eAAe,CAACO,IAAI,CAAC,CAAC;AAC/B;AAEA,OAAO,SAASC,mBAAmBA,CAACC,KAAa,EAAEC,MAAc,EAAE;EACjEA,MAAM,CAACC,IAAI,CAAC,CAACxB,GAAG,EAAEyB,KAAK,KAAK;IAC1BH,KAAK,GAAGjD,UAAU,CAACoD,KAAK,EAAG,MAAKzB,GAAI,GAAE,EAAEsB,KAAK,CAAC;EAChD,CAAC,CAAC;EACF,OAAOA,KAAK;AACd;AAEA,OAAO,SAASI,qBAAqBA,CAACJ,KAAa,EAAEC,MAAc,EAAE;EACnEA,MAAM,CAACC,IAAI,CAAC,CAACxB,GAAG,EAAEyB,KAAK,KAAK;IAC1BH,KAAK,GAAGjD,UAAU,CAAE,MAAK2B,GAAI,GAAE,EAAEyB,KAAK,EAAEH,KAAK,CAAC;EAChD,CAAC,CAAC;EACF,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,UAAUA,CAACC,SAAiB,EAAE;EAC5C,IAAI;IACF,OAAOC,OAAO,CAAC,IAAIC,GAAG,CAACF,SAAS,CAAC,CAAC;EACpC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,GAAG,EAAE;EAC7B,OAAOC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACH,GAAG,CAAC,CAAC;AACxC"}
1
+ {"version":3,"file":"OpsUtils.js","names":["Constants","getCurrentRealmName","getRealmName","_getRealmName","lstat","readdir","readFile","join","replaceall","Base64","state","encodeB64","input","padding","encode","decodeB64","decode","encodeB64Url","encodeBase64Url","decodeB64Url","decodeBase64Url","applyNameCollisionPolicy","name","getRealmManagedUser","isEqualJson","obj1","obj2","ignoreKeys","realm","readFiles","baseDirectory","childDirectory","substituteEnvParams","reader","unSubstituteEnvParams","isValidUrl","urlString","cloneDeep","obj","capturingRegex","found","match","length","parseInt","realmManagedUser","getDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","obj1Keys","Object","keys","filter","key","includes","obj2Keys","objKey","targetDirectory","directoryItems","childPaths","map","item","filePathsNested","Promise","all","childPath","path","isDirectory","content","flat","each","value","Boolean","URL","error","JSON","parse","stringify"],"sources":["../../../src/ops/utils/OpsUtils.ts"],"sourcesContent":["import { State } from '../../shared/State';\nimport Constants from '../../shared/Constants';\nimport {\n getCurrentRealmName,\n getRealmName as _getRealmName,\n} from '../../api/utils/ApiUtils';\nimport { lstat, readdir, readFile } from 'fs/promises';\nimport { join } from 'path';\nimport { Reader } from 'properties-reader';\nimport replaceall from 'replaceall';\nimport * as Base64 from '../../api/utils/Base64';\n\nexport type Utils = {\n encodeB64(input: string, padding: boolean): string;\n decodeB64(input: string): string;\n encodeB64Url(input: string): string;\n decodeB64Url(input: string): string;\n /**\n * Get new name when names collide\n * @param {string} name to apply policy to\n * @returns {string} new name according to policy\n */\n applyNameCollisionPolicy(name: string): string;\n /**\n * Get the name of the managed user object for the current realm\n * @returns {string} the name of the managed user object for the current realm\n */\n getRealmManagedUser(): string;\n /**\n * Compare two json objects\n * @param {object} obj1 object 1\n * @param {object} obj2 object 2\n * @param {string[]} ignoreKeys array of keys to ignore in comparison\n * @returns {boolean} true if the two json objects have the same length and all the properties have the same value\n */\n isEqualJson(obj1: object, obj2: object, ignoreKeys?: string[]): boolean;\n /**\n * Get current realm name\n * @param {string} realm realm\n * @returns {string} name of the realm. /alpha -> alpha\n */\n getRealmName(realm: string): string;\n /**\n * find all (nested) files in a directory\n *\n * @param baseDirectory directory to search\n * @param childDirectory subdirectory to search\n * @returns list of files\n */\n readFiles(\n baseDirectory: string,\n childDirectory?: string\n ): Promise<\n {\n path: string;\n content: string;\n }[]\n >;\n substituteEnvParams(input: string, reader: Reader): string;\n unSubstituteEnvParams(input: string, reader: Reader): string;\n /**\n * Check if a string is a valid URL\n * @param {string} urlString input string to be evaluated\n * @returns {boolean} true if a valid URL, false otherwise\n */\n isValidUrl(urlString: string): boolean;\n /**\n * Deep clone object\n * @param {object} obj object to deep clone\n * @returns {object} new object cloned from obj\n */\n cloneDeep(obj: object): object;\n};\n\nexport default (state: State): Utils => {\n return {\n encodeB64(input: string, padding = true): string {\n return Base64.encode(input, padding);\n },\n\n decodeB64(input: string): string {\n return Base64.decode(input);\n },\n\n encodeB64Url(input: string): string {\n return Base64.encodeBase64Url(input);\n },\n\n decodeB64Url(input: string): string {\n return Base64.decodeBase64Url(input);\n },\n\n /**\n * Get new name when names collide\n * @param {string} name to apply policy to\n * @returns {string} new name according to policy\n */\n applyNameCollisionPolicy(name: string): string {\n return applyNameCollisionPolicy(name);\n },\n\n /**\n * Get the name of the managed user object for the current realm\n * @returns {string} the name of the managed user object for the current realm\n */\n getRealmManagedUser(): string {\n return getRealmManagedUser({ state });\n },\n\n /**\n * Compare two json objects\n * @param {object} obj1 object 1\n * @param {object} obj2 object 2\n * @param {string[]} ignoreKeys array of keys to ignore in comparison\n * @returns {boolean} true if the two json objects have the same length and all the properties have the same value\n */\n isEqualJson(\n obj1: object,\n obj2: object,\n ignoreKeys: string[] = []\n ): boolean {\n return isEqualJson(obj1, obj2, ignoreKeys);\n },\n\n /**\n * Get current realm name\n * @param {string} realm realm\n * @returns {string} name of the realm. /alpha -> alpha\n */\n getRealmName(realm: string): string {\n return getRealmName(realm);\n },\n\n /**\n * find all (nested) files in a directory\n *\n * @param baseDirectory directory to search\n * @param childDirectory subdirectory to search\n * @returns list of files\n */\n async readFiles(\n baseDirectory: string,\n childDirectory = ''\n ): Promise<\n {\n path: string;\n content: string;\n }[]\n > {\n return readFiles(baseDirectory, childDirectory);\n },\n\n substituteEnvParams(input: string, reader: Reader) {\n return substituteEnvParams(input, reader);\n },\n\n unSubstituteEnvParams(input: string, reader: Reader) {\n return unSubstituteEnvParams(input, reader);\n },\n\n /**\n * Check if a string is a valid URL\n * @param {string} urlString input string to be evaluated\n * @returns {boolean} true if a valid URL, false otherwise\n */\n isValidUrl(urlString: string): boolean {\n return isValidUrl(urlString);\n },\n\n /**\n * Deep clone object\n * @param {object} obj object to deep clone\n * @returns {object} new object cloned from obj\n */\n cloneDeep(obj: object): object {\n return cloneDeep(obj);\n },\n };\n};\n\n/**\n * Get new name when names collide\n * @param {string} name to apply policy to\n * @returns {string} new name according to policy\n */\nexport function applyNameCollisionPolicy(name: string): string {\n const capturingRegex = /(.* - imported) \\(([0-9]+)\\)/;\n const found = name.match(capturingRegex);\n if (found && found.length > 0 && found.length === 3) {\n // already renamed one or more times\n // return the next number\n return `${found[1]} (${parseInt(found[2], 10) + 1})`;\n }\n // first time\n return `${name} - imported (1)`;\n}\n\n/**\n * Get the name of the managed user object for the current realm\n * @returns {string} the name of the managed user object for the current realm\n */\nexport function getRealmManagedUser({ state }: { state: State }): string {\n let realmManagedUser = 'user';\n if (state.getDeploymentType() === Constants.CLOUD_DEPLOYMENT_TYPE_KEY) {\n realmManagedUser = `${getCurrentRealmName(state)}_user`;\n }\n return realmManagedUser;\n}\n\n/**\n * Compare two json objects\n * @param {object} obj1 object 1\n * @param {object} obj2 object 2\n * @param {string[]} ignoreKeys array of keys to ignore in comparison\n * @returns {boolean} true if the two json objects have the same length and all the properties have the same value\n */\nexport function isEqualJson(\n obj1: object,\n obj2: object,\n ignoreKeys: string[] = []\n): boolean {\n const obj1Keys = Object.keys(obj1).filter((key) => !ignoreKeys.includes(key));\n const obj2Keys = Object.keys(obj2).filter((key) => !ignoreKeys.includes(key));\n\n if (obj1Keys.length !== obj2Keys.length) {\n return false;\n }\n\n for (const objKey of obj1Keys) {\n if (obj1[objKey] !== obj2[objKey]) {\n if (\n typeof obj1[objKey] === 'object' &&\n typeof obj2[objKey] === 'object'\n ) {\n if (!isEqualJson(obj1[objKey], obj2[objKey], ignoreKeys)) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * Get current realm name\n * @param {string} realm realm\n * @returns {string} name of the realm. /alpha -> alpha\n */\nexport function getRealmName(realm: string): string {\n return _getRealmName(realm);\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param baseDirectory directory to search\n * @param childDirectory subdirectory to search\n * @returns list of files\n */\nexport async function readFiles(\n baseDirectory: string,\n childDirectory = ''\n): Promise<\n {\n path: string;\n content: string;\n }[]\n> {\n const targetDirectory = join(baseDirectory, childDirectory);\n const directoryItems = await readdir(targetDirectory);\n const childPaths = directoryItems.map((item) => join(childDirectory, item));\n\n const filePathsNested = await Promise.all(\n childPaths.map(async (childPath) => {\n const path = join(baseDirectory, childPath);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFiles(baseDirectory, childPath);\n }\n\n return {\n path: childPath,\n content: await readFile(path, 'utf8'),\n };\n })\n );\n\n return filePathsNested.flat();\n}\n\nexport function substituteEnvParams(input: string, reader: Reader) {\n reader.each((key, value) => {\n input = replaceall(value, `\\${${key}}`, input);\n });\n return input;\n}\n\nexport function unSubstituteEnvParams(input: string, reader: Reader) {\n reader.each((key, value) => {\n input = replaceall(`\\${${key}}`, value, input);\n });\n return input;\n}\n\n/**\n * Check if a string is a valid URL\n * @param {string} urlString input string to be evaluated\n * @returns {boolean} true if a valid URL, false otherwise\n */\nexport function isValidUrl(urlString: string): boolean {\n try {\n return Boolean(new URL(urlString));\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Deep clone object\n * @param {object} obj object to deep clone\n * @returns {object} new object cloned from obj\n */\nexport function cloneDeep(obj: object): object {\n return JSON.parse(JSON.stringify(obj));\n}\n"],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import * as OpsUtils from "./OpsUtils.js";
10
10
  import { state } from "../../index.js";
11
- import { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY, CLASSIC_DEPLOYMENT_TYPE_KEY } from "../../storage/StaticStorage.js";
11
+ import Constants from "../../shared/Constants.js";
12
12
  describe('OpsUtils - getRealmManagedUser()', () => {
13
13
  test('getRealmManagedUser() 0: Method is implemented', async () => {
14
14
  expect(OpsUtils.getRealmManagedUser).toBeDefined();
@@ -16,7 +16,7 @@ describe('OpsUtils - getRealmManagedUser()', () => {
16
16
  test('getRealmManagedUser() 1: should prepend realm to managed user type in identity cloud', () => {
17
17
  // Arrange
18
18
  const REALM = 'alpha';
19
- const DEPLOYMENT_TYPE = CLOUD_DEPLOYMENT_TYPE_KEY;
19
+ const DEPLOYMENT_TYPE = Constants.CLOUD_DEPLOYMENT_TYPE_KEY;
20
20
  state.setRealm(REALM);
21
21
  state.setDeploymentType(DEPLOYMENT_TYPE);
22
22
  // Act
@@ -29,7 +29,7 @@ describe('OpsUtils - getRealmManagedUser()', () => {
29
29
  test('getRealmManagedUser() 2: should prepend realm without leading slash to managed user type in identity cloud', () => {
30
30
  // Arrange
31
31
  const REALM = '/alpha';
32
- const DEPLOYMENT_TYPE = CLOUD_DEPLOYMENT_TYPE_KEY;
32
+ const DEPLOYMENT_TYPE = Constants.CLOUD_DEPLOYMENT_TYPE_KEY;
33
33
  state.setRealm(REALM);
34
34
  state.setDeploymentType(DEPLOYMENT_TYPE);
35
35
  // Act
@@ -42,7 +42,7 @@ describe('OpsUtils - getRealmManagedUser()', () => {
42
42
  test('getRealmManagedUser() 3: should not prepend realm to managed user type in forgeops deployments', () => {
43
43
  // Arrange
44
44
  const REALM = 'alpha';
45
- const DEPLOYMENT_TYPE = FORGEOPS_DEPLOYMENT_TYPE_KEY;
45
+ const DEPLOYMENT_TYPE = Constants.FORGEOPS_DEPLOYMENT_TYPE_KEY;
46
46
  state.setRealm(REALM);
47
47
  state.setDeploymentType(DEPLOYMENT_TYPE);
48
48
  // Act
@@ -55,7 +55,7 @@ describe('OpsUtils - getRealmManagedUser()', () => {
55
55
  test('getRealmManagedUser() 4: should not prepend realm to managed user type in classic deployments', () => {
56
56
  // Arrange
57
57
  const REALM = 'alpha';
58
- const DEPLOYMENT_TYPE = CLASSIC_DEPLOYMENT_TYPE_KEY;
58
+ const DEPLOYMENT_TYPE = Constants.CLASSIC_DEPLOYMENT_TYPE_KEY;
59
59
  state.setRealm(REALM);
60
60
  state.setDeploymentType(DEPLOYMENT_TYPE);
61
61
  // Act
@@ -1 +1 @@
1
- {"version":3,"file":"OpsUtils.test.js","names":["OpsUtils","state","CLOUD_DEPLOYMENT_TYPE_KEY","FORGEOPS_DEPLOYMENT_TYPE_KEY","CLASSIC_DEPLOYMENT_TYPE_KEY","describe","test","expect","getRealmManagedUser","toBeDefined","REALM","DEPLOYMENT_TYPE","setRealm","setDeploymentType","testString","toBe","isEqualJson","obj1","obj2","toBeTruthy","key","toBeFalsy","key1","key2","key3","key4","key5"],"sources":["../../../src/ops/utils/OpsUtils.test.ts"],"sourcesContent":["/**\n * Run tests\n *\n * npm run test:only OpsUtils\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as OpsUtils from './OpsUtils';\nimport { state } from '../../index';\nimport {\n CLOUD_DEPLOYMENT_TYPE_KEY,\n FORGEOPS_DEPLOYMENT_TYPE_KEY,\n CLASSIC_DEPLOYMENT_TYPE_KEY,\n} from '../../storage/StaticStorage';\n\ndescribe('OpsUtils - getRealmManagedUser()', () => {\n test('getRealmManagedUser() 0: Method is implemented', async () => {\n expect(OpsUtils.getRealmManagedUser).toBeDefined();\n });\n\n test('getRealmManagedUser() 1: should prepend realm to managed user type in identity cloud', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = CLOUD_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('alpha_user');\n });\n\n test('getRealmManagedUser() 2: should prepend realm without leading slash to managed user type in identity cloud', () => {\n // Arrange\n const REALM = '/alpha';\n const DEPLOYMENT_TYPE = CLOUD_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('alpha_user');\n });\n\n test('getRealmManagedUser() 3: should not prepend realm to managed user type in forgeops deployments', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = FORGEOPS_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('user');\n });\n\n test('getRealmManagedUser() 4: should not prepend realm to managed user type in classic deployments', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = CLASSIC_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('user');\n });\n});\n\ndescribe('OpsUtils - isEqualJson()', () => {\n test('isEqualJson() 0: Method is implemented', async () => {\n expect(OpsUtils.isEqualJson).toBeDefined();\n });\n\n test('isEqualJson() 1: two empty objects should be equal', () => {\n const obj1 = {};\n const obj2 = {};\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 2: two objects with single and equal entry should be equal', () => {\n const obj1 = { key: 'value' };\n const obj2 = { key: 'value' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 3: two objects with equal key but different value should not be equal', () => {\n const obj1 = { key: 'value1' };\n const obj2 = { key: 'value2' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 4: two objects with differing keys but equal values should not be equal', () => {\n const obj1 = { key1: 'value' };\n const obj2 = { key2: 'value' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 5: two objects with unequal amounts of entries should not be equal', () => {\n const obj1 = { key1: 'value' };\n const obj2 = { key1: 'value', key2: 'value2' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 6: two objects with equal but nested keys should be equal', () => {\n const obj1 = { key1: 'value1', key2: { key3: 'value3' } };\n const obj2 = { key1: 'value1', key2: { key3: 'value3' } };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 7: two objects with equal but multi-nested keys should be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 8: two objects with equal multi-nested keys but unequal values should not be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 9: two objects with equal multi-nested keys but unequal values with the offending key excluded should be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2, ['key5'])).toBeTruthy();\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"OpsUtils.test.js","names":["OpsUtils","state","Constants","describe","test","expect","getRealmManagedUser","toBeDefined","REALM","DEPLOYMENT_TYPE","CLOUD_DEPLOYMENT_TYPE_KEY","setRealm","setDeploymentType","testString","toBe","FORGEOPS_DEPLOYMENT_TYPE_KEY","CLASSIC_DEPLOYMENT_TYPE_KEY","isEqualJson","obj1","obj2","toBeTruthy","key","toBeFalsy","key1","key2","key3","key4","key5"],"sources":["../../../src/ops/utils/OpsUtils.test.ts"],"sourcesContent":["/**\n * Run tests\n *\n * npm run test:only OpsUtils\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as OpsUtils from './OpsUtils';\nimport { state } from '../../index';\nimport Constants from '../../shared/Constants';\n\ndescribe('OpsUtils - getRealmManagedUser()', () => {\n test('getRealmManagedUser() 0: Method is implemented', async () => {\n expect(OpsUtils.getRealmManagedUser).toBeDefined();\n });\n\n test('getRealmManagedUser() 1: should prepend realm to managed user type in identity cloud', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = Constants.CLOUD_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('alpha_user');\n });\n\n test('getRealmManagedUser() 2: should prepend realm without leading slash to managed user type in identity cloud', () => {\n // Arrange\n const REALM = '/alpha';\n const DEPLOYMENT_TYPE = Constants.CLOUD_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('alpha_user');\n });\n\n test('getRealmManagedUser() 3: should not prepend realm to managed user type in forgeops deployments', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = Constants.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('user');\n });\n\n test('getRealmManagedUser() 4: should not prepend realm to managed user type in classic deployments', () => {\n // Arrange\n const REALM = 'alpha';\n const DEPLOYMENT_TYPE = Constants.CLASSIC_DEPLOYMENT_TYPE_KEY;\n state.setRealm(REALM);\n state.setDeploymentType(DEPLOYMENT_TYPE);\n // Act\n const testString = OpsUtils.getRealmManagedUser({ state });\n // Assert\n expect(testString).toBe('user');\n });\n});\n\ndescribe('OpsUtils - isEqualJson()', () => {\n test('isEqualJson() 0: Method is implemented', async () => {\n expect(OpsUtils.isEqualJson).toBeDefined();\n });\n\n test('isEqualJson() 1: two empty objects should be equal', () => {\n const obj1 = {};\n const obj2 = {};\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 2: two objects with single and equal entry should be equal', () => {\n const obj1 = { key: 'value' };\n const obj2 = { key: 'value' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 3: two objects with equal key but different value should not be equal', () => {\n const obj1 = { key: 'value1' };\n const obj2 = { key: 'value2' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 4: two objects with differing keys but equal values should not be equal', () => {\n const obj1 = { key1: 'value' };\n const obj2 = { key2: 'value' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 5: two objects with unequal amounts of entries should not be equal', () => {\n const obj1 = { key1: 'value' };\n const obj2 = { key1: 'value', key2: 'value2' };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 6: two objects with equal but nested keys should be equal', () => {\n const obj1 = { key1: 'value1', key2: { key3: 'value3' } };\n const obj2 = { key1: 'value1', key2: { key3: 'value3' } };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 7: two objects with equal but multi-nested keys should be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeTruthy();\n });\n\n test('isEqualJson() 8: two objects with equal multi-nested keys but unequal values should not be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2)).toBeFalsy();\n });\n\n test('isEqualJson() 9: two objects with equal multi-nested keys but unequal values with the offending key excluded should be equal', () => {\n const obj1 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value5',\n },\n },\n };\n const obj2 = {\n key1: 'value1',\n key2: {\n key3: 'value3',\n key4: {\n key5: 'value',\n },\n },\n };\n expect(OpsUtils.isEqualJson(obj1, obj2, ['key5'])).toBeTruthy();\n });\n});\n"],"mappings":"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"}
@@ -1,6 +1,34 @@
1
1
  import { parseScript } from 'esprima';
2
2
  import { decode } from "../../api/utils/Base64.js";
3
3
  import { printMessage } from "./Console.js";
4
+ export default (state => {
5
+ return {
6
+ validateScriptHooks(jsonData) {
7
+ return validateScriptHooks({
8
+ jsonData,
9
+ state
10
+ });
11
+ },
12
+ findAllScriptHooks(jsonData, scriptHooksArray = []) {
13
+ return findAllScriptHooks(jsonData, scriptHooksArray);
14
+ },
15
+ validateScript(script) {
16
+ return validateScript(script, state);
17
+ },
18
+ validateScriptDecoded(scriptSkeleton) {
19
+ return validateScriptDecoded({
20
+ scriptSkeleton,
21
+ state
22
+ });
23
+ },
24
+ isValidJs(javascriptSource) {
25
+ return isValidJs({
26
+ javascriptSource,
27
+ state
28
+ });
29
+ }
30
+ };
31
+ });
4
32
  export function validateScriptHooks({
5
33
  jsonData,
6
34
  state
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptValidationUtils.js","names":["parseScript","decode","printMessage","validateScriptHooks","jsonData","state","scriptHooks","findAllScriptHooks","scriptHook","isValidJs","javascriptSource","source","scriptHooksArray","key","item","type","push","validateScript","script","scriptRaw","language","validateScriptDecoded","scriptSkeleton","Array","isArray","join","e","message"],"sources":["../../../src/ops/utils/ScriptValidationUtils.ts"],"sourcesContent":["import { parseScript } from 'esprima';\nimport { ScriptSkeleton } from '../../api/ApiTypes';\nimport { decode } from '../../api/utils/Base64';\nimport { printMessage } from './Console';\nimport State from '../../shared/State';\n\ninterface ScriptHook {\n type: 'text/javascript';\n source?: string;\n}\n\nexport function validateScriptHooks({\n jsonData,\n state,\n}: {\n jsonData: object;\n state: State;\n}): boolean {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n if (!isValidJs({ javascriptSource: scriptHook.source, state })) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction findAllScriptHooks(\n jsonData: unknown,\n scriptHooksArray: ScriptHook[] = []\n): ScriptHook[] {\n if (typeof jsonData !== 'object' || jsonData === null) {\n return scriptHooksArray;\n }\n\n for (const key in jsonData) {\n const item = jsonData[key];\n if (typeof item !== 'object' || item === null) {\n continue;\n }\n\n if ('type' in item && item.type === 'text/javascript') {\n scriptHooksArray.push(item);\n } else {\n findAllScriptHooks(item, scriptHooksArray);\n }\n }\n\n return scriptHooksArray;\n}\n\nexport function validateScript(script: ScriptSkeleton, state: State): boolean {\n const scriptRaw = decode(script.script);\n\n if (script.language === 'JAVASCRIPT') {\n return isValidJs({ javascriptSource: scriptRaw, state });\n }\n return true;\n}\n\nexport function validateScriptDecoded({\n scriptSkeleton,\n state,\n}: {\n scriptSkeleton: ScriptSkeleton;\n state: State;\n}): boolean {\n if (!Array.isArray(scriptSkeleton.script)) {\n return false;\n }\n if (scriptSkeleton.language === 'JAVASCRIPT') {\n const script = scriptSkeleton.script.join('\\n');\n return isValidJs({ javascriptSource: script, state });\n }\n return true;\n}\n\nexport function isValidJs({\n javascriptSource,\n state,\n}: {\n javascriptSource: string;\n state: State;\n}) {\n try {\n parseScript(javascriptSource);\n return true;\n } catch (e) {\n printMessage({\n message: `Invalid JavaScript: ${e.message}`,\n type: 'error',\n state,\n });\n\n return false;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,SAAS;AAAC,SAE7BC,MAAM;AAAA,SACNC,YAAY;AAQrB,OAAO,SAASC,mBAAmBA,CAAC;EAClCC,QAAQ;EACRC;AAIF,CAAC,EAAW;EACV,MAAMC,WAAW,GAAGC,kBAAkB,CAACH,QAAQ,CAAC;EAEhD,KAAK,MAAMI,UAAU,IAAIF,WAAW,EAAE;IACpC,IAAI,EAAE,QAAQ,IAAIE,UAAU,CAAC,EAAE;MAC7B;IACF;IAEA,IAAI,CAACC,SAAS,CAAC;MAAEC,gBAAgB,EAAEF,UAAU,CAACG,MAAM;MAAEN;IAAM,CAAC,CAAC,EAAE;MAC9D,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASE,kBAAkBA,CACzBH,QAAiB,EACjBQ,gBAA8B,GAAG,EAAE,EACrB;EACd,IAAI,OAAOR,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,IAAI,EAAE;IACrD,OAAOQ,gBAAgB;EACzB;EAEA,KAAK,MAAMC,GAAG,IAAIT,QAAQ,EAAE;IAC1B,MAAMU,IAAI,GAAGV,QAAQ,CAACS,GAAG,CAAC;IAC1B,IAAI,OAAOC,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;MAC7C;IACF;IAEA,IAAI,MAAM,IAAIA,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;MACrDH,gBAAgB,CAACI,IAAI,CAACF,IAAI,CAAC;IAC7B,CAAC,MAAM;MACLP,kBAAkB,CAACO,IAAI,EAAEF,gBAAgB,CAAC;IAC5C;EACF;EAEA,OAAOA,gBAAgB;AACzB;AAEA,OAAO,SAASK,cAAcA,CAACC,MAAsB,EAAEb,KAAY,EAAW;EAC5E,MAAMc,SAAS,GAAGlB,MAAM,CAACiB,MAAM,CAACA,MAAM,CAAC;EAEvC,IAAIA,MAAM,CAACE,QAAQ,KAAK,YAAY,EAAE;IACpC,OAAOX,SAAS,CAAC;MAAEC,gBAAgB,EAAES,SAAS;MAAEd;IAAM,CAAC,CAAC;EAC1D;EACA,OAAO,IAAI;AACb;AAEA,OAAO,SAASgB,qBAAqBA,CAAC;EACpCC,cAAc;EACdjB;AAIF,CAAC,EAAW;EACV,IAAI,CAACkB,KAAK,CAACC,OAAO,CAACF,cAAc,CAACJ,MAAM,CAAC,EAAE;IACzC,OAAO,KAAK;EACd;EACA,IAAII,cAAc,CAACF,QAAQ,KAAK,YAAY,EAAE;IAC5C,MAAMF,MAAM,GAAGI,cAAc,CAACJ,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;IAC/C,OAAOhB,SAAS,CAAC;MAAEC,gBAAgB,EAAEQ,MAAM;MAAEb;IAAM,CAAC,CAAC;EACvD;EACA,OAAO,IAAI;AACb;AAEA,OAAO,SAASI,SAASA,CAAC;EACxBC,gBAAgB;EAChBL;AAIF,CAAC,EAAE;EACD,IAAI;IACFL,WAAW,CAACU,gBAAgB,CAAC;IAC7B,OAAO,IAAI;EACb,CAAC,CAAC,OAAOgB,CAAC,EAAE;IACVxB,YAAY,CAAC;MACXyB,OAAO,EAAG,uBAAsBD,CAAC,CAACC,OAAQ,EAAC;MAC3CZ,IAAI,EAAE,OAAO;MACbV;IACF,CAAC,CAAC;IAEF,OAAO,KAAK;EACd;AACF"}
1
+ {"version":3,"file":"ScriptValidationUtils.js","names":["parseScript","decode","printMessage","state","validateScriptHooks","jsonData","findAllScriptHooks","scriptHooksArray","validateScript","script","validateScriptDecoded","scriptSkeleton","isValidJs","javascriptSource","scriptHooks","scriptHook","source","key","item","type","push","scriptRaw","language","Array","isArray","join","e","message"],"sources":["../../../src/ops/utils/ScriptValidationUtils.ts"],"sourcesContent":["import { parseScript } from 'esprima';\nimport { ScriptSkeleton } from '../../api/ApiTypes';\nimport { decode } from '../../api/utils/Base64';\nimport { printMessage } from './Console';\nimport { State } from '../../shared/State';\n\nexport type ScriptValidation = {\n validateScriptHooks(jsonData: object): boolean;\n findAllScriptHooks(\n jsonData: object,\n scriptHooksArray?: ScriptHook[]\n ): ScriptHook[];\n validateScript(script: ScriptSkeleton): boolean;\n validateScriptDecoded(scriptSkeleton: ScriptSkeleton): boolean;\n isValidJs(javascriptSource: string): boolean;\n};\n\nexport default (state: State) => {\n return {\n validateScriptHooks(jsonData: object): boolean {\n return validateScriptHooks({ jsonData, state });\n },\n\n findAllScriptHooks(\n jsonData: object,\n scriptHooksArray: ScriptHook[] = []\n ): ScriptHook[] {\n return findAllScriptHooks(jsonData, scriptHooksArray);\n },\n\n validateScript(script: ScriptSkeleton): boolean {\n return validateScript(script, state);\n },\n\n validateScriptDecoded(scriptSkeleton: ScriptSkeleton): boolean {\n return validateScriptDecoded({ scriptSkeleton, state });\n },\n\n isValidJs(javascriptSource: string) {\n return isValidJs({ javascriptSource, state });\n },\n };\n};\n\nexport interface ScriptHook {\n type: 'text/javascript';\n source?: string;\n}\n\nexport function validateScriptHooks({\n jsonData,\n state,\n}: {\n jsonData: object;\n state: State;\n}): boolean {\n const scriptHooks = findAllScriptHooks(jsonData);\n\n for (const scriptHook of scriptHooks) {\n if (!('source' in scriptHook)) {\n continue;\n }\n\n if (!isValidJs({ javascriptSource: scriptHook.source, state })) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction findAllScriptHooks(\n jsonData: unknown,\n scriptHooksArray: ScriptHook[] = []\n): ScriptHook[] {\n if (typeof jsonData !== 'object' || jsonData === null) {\n return scriptHooksArray;\n }\n\n for (const key in jsonData) {\n const item = jsonData[key];\n if (typeof item !== 'object' || item === null) {\n continue;\n }\n\n if ('type' in item && item.type === 'text/javascript') {\n scriptHooksArray.push(item);\n } else {\n findAllScriptHooks(item, scriptHooksArray);\n }\n }\n\n return scriptHooksArray;\n}\n\nexport function validateScript(script: ScriptSkeleton, state: State): boolean {\n const scriptRaw = decode(script.script as string);\n\n if (script.language === 'JAVASCRIPT') {\n return isValidJs({ javascriptSource: scriptRaw, state });\n }\n return true;\n}\n\nexport function validateScriptDecoded({\n scriptSkeleton,\n state,\n}: {\n scriptSkeleton: ScriptSkeleton;\n state: State;\n}): boolean {\n if (!Array.isArray(scriptSkeleton.script)) {\n return false;\n }\n if (scriptSkeleton.language === 'JAVASCRIPT') {\n const script = scriptSkeleton.script.join('\\n');\n return isValidJs({ javascriptSource: script, state });\n }\n return true;\n}\n\nexport function isValidJs({\n javascriptSource,\n state,\n}: {\n javascriptSource: string;\n state: State;\n}) {\n try {\n parseScript(javascriptSource);\n return true;\n } catch (e) {\n printMessage({\n message: `Invalid JavaScript: ${e.message}`,\n type: 'error',\n state,\n });\n\n return false;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,SAAS;AAAC,SAE7BC,MAAM;AAAA,SACNC,YAAY;AAcrB,gBAAgBC,KAAY,IAAK;EAC/B,OAAO;IACLC,mBAAmBA,CAACC,QAAgB,EAAW;MAC7C,OAAOD,mBAAmB,CAAC;QAAEC,QAAQ;QAAEF;MAAM,CAAC,CAAC;IACjD,CAAC;IAEDG,kBAAkBA,CAChBD,QAAgB,EAChBE,gBAA8B,GAAG,EAAE,EACrB;MACd,OAAOD,kBAAkB,CAACD,QAAQ,EAAEE,gBAAgB,CAAC;IACvD,CAAC;IAEDC,cAAcA,CAACC,MAAsB,EAAW;MAC9C,OAAOD,cAAc,CAACC,MAAM,EAAEN,KAAK,CAAC;IACtC,CAAC;IAEDO,qBAAqBA,CAACC,cAA8B,EAAW;MAC7D,OAAOD,qBAAqB,CAAC;QAAEC,cAAc;QAAER;MAAM,CAAC,CAAC;IACzD,CAAC;IAEDS,SAASA,CAACC,gBAAwB,EAAE;MAClC,OAAOD,SAAS,CAAC;QAAEC,gBAAgB;QAAEV;MAAM,CAAC,CAAC;IAC/C;EACF,CAAC;AACH,CAAC;AAOD,OAAO,SAASC,mBAAmBA,CAAC;EAClCC,QAAQ;EACRF;AAIF,CAAC,EAAW;EACV,MAAMW,WAAW,GAAGR,kBAAkB,CAACD,QAAQ,CAAC;EAEhD,KAAK,MAAMU,UAAU,IAAID,WAAW,EAAE;IACpC,IAAI,EAAE,QAAQ,IAAIC,UAAU,CAAC,EAAE;MAC7B;IACF;IAEA,IAAI,CAACH,SAAS,CAAC;MAAEC,gBAAgB,EAAEE,UAAU,CAACC,MAAM;MAAEb;IAAM,CAAC,CAAC,EAAE;MAC9D,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASG,kBAAkBA,CACzBD,QAAiB,EACjBE,gBAA8B,GAAG,EAAE,EACrB;EACd,IAAI,OAAOF,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,IAAI,EAAE;IACrD,OAAOE,gBAAgB;EACzB;EAEA,KAAK,MAAMU,GAAG,IAAIZ,QAAQ,EAAE;IAC1B,MAAMa,IAAI,GAAGb,QAAQ,CAACY,GAAG,CAAC;IAC1B,IAAI,OAAOC,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;MAC7C;IACF;IAEA,IAAI,MAAM,IAAIA,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;MACrDZ,gBAAgB,CAACa,IAAI,CAACF,IAAI,CAAC;IAC7B,CAAC,MAAM;MACLZ,kBAAkB,CAACY,IAAI,EAAEX,gBAAgB,CAAC;IAC5C;EACF;EAEA,OAAOA,gBAAgB;AACzB;AAEA,OAAO,SAASC,cAAcA,CAACC,MAAsB,EAAEN,KAAY,EAAW;EAC5E,MAAMkB,SAAS,GAAGpB,MAAM,CAACQ,MAAM,CAACA,MAAgB,CAAC;EAEjD,IAAIA,MAAM,CAACa,QAAQ,KAAK,YAAY,EAAE;IACpC,OAAOV,SAAS,CAAC;MAAEC,gBAAgB,EAAEQ,SAAS;MAAElB;IAAM,CAAC,CAAC;EAC1D;EACA,OAAO,IAAI;AACb;AAEA,OAAO,SAASO,qBAAqBA,CAAC;EACpCC,cAAc;EACdR;AAIF,CAAC,EAAW;EACV,IAAI,CAACoB,KAAK,CAACC,OAAO,CAACb,cAAc,CAACF,MAAM,CAAC,EAAE;IACzC,OAAO,KAAK;EACd;EACA,IAAIE,cAAc,CAACW,QAAQ,KAAK,YAAY,EAAE;IAC5C,MAAMb,MAAM,GAAGE,cAAc,CAACF,MAAM,CAACgB,IAAI,CAAC,IAAI,CAAC;IAC/C,OAAOb,SAAS,CAAC;MAAEC,gBAAgB,EAAEJ,MAAM;MAAEN;IAAM,CAAC,CAAC;EACvD;EACA,OAAO,IAAI;AACb;AAEA,OAAO,SAASS,SAASA,CAAC;EACxBC,gBAAgB;EAChBV;AAIF,CAAC,EAAE;EACD,IAAI;IACFH,WAAW,CAACa,gBAAgB,CAAC;IAC7B,OAAO,IAAI;EACb,CAAC,CAAC,OAAOa,CAAC,EAAE;IACVxB,YAAY,CAAC;MACXyB,OAAO,EAAG,uBAAsBD,CAAC,CAACC,OAAQ,EAAC;MAC3CR,IAAI,EAAE,OAAO;MACbhB;IACF,CAAC,CAAC;IAEF,OAAO,KAAK;EACd;AACF"}
@@ -1,6 +1,6 @@
1
- import State from "../../shared/State.js";
1
+ import StateImpl from "../../shared/State.js";
2
2
  import { validateScriptHooks } from "./ScriptValidationUtils.js";
3
- const state = new State({});
3
+ const state = StateImpl({});
4
4
  describe('validateScriptHooks', () => {
5
5
  it('should return false when there is an invalid script', () => {
6
6
  const jsonData = {
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptValidationUtils.test.js","names":["State","validateScriptHooks","state","describe","it","jsonData","script","type","source","expect","toBe"],"sources":["../../../src/ops/utils/ScriptValidationUtils.test.ts"],"sourcesContent":["import State from '../../shared/State';\nimport { validateScriptHooks } from './ScriptValidationUtils';\n\nconst state: State = new State({});\n\ndescribe('validateScriptHooks', () => {\n it('should return false when there is an invalid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'invalid javascript',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(false);\n });\n\n it('should return true when there is a valid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'console.log(\"Hello World\");',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(true);\n });\n\n it('should return true when there is no script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(true);\n });\n});\n"],"mappings":"OAAOA,KAAK;AAAA,SACHC,mBAAmB;AAE5B,MAAMC,KAAY,GAAG,IAAIF,KAAK,CAAC,CAAC,CAAC,CAAC;AAElCG,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpCC,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEFN,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFN,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE;MACR;IACF,CAAC;IACDE,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ScriptValidationUtils.test.js","names":["StateImpl","validateScriptHooks","state","describe","it","jsonData","script","type","source","expect","toBe"],"sources":["../../../src/ops/utils/ScriptValidationUtils.test.ts"],"sourcesContent":["import StateImpl, { State } from '../../shared/State';\nimport { validateScriptHooks } from './ScriptValidationUtils';\n\nconst state: State = StateImpl({});\n\ndescribe('validateScriptHooks', () => {\n it('should return false when there is an invalid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'invalid javascript',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(false);\n });\n\n it('should return true when there is a valid script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n source: 'console.log(\"Hello World\");',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(true);\n });\n\n it('should return true when there is no script', () => {\n const jsonData = {\n script: {\n type: 'text/javascript',\n },\n };\n expect(validateScriptHooks({ jsonData, state })).toBe(true);\n });\n});\n"],"mappings":"OAAOA,SAAS;AAAA,SACPC,mBAAmB;AAE5B,MAAMC,KAAY,GAAGF,SAAS,CAAC,CAAC,CAAC,CAAC;AAElCG,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpCC,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,KAAK,CAAC;EAC9D,CAAC,CAAC;EAEFN,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE,iBAAiB;QACvBC,MAAM,EAAE;MACV;IACF,CAAC;IACDC,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFN,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMC,QAAQ,GAAG;MACfC,MAAM,EAAE;QACNC,IAAI,EAAE;MACR;IACF,CAAC;IACDE,MAAM,CAACR,mBAAmB,CAAC;MAAEI,QAAQ;MAAEH;IAAM,CAAC,CAAC,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -39,4 +39,4 @@ export async function getAllVersions({
39
39
  const result = await Promise.allSettled(reqPromises);
40
40
  return result;
41
41
  }
42
- //# sourceMappingURL=Version.js.map
42
+ //# sourceMappingURL=VersionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionUtils.js","names":["fs","path","generateReleaseApi","fileURLToPath","state","getVersion","getAllVersions","endpoints","__dirname","dirname","import","meta","url","pkg","JSON","parse","readFileSync","resolve","version","reqPromises","forEach","item","push","baseUrl","base","get","result","Promise","allSettled"],"sources":["../../../src/ops/utils/VersionUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { generateReleaseApi } from '../../api/BaseApi';\n\nimport { fileURLToPath } from 'url';\nimport { State } from '../../shared/State';\n\nexport type Version = {\n getVersion(): string;\n getAllVersions(\n endpoints: {\n base: string;\n path: string;\n }[]\n ): Promise<PromiseSettledResult<any>[]>;\n};\n\nexport default (state: State): Version => {\n return {\n getVersion() {\n return getVersion({ state });\n },\n\n async getAllVersions(endpoints: { base: string; path: string }[]) {\n return getAllVersions({ endpoints, state });\n },\n };\n};\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../../../package.json'), 'utf8')\n);\n\nexport function getVersion({ state }: { state: State }) {\n // must initialize state to avoid library initialization issues\n if (state) return `${pkg.version}`;\n}\n\nexport async function getAllVersions({\n endpoints,\n state,\n}: {\n endpoints: { base: string; path: string }[];\n state: State;\n}) {\n const reqPromises = [];\n endpoints.forEach((item) => {\n reqPromises.push(\n generateReleaseApi({ baseUrl: item.base, state }).get(item.path)\n );\n });\n const result = await Promise.allSettled(reqPromises);\n return result;\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AAAC,SACfC,kBAAkB;AAE3B,SAASC,aAAa,QAAQ,KAAK;AAanC,gBAAgBC,KAAY,IAAc;EACxC,OAAO;IACLC,UAAUA,CAAA,EAAG;MACX,OAAOA,UAAU,CAAC;QAAED;MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAME,cAAcA,CAACC,SAA2C,EAAE;MAChE,OAAOD,cAAc,CAAC;QAAEC,SAAS;QAAEH;MAAM,CAAC,CAAC;IAC7C;EACF,CAAC;AACH,CAAC;AAED,MAAMI,SAAS,GAAGP,IAAI,CAACQ,OAAO,CAACN,aAAa,CAACO,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CACpBf,EAAE,CAACgB,YAAY,CAACf,IAAI,CAACgB,OAAO,CAACT,SAAS,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAC1E,CAAC;AAED,OAAO,SAASH,UAAUA,CAAC;EAAED;AAAwB,CAAC,EAAE;EACtD;EACA,IAAIA,KAAK,EAAE,OAAQ,GAAES,GAAG,CAACK,OAAQ,EAAC;AACpC;AAEA,OAAO,eAAeZ,cAAcA,CAAC;EACnCC,SAAS;EACTH;AAIF,CAAC,EAAE;EACD,MAAMe,WAAW,GAAG,EAAE;EACtBZ,SAAS,CAACa,OAAO,CAAEC,IAAI,IAAK;IAC1BF,WAAW,CAACG,IAAI,CACdpB,kBAAkB,CAAC;MAAEqB,OAAO,EAAEF,IAAI,CAACG,IAAI;MAAEpB;IAAM,CAAC,CAAC,CAACqB,GAAG,CAACJ,IAAI,CAACpB,IAAI,CACjE,CAAC;EACH,CAAC,CAAC;EACF,MAAMyB,MAAM,GAAG,MAAMC,OAAO,CAACC,UAAU,CAACT,WAAW,CAAC;EACpD,OAAOO,MAAM;AACf"}
@@ -1,7 +1,7 @@
1
1
  import { state } from "../../index.js";
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
- import { getVersion } from "./Version.js";
4
+ import { getVersion } from "./VersionUtils.js";
5
5
  import { fileURLToPath } from 'url';
6
6
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
7
  const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../../package.json'), 'utf8'));
@@ -13,4 +13,4 @@ describe('index', () => {
13
13
  expect(result).toEqual(`${pkg.version}`);
14
14
  });
15
15
  });
16
- //# sourceMappingURL=Version.test.js.map
16
+ //# sourceMappingURL=VersionUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionUtils.test.js","names":["state","fs","path","getVersion","fileURLToPath","__dirname","dirname","import","meta","url","pkg","JSON","parse","readFileSync","resolve","describe","test","result","expect","toEqual","version"],"sources":["../../../src/ops/utils/VersionUtils.test.ts"],"sourcesContent":["import { state } from '../../index';\nimport fs from 'fs';\nimport path from 'path';\nimport { getVersion } from './VersionUtils';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../../../package.json'), 'utf8')\n);\n\ndescribe('index', () => {\n test('get library version', () => {\n const result = getVersion({ state });\n expect(result).toEqual(`${pkg.version}`);\n });\n});\n"],"mappings":"SAASA,KAAK;AACd,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AAAC,SACfC,UAAU;AACnB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CACpBX,EAAE,CAACY,YAAY,CAACX,IAAI,CAACY,OAAO,CAACT,SAAS,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAC1E,CAAC;AAEDU,QAAQ,CAAC,OAAO,EAAE,MAAM;EACtBC,IAAI,CAAC,qBAAqB,EAAE,MAAM;IAChC,MAAMC,MAAM,GAAGd,UAAU,CAAC;MAAEH;IAAM,CAAC,CAAC;IACpCkB,MAAM,CAACD,MAAM,CAAC,CAACE,OAAO,CAAE,GAAET,GAAG,CAACU,OAAQ,EAAC,CAAC;EAC1C,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ const DEFAULT_REALM_KEY = '__default__realm__';
2
+ const CLASSIC_DEPLOYMENT_TYPE_KEY = 'classic';
3
+ const CLOUD_DEPLOYMENT_TYPE_KEY = 'cloud';
4
+ const FORGEOPS_DEPLOYMENT_TYPE_KEY = 'forgeops';
5
+ const DEPLOYMENT_TYPES = [CLASSIC_DEPLOYMENT_TYPE_KEY, CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY];
6
+ const DEPLOYMENT_TYPE_REALM_MAP = {
7
+ [CLASSIC_DEPLOYMENT_TYPE_KEY]: '/',
8
+ [CLOUD_DEPLOYMENT_TYPE_KEY]: 'alpha',
9
+ [FORGEOPS_DEPLOYMENT_TYPE_KEY]: '/'
10
+ };
11
+ const FRODO_METADATA_ID = 'frodo';
12
+ const FRODO_CONNECTION_PROFILES_PATH_KEY = 'FRODO_CONNECTION_PROFILES_PATH';
13
+ const FRODO_MASTER_KEY_PATH_KEY = 'FRODO_MASTER_KEY_PATH';
14
+ const FRODO_MASTER_KEY_KEY = 'FRODO_MASTER_KEY';
15
+ export default {
16
+ DEFAULT_REALM_KEY,
17
+ CLASSIC_DEPLOYMENT_TYPE_KEY,
18
+ CLOUD_DEPLOYMENT_TYPE_KEY,
19
+ FORGEOPS_DEPLOYMENT_TYPE_KEY,
20
+ DEPLOYMENT_TYPES,
21
+ DEPLOYMENT_TYPE_REALM_MAP,
22
+ FRODO_METADATA_ID,
23
+ FRODO_CONNECTION_PROFILES_PATH_KEY,
24
+ FRODO_MASTER_KEY_PATH_KEY,
25
+ FRODO_MASTER_KEY_KEY
26
+ };
27
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","names":["DEFAULT_REALM_KEY","CLASSIC_DEPLOYMENT_TYPE_KEY","CLOUD_DEPLOYMENT_TYPE_KEY","FORGEOPS_DEPLOYMENT_TYPE_KEY","DEPLOYMENT_TYPES","DEPLOYMENT_TYPE_REALM_MAP","FRODO_METADATA_ID","FRODO_CONNECTION_PROFILES_PATH_KEY","FRODO_MASTER_KEY_PATH_KEY","FRODO_MASTER_KEY_KEY"],"sources":["../../src/shared/Constants.ts"],"sourcesContent":["export type Constants = {\n DEFAULT_REALM_KEY: string;\n CLASSIC_DEPLOYMENT_TYPE_KEY: string;\n CLOUD_DEPLOYMENT_TYPE_KEY: string;\n FORGEOPS_DEPLOYMENT_TYPE_KEY: string;\n DEPLOYMENT_TYPES: string[];\n DEPLOYMENT_TYPE_REALM_MAP: {\n classic: string;\n cloud: string;\n forgeops: string;\n };\n FRODO_METADATA_ID: string;\n FRODO_CONNECTION_PROFILES_PATH_KEY: string;\n FRODO_MASTER_KEY_PATH_KEY: string;\n FRODO_MASTER_KEY_KEY: string;\n};\nconst DEFAULT_REALM_KEY = '__default__realm__';\nconst CLASSIC_DEPLOYMENT_TYPE_KEY = 'classic';\nconst CLOUD_DEPLOYMENT_TYPE_KEY = 'cloud';\nconst FORGEOPS_DEPLOYMENT_TYPE_KEY = 'forgeops';\nconst DEPLOYMENT_TYPES = [\n CLASSIC_DEPLOYMENT_TYPE_KEY,\n CLOUD_DEPLOYMENT_TYPE_KEY,\n FORGEOPS_DEPLOYMENT_TYPE_KEY,\n];\nconst DEPLOYMENT_TYPE_REALM_MAP = {\n [CLASSIC_DEPLOYMENT_TYPE_KEY]: '/',\n [CLOUD_DEPLOYMENT_TYPE_KEY]: 'alpha',\n [FORGEOPS_DEPLOYMENT_TYPE_KEY]: '/',\n};\nconst FRODO_METADATA_ID = 'frodo';\nconst FRODO_CONNECTION_PROFILES_PATH_KEY = 'FRODO_CONNECTION_PROFILES_PATH';\nconst FRODO_MASTER_KEY_PATH_KEY = 'FRODO_MASTER_KEY_PATH';\nconst FRODO_MASTER_KEY_KEY = 'FRODO_MASTER_KEY';\n\nexport default {\n DEFAULT_REALM_KEY,\n CLASSIC_DEPLOYMENT_TYPE_KEY,\n CLOUD_DEPLOYMENT_TYPE_KEY,\n FORGEOPS_DEPLOYMENT_TYPE_KEY,\n DEPLOYMENT_TYPES,\n DEPLOYMENT_TYPE_REALM_MAP,\n FRODO_METADATA_ID,\n FRODO_CONNECTION_PROFILES_PATH_KEY,\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n};\n"],"mappings":"AAgBA,MAAMA,iBAAiB,GAAG,oBAAoB;AAC9C,MAAMC,2BAA2B,GAAG,SAAS;AAC7C,MAAMC,yBAAyB,GAAG,OAAO;AACzC,MAAMC,4BAA4B,GAAG,UAAU;AAC/C,MAAMC,gBAAgB,GAAG,CACvBH,2BAA2B,EAC3BC,yBAAyB,EACzBC,4BAA4B,CAC7B;AACD,MAAME,yBAAyB,GAAG;EAChC,CAACJ,2BAA2B,GAAG,GAAG;EAClC,CAACC,yBAAyB,GAAG,OAAO;EACpC,CAACC,4BAA4B,GAAG;AAClC,CAAC;AACD,MAAMG,iBAAiB,GAAG,OAAO;AACjC,MAAMC,kCAAkC,GAAG,gCAAgC;AAC3E,MAAMC,yBAAyB,GAAG,uBAAuB;AACzD,MAAMC,oBAAoB,GAAG,kBAAkB;AAE/C,eAAe;EACbT,iBAAiB;EACjBC,2BAA2B;EAC3BC,yBAAyB;EACzBC,4BAA4B;EAC5BC,gBAAgB;EAChBC,yBAAyB;EACzBC,iBAAiB;EACjBC,kCAAkC;EAClCC,yBAAyB;EACzBC;AACF,CAAC"}