@rockcarver/frodo-lib 0.16.2-8 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -1
- package/cjs/api/AgentApi.js +14 -61
- package/cjs/api/AgentApi.js.map +1 -1
- package/cjs/api/AgentApi.test.js.map +1 -1
- package/cjs/api/ApiTypes.js +0 -5
- package/cjs/api/ApiTypes.js.map +1 -1
- package/cjs/api/AuthenticateApi.js +9 -20
- package/cjs/api/AuthenticateApi.js.map +1 -1
- package/cjs/api/AuthenticateApi.test.js.map +1 -0
- package/cjs/api/BaseApi.js +82 -124
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/api/CirclesOfTrustApi.js +8 -32
- package/cjs/api/CirclesOfTrustApi.js.map +1 -1
- package/cjs/api/IdmConfigApi.js +9 -34
- package/cjs/api/IdmConfigApi.js.map +1 -1
- package/cjs/api/LogApi.js +8 -31
- package/cjs/api/LogApi.js.map +1 -1
- package/cjs/api/ManagedObjectApi.js +34 -31
- package/cjs/api/ManagedObjectApi.js.map +1 -1
- package/cjs/api/NodeApi.js +10 -41
- package/cjs/api/NodeApi.js.map +1 -1
- package/cjs/api/NodeApi.test.js.map +1 -1
- package/cjs/api/OAuth2ClientApi.js +7 -26
- package/cjs/api/OAuth2ClientApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.js +28 -34
- package/cjs/api/OAuth2OIDCApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.test.js.map +1 -0
- package/cjs/api/OAuth2ProviderApi.js +5 -15
- package/cjs/api/OAuth2ProviderApi.js.map +1 -1
- package/cjs/api/RealmApi.js +8 -34
- package/cjs/api/RealmApi.js.map +1 -1
- package/cjs/api/Saml2Api.js +32 -118
- package/cjs/api/Saml2Api.js.map +1 -1
- package/cjs/api/ScriptApi.js +8 -30
- package/cjs/api/ScriptApi.js.map +1 -1
- package/cjs/api/SecretsApi.js +14 -64
- package/cjs/api/SecretsApi.js.map +1 -1
- package/cjs/api/SecretsApi.test.js.map +1 -1
- package/cjs/api/ServerInfoApi.js +6 -21
- package/cjs/api/ServerInfoApi.js.map +1 -1
- package/cjs/api/ServiceApi.js +49 -47
- package/cjs/api/ServiceApi.js.map +1 -1
- package/cjs/api/SocialIdentityProvidersApi.js +9 -36
- package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
- package/cjs/api/StartupApi.js +5 -24
- package/cjs/api/StartupApi.js.map +1 -1
- package/cjs/api/StartupApi.test.js.map +1 -1
- package/cjs/api/TreeApi.js +8 -30
- package/cjs/api/TreeApi.js.map +1 -1
- package/cjs/api/TreeApi.test.js.map +1 -1
- package/cjs/api/VariablesApi.js +9 -37
- package/cjs/api/VariablesApi.js.map +1 -1
- package/cjs/api/VariablesApi.test.js.map +1 -1
- package/cjs/api/utils/ApiUtils.js +47 -57
- package/cjs/api/utils/ApiUtils.js.map +1 -1
- package/cjs/api/utils/ApiUtils.test.js.map +1 -1
- package/cjs/api/utils/Base64.js +6 -15
- package/cjs/api/utils/Base64.js.map +1 -1
- package/cjs/ext/axios-curlirize/curlirize.js +2 -9
- package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
- package/cjs/ext/axios-curlirize/lib/CurlHelper.js +7 -22
- package/cjs/ext/axios-curlirize/lib/CurlHelper.js.map +1 -1
- package/cjs/index.js +30 -89
- package/cjs/index.js.map +1 -1
- package/cjs/ops/AdminOps.js +27 -165
- package/cjs/ops/AdminOps.js.map +1 -1
- package/cjs/ops/AgentOps.js +3 -160
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/AgentOps.test.js.map +1 -1
- package/cjs/ops/AuthenticateOps.js +265 -226
- package/cjs/ops/AuthenticateOps.js.map +1 -1
- package/cjs/ops/AuthenticateOps.test.js.map +1 -1
- package/cjs/ops/CirclesOfTrustOps.js +13 -91
- package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.js +220 -136
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +35 -379
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
- package/cjs/ops/IdmOps.js +52 -426
- package/cjs/ops/IdmOps.js.map +1 -1
- package/cjs/ops/IdmOps.test.js.map +1 -1
- package/cjs/ops/IdpOps.js +11 -94
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/IdpOps.test.js.map +1 -1
- package/cjs/ops/JoseOps.js +81 -0
- package/cjs/ops/JoseOps.js.map +1 -0
- package/cjs/ops/JoseOps.test.js.map +1 -0
- package/cjs/ops/JourneyOps.js +140 -371
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/JourneyOps.test.js.map +1 -1
- package/cjs/ops/LogOps.js +14 -47
- package/cjs/ops/LogOps.js.map +1 -1
- package/cjs/ops/ManagedObjectOps.js +4 -12
- package/cjs/ops/ManagedObjectOps.js.map +1 -1
- package/cjs/ops/NodeOps.js +9 -67
- package/cjs/ops/NodeOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.js +10 -40
- package/cjs/ops/OAuth2ClientOps.js.map +1 -1
- package/cjs/ops/OpsTypes.js +0 -5
- package/cjs/ops/OpsTypes.js.map +1 -1
- package/cjs/ops/OrganizationOps.js +6 -25
- package/cjs/ops/OrganizationOps.js.map +1 -1
- package/cjs/ops/RealmOps.js +0 -19
- package/cjs/ops/RealmOps.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +258 -802
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ScriptOps.js +28 -73
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/SecretsOps.js +2 -58
- package/cjs/ops/SecretsOps.js.map +1 -1
- package/cjs/ops/ServiceAccountOps.js +61 -0
- package/cjs/ops/ServiceAccountOps.js.map +1 -0
- package/cjs/ops/ServiceAccountOps.test.js.map +1 -0
- package/cjs/ops/ServiceOps.js +55 -101
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/StartupOps.js +2 -23
- package/cjs/ops/StartupOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +230 -436
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/ThemeOps.test.js.map +1 -0
- package/cjs/ops/VariablesOps.js +0 -38
- package/cjs/ops/VariablesOps.js.map +1 -1
- package/cjs/ops/utils/Console.js +29 -62
- package/cjs/ops/utils/Console.js.map +1 -1
- package/cjs/ops/utils/DataProtection.js +13 -47
- package/cjs/ops/utils/DataProtection.js.map +1 -1
- package/cjs/ops/utils/DataProtection.test.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +36 -74
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.js +27 -43
- package/cjs/ops/utils/OpsUtils.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.js +0 -13
- package/cjs/ops/utils/ValidationUtils.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
- package/cjs/ops/utils/Version.js +2 -12
- package/cjs/ops/utils/Version.js.map +1 -1
- package/cjs/ops/utils/Version.test.js.map +1 -1
- package/cjs/ops/utils/Wordwrap.js +1 -2
- package/cjs/ops/utils/Wordwrap.js.map +1 -1
- package/cjs/ops/utils/Wordwrap.test.js.map +1 -0
- package/cjs/shared/State.js +239 -0
- package/cjs/shared/State.js.map +1 -0
- package/cjs/shared/State.test.js.map +1 -0
- package/cjs/storage/StaticStorage.js.map +1 -1
- package/cjs/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
- package/cjs/test/mocks/ForgeRockApiMockEngine.js +184 -80
- package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
- package/cjs/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
- package/cjs/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
- package/cjs/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
- package/cjs/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
- package/cjs/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
- package/cjs/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
- package/cjs/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
- package/cjs/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
- package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
- package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
- package/cjs/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
- package/cjs/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
- package/cjs/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
- package/cjs/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
- package/cjs/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
- package/cjs/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
- package/cjs/utils/AutoSetupPolly.js +79 -0
- package/cjs/utils/AutoSetupPolly.js.map +1 -0
- package/cjs/utils/SetupJest.js +6 -0
- package/cjs/utils/SetupJest.js.map +1 -0
- package/cjs/{test/mocks → utils}/snapshotResolve.js +10 -12
- package/cjs/utils/snapshotResolve.js.map +1 -0
- package/esm/api/AgentApi.mjs +19 -21
- package/esm/api/AgentApi.test.mjs +6 -15
- package/esm/api/ApiTypes.mjs +0 -5
- package/esm/api/AuthenticateApi.mjs +7 -10
- package/esm/api/AuthenticateApi.test.mjs +39 -0
- package/esm/api/BaseApi.mjs +96 -81
- package/esm/api/CirclesOfTrustApi.mjs +9 -12
- package/esm/api/IdmConfigApi.mjs +11 -12
- package/esm/api/LogApi.mjs +6 -10
- package/esm/api/ManagedObjectApi.mjs +23 -8
- package/esm/api/NodeApi.mjs +13 -15
- package/esm/api/NodeApi.test.mjs +13 -17
- package/esm/api/OAuth2ClientApi.mjs +7 -9
- package/esm/api/OAuth2OIDCApi.mjs +15 -9
- package/esm/api/OAuth2OIDCApi.test.mjs +53 -0
- package/esm/api/OAuth2ProviderApi.mjs +3 -5
- package/esm/api/RealmApi.mjs +10 -13
- package/esm/api/Saml2Api.mjs +31 -61
- package/esm/api/ScriptApi.mjs +9 -11
- package/esm/api/SecretsApi.mjs +21 -24
- package/esm/api/SecretsApi.test.mjs +9 -31
- package/esm/api/ServerInfoApi.mjs +5 -9
- package/esm/api/ServiceApi.mjs +53 -26
- package/esm/api/SocialIdentityProvidersApi.mjs +11 -13
- package/esm/api/StartupApi.mjs +5 -10
- package/esm/api/StartupApi.test.mjs +4 -7
- package/esm/api/TreeApi.mjs +9 -11
- package/esm/api/TreeApi.test.mjs +24 -61
- package/esm/api/VariablesApi.mjs +11 -13
- package/esm/api/VariablesApi.test.mjs +80 -222
- package/esm/api/utils/ApiUtils.mjs +45 -48
- package/esm/api/utils/ApiUtils.test.mjs +33 -32
- package/esm/api/utils/Base64.mjs +6 -9
- package/esm/ext/axios-curlirize/curlirize.mjs +2 -7
- package/esm/ext/axios-curlirize/lib/CurlHelper.mjs +7 -20
- package/esm/index.mjs +23 -13
- package/esm/ops/AdminOps.mjs +33 -119
- package/esm/ops/AgentOps.mjs +38 -81
- package/esm/ops/AgentOps.test.mjs +5 -45
- package/esm/ops/AuthenticateOps.mjs +241 -175
- package/esm/ops/AuthenticateOps.test.mjs +7 -9
- package/esm/ops/CirclesOfTrustOps.mjs +24 -61
- package/esm/ops/ConnectionProfileOps.mjs +192 -82
- package/esm/ops/ConnectionProfileOps.test.mjs +19 -19
- package/esm/ops/EmailTemplateOps.mjs +18 -276
- package/esm/ops/EmailTemplateOps.test.mjs +19 -44
- package/esm/ops/IdmOps.mjs +30 -327
- package/esm/ops/IdmOps.test.mjs +47 -54
- package/esm/ops/IdpOps.mjs +21 -59
- package/esm/ops/IdpOps.test.mjs +5 -5
- package/esm/ops/JoseOps.mjs +41 -0
- package/esm/ops/JoseOps.test.mjs +137 -0
- package/esm/ops/JourneyOps.mjs +147 -290
- package/esm/ops/JourneyOps.test.mjs +30 -28
- package/esm/ops/LogOps.mjs +15 -25
- package/esm/ops/ManagedObjectOps.mjs +6 -6
- package/esm/ops/NodeOps.mjs +9 -47
- package/esm/ops/OAuth2ClientOps.mjs +13 -19
- package/esm/ops/OpsTypes.mjs +1 -3
- package/esm/ops/OrganizationOps.mjs +7 -14
- package/esm/ops/RealmOps.mjs +4 -7
- package/esm/ops/Saml2Ops.mjs +199 -587
- package/esm/ops/Saml2Ops.test.mjs +303 -84
- package/esm/ops/ScriptOps.mjs +31 -47
- package/esm/ops/SecretsOps.mjs +15 -31
- package/esm/ops/ServiceAccountOps.mjs +41 -0
- package/esm/ops/ServiceAccountOps.test.mjs +51 -0
- package/esm/ops/ServiceOps.mjs +66 -83
- package/esm/ops/StartupOps.mjs +4 -13
- package/esm/ops/ThemeOps.mjs +189 -298
- package/esm/{api/ThemeApi.test.mjs → ops/ThemeOps.test.mjs} +91 -96
- package/esm/ops/VariablesOps.mjs +9 -18
- package/esm/ops/utils/Console.mjs +28 -46
- package/esm/ops/utils/DataProtection.mjs +15 -28
- package/esm/ops/utils/DataProtection.test.mjs +8 -8
- package/esm/ops/utils/ExportImportUtils.mjs +34 -43
- package/esm/ops/utils/ExportImportUtils.test.mjs +20 -18
- package/esm/ops/utils/OpsUtils.mjs +27 -21
- package/esm/ops/utils/OpsUtils.test.mjs +155 -27
- package/esm/ops/utils/ValidationUtils.mjs +0 -9
- package/esm/ops/utils/Version.mjs +2 -3
- package/esm/ops/utils/Version.test.mjs +0 -2
- package/esm/ops/utils/Wordwrap.mjs +1 -1
- package/esm/ops/utils/Wordwrap.test.mjs +19 -0
- package/esm/shared/State.mjs +164 -0
- package/esm/shared/State.test.mjs +249 -0
- package/esm/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
- package/esm/test/mocks/ForgeRockApiMockEngine.mjs +169 -33
- package/esm/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
- package/esm/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
- package/esm/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
- package/esm/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
- package/esm/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
- package/esm/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
- package/esm/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
- package/esm/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
- package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
- package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
- package/esm/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
- package/esm/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
- package/esm/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
- package/esm/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
- package/esm/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
- package/esm/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
- package/esm/utils/AutoSetupPolly.mjs +72 -0
- package/esm/utils/SetupJest.mjs +3 -0
- package/esm/{test/mocks → utils}/snapshotResolve.mjs +10 -12
- package/package.json +38 -27
- package/types/api/AgentApi.d.ts.map +1 -1
- package/types/api/ApiTypes.d.ts +19 -15
- package/types/api/ApiTypes.d.ts.map +1 -1
- package/types/api/AuthenticateApi.d.ts +1 -1
- package/types/api/AuthenticateApi.d.ts.map +1 -1
- package/types/api/BaseApi.d.ts +2 -0
- package/types/api/BaseApi.d.ts.map +1 -1
- package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
- package/types/api/IdmConfigApi.d.ts.map +1 -1
- package/types/api/LogApi.d.ts.map +1 -1
- package/types/api/ManagedObjectApi.d.ts +9 -1
- package/types/api/ManagedObjectApi.d.ts.map +1 -1
- package/types/api/NodeApi.d.ts.map +1 -1
- package/types/api/OAuth2ClientApi.d.ts.map +1 -1
- package/types/api/OAuth2OIDCApi.d.ts +4 -2
- package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
- package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
- package/types/api/RealmApi.d.ts.map +1 -1
- package/types/api/Saml2Api.d.ts +7 -13
- package/types/api/Saml2Api.d.ts.map +1 -1
- package/types/api/ScriptApi.d.ts.map +1 -1
- package/types/api/SecretsApi.d.ts.map +1 -1
- package/types/api/ServerInfoApi.d.ts.map +1 -1
- package/types/api/ServiceApi.d.ts +14 -7
- package/types/api/ServiceApi.d.ts.map +1 -1
- package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
- package/types/api/StartupApi.d.ts.map +1 -1
- package/types/api/TreeApi.d.ts.map +1 -1
- package/types/api/VariablesApi.d.ts.map +1 -1
- package/types/api/utils/ApiUtils.d.ts +1 -0
- package/types/api/utils/ApiUtils.d.ts.map +1 -1
- package/types/api/utils/Base64.d.ts +1 -0
- package/types/api/utils/Base64.d.ts.map +1 -1
- package/types/index.d.ts +11 -5
- package/types/index.d.ts.map +1 -1
- package/types/ops/AgentOps.d.ts +1 -1
- package/types/ops/AgentOps.d.ts.map +1 -1
- package/types/ops/AuthenticateOps.d.ts +10 -2
- package/types/ops/AuthenticateOps.d.ts.map +1 -1
- package/types/ops/ConnectionProfileOps.d.ts +49 -21
- package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
- package/types/ops/EmailTemplateOps.d.ts +14 -33
- package/types/ops/EmailTemplateOps.d.ts.map +1 -1
- package/types/ops/IdmOps.d.ts +29 -37
- package/types/ops/IdmOps.d.ts.map +1 -1
- package/types/ops/JoseOps.d.ts +33 -0
- package/types/ops/JoseOps.d.ts.map +1 -0
- package/types/ops/JourneyOps.d.ts.map +1 -1
- package/types/ops/LogOps.d.ts.map +1 -1
- package/types/ops/NodeOps.d.ts.map +1 -1
- package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
- package/types/ops/OpsTypes.d.ts +17 -1
- package/types/ops/OpsTypes.d.ts.map +1 -1
- package/types/ops/OrganizationOps.d.ts.map +1 -1
- package/types/ops/Saml2Ops.d.ts +52 -55
- package/types/ops/Saml2Ops.d.ts.map +1 -1
- package/types/ops/ScriptOps.d.ts.map +1 -1
- package/types/ops/ServiceAccountOps.d.ts +20 -0
- package/types/ops/ServiceAccountOps.d.ts.map +1 -0
- package/types/ops/ServiceOps.d.ts +18 -10
- package/types/ops/ServiceOps.d.ts.map +1 -1
- package/types/ops/ThemeOps.d.ts +35 -50
- package/types/ops/ThemeOps.d.ts.map +1 -1
- package/types/ops/utils/Console.d.ts +1 -1
- package/types/ops/utils/Console.d.ts.map +1 -1
- package/types/ops/utils/DataProtection.d.ts.map +1 -1
- package/types/ops/utils/ExportImportUtils.d.ts +5 -2
- package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
- package/types/ops/utils/OpsUtils.d.ts +6 -0
- package/types/ops/utils/OpsUtils.d.ts.map +1 -1
- package/types/ops/utils/Wordwrap.d.ts.map +1 -1
- package/types/shared/State.d.ts +223 -0
- package/types/shared/State.d.ts.map +1 -0
- package/types/test/mocks/ForgeRockApiMockEngine.d.ts +21 -1
- package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
- package/types/utils/AutoSetupPolly.d.ts +1 -0
- package/types/utils/AutoSetupPolly.d.ts.map +1 -0
- package/types/utils/SetupJest.d.ts +1 -0
- package/types/utils/SetupJest.d.ts.map +1 -0
- package/types/utils/snapshotResolve.d.ts +1 -0
- package/types/utils/snapshotResolve.d.ts.map +1 -0
- package/cjs/api/EmailTemplateApi.js +0 -73
- package/cjs/api/EmailTemplateApi.js.map +0 -1
- package/cjs/api/ThemeApi.js +0 -367
- package/cjs/api/ThemeApi.js.map +0 -1
- package/cjs/api/ThemeApi.test.js.map +0 -1
- package/cjs/storage/SessionStorage.js +0 -91
- package/cjs/storage/SessionStorage.js.map +0 -1
- package/cjs/test/mocks/snapshotResolve.js.map +0 -1
- package/esm/api/EmailTemplateApi.mjs +0 -34
- package/esm/api/ThemeApi.mjs +0 -271
- package/esm/storage/SessionStorage.mjs +0 -79
- package/types/api/EmailTemplateApi.d.ts +0 -22
- package/types/api/EmailTemplateApi.d.ts.map +0 -1
- package/types/api/ThemeApi.d.ts +0 -56
- package/types/api/ThemeApi.d.ts.map +0 -1
- package/types/storage/SessionStorage.d.ts +0 -71
- package/types/storage/SessionStorage.d.ts.map +0 -1
- package/types/test/mocks/snapshotResolve.d.ts +0 -1
- package/types/test/mocks/snapshotResolve.d.ts.map +0 -1
package/esm/ops/SecretsOps.mjs
CHANGED
|
@@ -2,21 +2,19 @@ import { createKeyValueTable, createProgressIndicator, createTable, printMessage
|
|
|
2
2
|
import { createNewVersionOfSecret, deleteSecret, deleteVersionOfSecret, getSecret, getSecrets, getSecretVersions, putSecret, setSecretDescription, setStatusOfVersionOfSecret, VersionOfSecretStatus } from '../api/SecretsApi';
|
|
3
3
|
import wordwrap from './utils/Wordwrap';
|
|
4
4
|
import { resolveUserName } from './ManagedObjectOps';
|
|
5
|
+
|
|
5
6
|
/**
|
|
6
7
|
* List secrets
|
|
7
8
|
* @param {boolean} long Long version, all the fields
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
10
|
export async function listSecrets(long) {
|
|
11
11
|
let secrets = [];
|
|
12
|
-
|
|
13
12
|
try {
|
|
14
13
|
secrets = (await getSecrets()).result;
|
|
15
14
|
} catch (error) {
|
|
16
15
|
printMessage(`${error.message}`, 'error');
|
|
17
16
|
printMessage(error.response.data, 'error');
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
if (long) {
|
|
21
19
|
const table = createTable(['Id'['brightCyan'], {
|
|
22
20
|
hAlign: 'right',
|
|
@@ -26,7 +24,6 @@ export async function listSecrets(long) {
|
|
|
26
24
|
content: 'Loaded\nVersion'['brightCyan']
|
|
27
25
|
}, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified'['brightCyan']]);
|
|
28
26
|
secrets.sort((a, b) => a._id.localeCompare(b._id));
|
|
29
|
-
|
|
30
27
|
for (const secret of secrets) {
|
|
31
28
|
table.push([secret._id, {
|
|
32
29
|
hAlign: 'right',
|
|
@@ -34,10 +31,10 @@ export async function listSecrets(long) {
|
|
|
34
31
|
}, {
|
|
35
32
|
hAlign: 'right',
|
|
36
33
|
content: secret.loadedVersion
|
|
37
|
-
}, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40),
|
|
34
|
+
}, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40),
|
|
35
|
+
// eslint-disable-next-line no-await-in-loop
|
|
38
36
|
await resolveUserName('teammember', secret.lastChangedBy), new Date(secret.lastChangeDate).toLocaleString()]);
|
|
39
37
|
}
|
|
40
|
-
|
|
41
38
|
printMessage(table.toString());
|
|
42
39
|
} else {
|
|
43
40
|
secrets.forEach(secret => {
|
|
@@ -45,6 +42,7 @@ export async function listSecrets(long) {
|
|
|
45
42
|
});
|
|
46
43
|
}
|
|
47
44
|
}
|
|
45
|
+
|
|
48
46
|
/**
|
|
49
47
|
* Create secret
|
|
50
48
|
* @param {String} id secret id
|
|
@@ -53,10 +51,8 @@ export async function listSecrets(long) {
|
|
|
53
51
|
* @param {String} encoding secret encoding
|
|
54
52
|
* @param {boolean} useInPlaceholders use secret in placeholders
|
|
55
53
|
*/
|
|
56
|
-
|
|
57
54
|
export async function createSecret(id, value, description, encoding, useInPlaceholders) {
|
|
58
55
|
createProgressIndicator(undefined, `Creating secret ${id}...`, 'indeterminate');
|
|
59
|
-
|
|
60
56
|
try {
|
|
61
57
|
await putSecret(id, value, description, encoding, useInPlaceholders);
|
|
62
58
|
stopProgressIndicator(`Created secret ${id}`, 'success');
|
|
@@ -64,15 +60,14 @@ export async function createSecret(id, value, description, encoding, useInPlaceh
|
|
|
64
60
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
65
61
|
}
|
|
66
62
|
}
|
|
63
|
+
|
|
67
64
|
/**
|
|
68
65
|
* Set description of secret
|
|
69
66
|
* @param {String} secretId secret id
|
|
70
67
|
* @param {String} description secret description
|
|
71
68
|
*/
|
|
72
|
-
|
|
73
69
|
export async function setDescriptionOfSecret(secretId, description) {
|
|
74
70
|
createProgressIndicator(undefined, `Setting description of secret ${secretId}...`, 'indeterminate');
|
|
75
|
-
|
|
76
71
|
try {
|
|
77
72
|
await setSecretDescription(secretId, description);
|
|
78
73
|
stopProgressIndicator(`Set description of secret ${secretId}`, 'success');
|
|
@@ -80,14 +75,13 @@ export async function setDescriptionOfSecret(secretId, description) {
|
|
|
80
75
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
81
76
|
}
|
|
82
77
|
}
|
|
78
|
+
|
|
83
79
|
/**
|
|
84
80
|
* Delete a secret
|
|
85
81
|
* @param {String} secretId secret id
|
|
86
82
|
*/
|
|
87
|
-
|
|
88
83
|
export async function deleteSecretCmd(secretId) {
|
|
89
84
|
createProgressIndicator(undefined, `Deleting secret ${secretId}...`, 'indeterminate');
|
|
90
|
-
|
|
91
85
|
try {
|
|
92
86
|
await deleteSecret(secretId);
|
|
93
87
|
stopProgressIndicator(`Deleted secret ${secretId}`, 'success');
|
|
@@ -95,15 +89,14 @@ export async function deleteSecretCmd(secretId) {
|
|
|
95
89
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
96
90
|
}
|
|
97
91
|
}
|
|
92
|
+
|
|
98
93
|
/**
|
|
99
94
|
* Delete all secrets
|
|
100
95
|
*/
|
|
101
|
-
|
|
102
96
|
export async function deleteSecretsCmd() {
|
|
103
97
|
try {
|
|
104
98
|
const secrets = (await getSecrets()).result;
|
|
105
99
|
createProgressIndicator(secrets.length, `Deleting secrets...`);
|
|
106
|
-
|
|
107
100
|
for (const secret of secrets) {
|
|
108
101
|
try {
|
|
109
102
|
// eslint-disable-next-line no-await-in-loop
|
|
@@ -113,52 +106,47 @@ export async function deleteSecretsCmd() {
|
|
|
113
106
|
printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
|
|
114
107
|
}
|
|
115
108
|
}
|
|
116
|
-
|
|
117
109
|
stopProgressIndicator(`Secrets deleted.`);
|
|
118
110
|
} catch (error) {
|
|
119
111
|
printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
|
|
120
112
|
}
|
|
121
113
|
}
|
|
114
|
+
|
|
122
115
|
/**
|
|
123
116
|
* List all the versions of the secret
|
|
124
117
|
* @param {String} secretId secret id
|
|
125
118
|
*/
|
|
126
|
-
|
|
127
119
|
export async function listSecretVersionsCmd(secretId) {
|
|
128
120
|
let versions = [];
|
|
129
|
-
|
|
130
121
|
try {
|
|
131
122
|
versions = await getSecretVersions(secretId);
|
|
132
123
|
} catch (error) {
|
|
133
124
|
printMessage(`${error.message}`, 'error');
|
|
134
125
|
printMessage(error.response.data, 'error');
|
|
135
126
|
}
|
|
136
|
-
|
|
137
127
|
const table = createTable([{
|
|
138
128
|
hAlign: 'right',
|
|
139
129
|
content: 'Version'['brightCyan']
|
|
140
|
-
}, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
|
|
141
|
-
|
|
130
|
+
}, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
|
|
131
|
+
// versions.sort((a, b) => a._id.localeCompare(b._id));
|
|
142
132
|
const statusMap = {
|
|
143
133
|
ENABLED: 'active'['brightGreen'],
|
|
144
134
|
DISABLED: 'inactive'['brightRed'],
|
|
145
135
|
DESTROYED: 'deleted'['brightRed']
|
|
146
136
|
};
|
|
147
|
-
|
|
148
137
|
for (const version of versions) {
|
|
149
138
|
table.push([{
|
|
150
139
|
hAlign: 'right',
|
|
151
140
|
content: version.version
|
|
152
141
|
}, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
|
|
153
142
|
}
|
|
154
|
-
|
|
155
143
|
printMessage(table.toString());
|
|
156
144
|
}
|
|
145
|
+
|
|
157
146
|
/**
|
|
158
147
|
* Describe a secret
|
|
159
148
|
* @param {String} secretId Secret id
|
|
160
149
|
*/
|
|
161
|
-
|
|
162
150
|
export async function describeSecret(secretId) {
|
|
163
151
|
const secret = await getSecret(secretId);
|
|
164
152
|
const table = createKeyValueTable();
|
|
@@ -176,15 +164,14 @@ export async function describeSecret(secretId) {
|
|
|
176
164
|
printMessage('\nSecret Versions:');
|
|
177
165
|
await listSecretVersionsCmd(secretId);
|
|
178
166
|
}
|
|
167
|
+
|
|
179
168
|
/**
|
|
180
169
|
* Create new version of secret
|
|
181
170
|
* @param {String} secretId secret id
|
|
182
171
|
* @param {String} value secret value
|
|
183
172
|
*/
|
|
184
|
-
|
|
185
173
|
export async function createNewVersionOfSecretCmd(secretId, value) {
|
|
186
174
|
createProgressIndicator(undefined, `Creating new version of secret ${secretId}...`, 'indeterminate');
|
|
187
|
-
|
|
188
175
|
try {
|
|
189
176
|
const version = await createNewVersionOfSecret(secretId, value);
|
|
190
177
|
stopProgressIndicator(`Created version ${version.version} of secret ${secretId}`, 'success');
|
|
@@ -192,15 +179,14 @@ export async function createNewVersionOfSecretCmd(secretId, value) {
|
|
|
192
179
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
193
180
|
}
|
|
194
181
|
}
|
|
182
|
+
|
|
195
183
|
/**
|
|
196
184
|
* Activate a version of a secret
|
|
197
185
|
* @param {String} secretId secret id
|
|
198
186
|
* @param {Number} version version of secret
|
|
199
187
|
*/
|
|
200
|
-
|
|
201
188
|
export async function activateVersionOfSecret(secretId, version) {
|
|
202
189
|
createProgressIndicator(undefined, `Activating version ${version} of secret ${secretId}...`, 'indeterminate');
|
|
203
|
-
|
|
204
190
|
try {
|
|
205
191
|
await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.ENABLED);
|
|
206
192
|
stopProgressIndicator(`Activated version ${version} of secret ${secretId}`, 'success');
|
|
@@ -208,15 +194,14 @@ export async function activateVersionOfSecret(secretId, version) {
|
|
|
208
194
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
209
195
|
}
|
|
210
196
|
}
|
|
197
|
+
|
|
211
198
|
/**
|
|
212
199
|
* Deactivate a version of a secret
|
|
213
200
|
* @param {String} secretId secret id
|
|
214
201
|
* @param {Number} version version of secret
|
|
215
202
|
*/
|
|
216
|
-
|
|
217
203
|
export async function deactivateVersionOfSecret(secretId, version) {
|
|
218
204
|
createProgressIndicator(undefined, `Deactivating version ${version} of secret ${secretId}...`, 'indeterminate');
|
|
219
|
-
|
|
220
205
|
try {
|
|
221
206
|
await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.DISABLED);
|
|
222
207
|
stopProgressIndicator(`Deactivated version ${version} of secret ${secretId}`, 'success');
|
|
@@ -224,15 +209,14 @@ export async function deactivateVersionOfSecret(secretId, version) {
|
|
|
224
209
|
stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
|
|
225
210
|
}
|
|
226
211
|
}
|
|
212
|
+
|
|
227
213
|
/**
|
|
228
214
|
* Delete version of secret
|
|
229
215
|
* @param {String} secretId secret id
|
|
230
216
|
* @param {Number} version version of secret
|
|
231
217
|
*/
|
|
232
|
-
|
|
233
218
|
export async function deleteVersionOfSecretCmd(secretId, version) {
|
|
234
219
|
createProgressIndicator(undefined, `Deleting version ${version} of secret ${secretId}...`, 'indeterminate');
|
|
235
|
-
|
|
236
220
|
try {
|
|
237
221
|
await deleteVersionOfSecret(secretId, version);
|
|
238
222
|
stopProgressIndicator(`Deleted version ${version} of secret ${secretId}`, 'success');
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createManagedObject } from '../api/ManagedObjectApi';
|
|
2
|
+
import { debugMessage } from './utils/Console';
|
|
3
|
+
import { getConfigEntity } from './IdmOps';
|
|
4
|
+
const moType = 'svcacct';
|
|
5
|
+
let serviceAccountsFeatureAvailable = undefined;
|
|
6
|
+
export async function isServiceAccountsFeatureAvailable() {
|
|
7
|
+
debugMessage(`ServiceAccountOps.isServiceAccountsFeatureAvailable: start`);
|
|
8
|
+
// only look up the schema once
|
|
9
|
+
if (typeof serviceAccountsFeatureAvailable !== 'undefined') return serviceAccountsFeatureAvailable;
|
|
10
|
+
serviceAccountsFeatureAvailable = false;
|
|
11
|
+
const schema = await getConfigEntity('managed');
|
|
12
|
+
for (const object of schema['objects']) {
|
|
13
|
+
if (object['name'] === 'svcacct') serviceAccountsFeatureAvailable = true;
|
|
14
|
+
}
|
|
15
|
+
debugMessage(`ServiceAccountOps.isServiceAccountsFeatureAvailable: end, available=${serviceAccountsFeatureAvailable}`);
|
|
16
|
+
return serviceAccountsFeatureAvailable;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Create service account
|
|
21
|
+
* @param {string} name Human-readable name of service account
|
|
22
|
+
* @param {string} description Description of service account
|
|
23
|
+
* @param {'Active' | 'Inactive'} accountStatus Service account status
|
|
24
|
+
* @param {string[]} scopes Scopes.
|
|
25
|
+
* @param {JwksInterface} jwks Java Web Key Set
|
|
26
|
+
* @returns {Promise<ObjectSkeletonInterface>} A promise resolving to a service account object
|
|
27
|
+
*/
|
|
28
|
+
export async function createServiceAccount(name, description, accountStatus, scopes, jwks) {
|
|
29
|
+
const payload = {
|
|
30
|
+
name,
|
|
31
|
+
description,
|
|
32
|
+
accountStatus,
|
|
33
|
+
scopes,
|
|
34
|
+
jwks: JSON.stringify(jwks)
|
|
35
|
+
};
|
|
36
|
+
debugMessage(`SvcacctOps: createSvcacct: payload:`);
|
|
37
|
+
debugMessage(payload);
|
|
38
|
+
const result = await createManagedObject(moType, payload);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ServiceAccountOps.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import MockAdapter from 'axios-mock-adapter';
|
|
3
|
+
import { state } from '../index';
|
|
4
|
+
import * as globalConfig from '../storage/StaticStorage';
|
|
5
|
+
import { createJwkRsa, createJwks, getJwkRsaPublic } from './JoseOps';
|
|
6
|
+
import * as ServiceAccount from './ServiceAccountOps';
|
|
7
|
+
import { mockCreateManagedObject } from '../test/mocks/ForgeRockApiMockEngine';
|
|
8
|
+
import { isEqualJson } from './utils/OpsUtils';
|
|
9
|
+
const mock = new MockAdapter(axios);
|
|
10
|
+
const outputHandler = message => {
|
|
11
|
+
console.log(message);
|
|
12
|
+
};
|
|
13
|
+
state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
|
|
14
|
+
state.setRealm('alpha');
|
|
15
|
+
state.setCookieName('cookieName');
|
|
16
|
+
state.setCookieValue('cookieValue');
|
|
17
|
+
state.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);
|
|
18
|
+
state.setDebug(true);
|
|
19
|
+
state.setDebugHandler(outputHandler);
|
|
20
|
+
state.setPrintHandler(outputHandler);
|
|
21
|
+
state.setCurlirize(true);
|
|
22
|
+
state.setCurlirizeHandler(outputHandler);
|
|
23
|
+
describe('SvcacctOps - createSvcacct()', () => {
|
|
24
|
+
test('createSvcacct() 0: Method is implemented', async () => {
|
|
25
|
+
expect(ServiceAccount.createServiceAccount).toBeDefined();
|
|
26
|
+
});
|
|
27
|
+
test('createSvcacct() 1: Create service account', async () => {
|
|
28
|
+
let moId = null;
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
+
let moData = null;
|
|
31
|
+
const name = 'sa';
|
|
32
|
+
const description = 'service account';
|
|
33
|
+
const accountStatus = 'Active';
|
|
34
|
+
const scopes = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];
|
|
35
|
+
const jwk = await createJwkRsa();
|
|
36
|
+
const publicJwk = await getJwkRsaPublic(jwk);
|
|
37
|
+
const jwks = await createJwks(publicJwk);
|
|
38
|
+
mockCreateManagedObject(mock, (mockManagedObjId, mockManagedObj) => {
|
|
39
|
+
moId = mockManagedObjId;
|
|
40
|
+
moData = mockManagedObj;
|
|
41
|
+
});
|
|
42
|
+
const payload = await ServiceAccount.createServiceAccount(name, description, accountStatus, scopes, jwks);
|
|
43
|
+
expect(isEqualJson(payload, moData)).toBeTruthy();
|
|
44
|
+
expect(payload).toBeTruthy();
|
|
45
|
+
expect(payload._id).toBe(moId);
|
|
46
|
+
expect(payload.name).toBe(name);
|
|
47
|
+
expect(payload.description).toBe(description);
|
|
48
|
+
expect(payload.scopes).toStrictEqual(scopes);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=ServiceAccountOps.test.js.map
|
package/esm/ops/ServiceOps.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { deleteService, deleteServiceNextDescendent, getService, getListOfServices as _getListOfServices, getServiceDescendents, putService, putServiceNextDescendent } from '../api/ServiceApi';
|
|
2
2
|
import { debugMessage, printMessage } from './utils/Console';
|
|
3
|
-
|
|
4
3
|
/**
|
|
5
4
|
* Create an empty service export template
|
|
6
5
|
* @returns {SingleTreeExportInterface} an empty service export template
|
|
@@ -11,36 +10,37 @@ export function createServiceExportTemplate() {
|
|
|
11
10
|
service: {}
|
|
12
11
|
};
|
|
13
12
|
}
|
|
13
|
+
|
|
14
14
|
/**
|
|
15
15
|
* Get list of services
|
|
16
|
+
* @param {boolean} globalConfig true if the list of global services is requested, false otherwise. Default: false.
|
|
16
17
|
*/
|
|
17
|
-
|
|
18
|
-
export async function getListOfServices() {
|
|
18
|
+
export async function getListOfServices(globalConfig = false) {
|
|
19
19
|
debugMessage(`ServiceOps.getListOfServices: start`);
|
|
20
|
-
const services = (await _getListOfServices()).result;
|
|
20
|
+
const services = (await _getListOfServices(globalConfig)).result;
|
|
21
21
|
debugMessage(`ServiceOps.getListOfServices: end`);
|
|
22
22
|
return services;
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
/**
|
|
25
26
|
* Get all services including their descendents.
|
|
27
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
26
28
|
* @returns Promise resolving to an array of services with their descendants
|
|
27
29
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const serviceList = (await _getListOfServices()).result;
|
|
30
|
+
export async function getFullServices(globalConfig = false) {
|
|
31
|
+
debugMessage(`ServiceOps.getFullServices: start, globalConfig=${globalConfig}`);
|
|
32
|
+
const serviceList = (await _getListOfServices(globalConfig)).result;
|
|
32
33
|
const fullServiceData = await Promise.all(serviceList.map(async listItem => {
|
|
33
34
|
try {
|
|
34
|
-
const [service, nextDescendents] = await Promise.all([getService(listItem._id), getServiceDescendents(listItem._id)]);
|
|
35
|
-
return {
|
|
35
|
+
const [service, nextDescendents] = await Promise.all([getService(listItem._id, globalConfig), getServiceDescendents(listItem._id, globalConfig)]);
|
|
36
|
+
return {
|
|
37
|
+
...service,
|
|
36
38
|
nextDescendents
|
|
37
39
|
};
|
|
38
40
|
} catch (error) {
|
|
39
41
|
var _error$response, _error$response2, _error$response2$data;
|
|
40
|
-
|
|
41
42
|
if (!(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 403 && ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) === 'This operation is not available in ForgeRock Identity Cloud.')) {
|
|
42
43
|
var _error$response3, _error$response3$data;
|
|
43
|
-
|
|
44
44
|
const message = (_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : (_error$response3$data = _error$response3.data) === null || _error$response3$data === void 0 ? void 0 : _error$response3$data.message;
|
|
45
45
|
printMessage(`Unable to retrieve data for ${listItem._id} with error: ${message}`, 'error');
|
|
46
46
|
}
|
|
@@ -49,126 +49,118 @@ export async function getFullServices() {
|
|
|
49
49
|
debugMessage(`ServiceOps.getFullServices: end`);
|
|
50
50
|
return fullServiceData.filter(data => !!data); // make sure to filter out any undefined objects
|
|
51
51
|
}
|
|
52
|
+
|
|
52
53
|
/**
|
|
53
54
|
* Saves a service using the provide id and data, including descendents
|
|
54
55
|
* @param {string} serviceId the service id / name
|
|
55
56
|
* @param {string} fullServiceData service object including descendants
|
|
57
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
56
58
|
* @returns promise resolving to a service object
|
|
57
59
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
debugMessage(`ServiceOps.putFullService: start, serviceId=${serviceId}`);
|
|
60
|
+
async function putFullService(serviceId, fullServiceData, clean, globalConfig = false) {
|
|
61
|
+
debugMessage(`ServiceOps.putFullService: start, serviceId=${serviceId}, globalConfig=${globalConfig}`);
|
|
61
62
|
const nextDescendents = fullServiceData.nextDescendents;
|
|
62
63
|
delete fullServiceData.nextDescendents;
|
|
63
64
|
delete fullServiceData._rev;
|
|
64
65
|
delete fullServiceData.enabled;
|
|
65
|
-
|
|
66
66
|
if (clean) {
|
|
67
67
|
try {
|
|
68
68
|
debugMessage(`ServiceOps.putFullService: clean`);
|
|
69
|
-
await deleteFullService(serviceId);
|
|
69
|
+
await deleteFullService(serviceId, globalConfig);
|
|
70
70
|
} catch (error) {
|
|
71
71
|
var _error$response4, _error$response5, _error$response5$data;
|
|
72
|
-
|
|
73
72
|
if (!(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404 && ((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.message) === 'Not Found')) {
|
|
74
73
|
var _error$response6, _error$response6$data;
|
|
75
|
-
|
|
76
74
|
const message = (_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.message;
|
|
77
75
|
printMessage(`Error deleting service '${serviceId}' before import: ${message}`, 'error');
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
|
-
}
|
|
81
|
-
|
|
78
|
+
}
|
|
82
79
|
|
|
83
|
-
|
|
80
|
+
// create service first
|
|
81
|
+
const result = await putService(serviceId, fullServiceData, globalConfig);
|
|
84
82
|
|
|
83
|
+
// return fast if no next descendents supplied
|
|
85
84
|
if (nextDescendents.length === 0) {
|
|
86
85
|
debugMessage(`ServiceOps.putFullService: end (w/o descendents)`);
|
|
87
86
|
return result;
|
|
88
|
-
}
|
|
89
|
-
|
|
87
|
+
}
|
|
90
88
|
|
|
89
|
+
// now create next descendents
|
|
91
90
|
await Promise.all(nextDescendents.map(async descendent => {
|
|
92
91
|
const type = descendent._type._id;
|
|
93
92
|
const descendentId = descendent._id;
|
|
94
93
|
debugMessage(`ServiceOps.putFullService: descendentId=${descendentId}`);
|
|
95
94
|
let result = undefined;
|
|
96
|
-
|
|
97
95
|
try {
|
|
98
|
-
result = await putServiceNextDescendent(serviceId, type, descendentId, descendent);
|
|
96
|
+
result = await putServiceNextDescendent(serviceId, type, descendentId, descendent, globalConfig);
|
|
99
97
|
} catch (error) {
|
|
100
98
|
var _error$response7, _error$response7$data;
|
|
101
|
-
|
|
102
99
|
const message = (_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : (_error$response7$data = _error$response7.data) === null || _error$response7$data === void 0 ? void 0 : _error$response7$data.message;
|
|
103
100
|
printMessage(`Put descendent '${descendentId}' of service '${serviceId}': ${message}`, 'error');
|
|
104
101
|
}
|
|
105
|
-
|
|
106
102
|
return result;
|
|
107
103
|
}));
|
|
108
104
|
debugMessage(`ServiceOps.putFullService: end (w/ descendents)`);
|
|
109
105
|
}
|
|
106
|
+
|
|
110
107
|
/**
|
|
111
108
|
* Saves multiple services using the serviceEntries which contain both id and data with descendants
|
|
112
109
|
* @param {[string, FullService][]} serviceEntries The services to add
|
|
113
110
|
* @param {boolean} clean Indicates whether to remove possible existing services first
|
|
111
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
114
112
|
* @returns {Promise<AmService[]>} promise resolving to an array of service objects
|
|
115
113
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
async function putFullServices(serviceEntries, clean) {
|
|
119
|
-
debugMessage(`ServiceOps.putFullServices: start`);
|
|
114
|
+
async function putFullServices(serviceEntries, clean, globalConfig = false) {
|
|
115
|
+
debugMessage(`ServiceOps.putFullServices: start, globalConfig=${globalConfig}`);
|
|
120
116
|
const results = [];
|
|
121
|
-
|
|
122
117
|
for (const [id, data] of serviceEntries) {
|
|
123
118
|
try {
|
|
124
|
-
const result = await putFullService(id, data, clean);
|
|
119
|
+
const result = await putFullService(id, data, clean, globalConfig);
|
|
125
120
|
results.push(result);
|
|
126
121
|
printMessage(`Imported: ${id}`, 'info');
|
|
127
122
|
} catch (error) {
|
|
128
123
|
var _error$response8, _error$response8$data, _error$response9, _error$response9$data;
|
|
129
|
-
|
|
130
124
|
const message = (_error$response8 = error.response) === null || _error$response8 === void 0 ? void 0 : (_error$response8$data = _error$response8.data) === null || _error$response8$data === void 0 ? void 0 : _error$response8$data.message;
|
|
131
125
|
const detail = (_error$response9 = error.response) === null || _error$response9 === void 0 ? void 0 : (_error$response9$data = _error$response9.data) === null || _error$response9$data === void 0 ? void 0 : _error$response9$data.detail;
|
|
132
126
|
printMessage(`Import service '${id}': ${message}`, 'error');
|
|
133
|
-
|
|
134
127
|
if (detail) {
|
|
135
128
|
printMessage(`Details: ${JSON.stringify(detail)}`, 'error');
|
|
136
129
|
}
|
|
137
130
|
}
|
|
138
131
|
}
|
|
139
|
-
|
|
140
132
|
debugMessage(`ServiceOps.putFullServices: end`);
|
|
141
133
|
return results;
|
|
142
134
|
}
|
|
135
|
+
|
|
143
136
|
/**
|
|
144
137
|
* Deletes the specified service
|
|
145
138
|
* @param {string} serviceId The service to delete
|
|
139
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
146
140
|
*/
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
await
|
|
152
|
-
|
|
141
|
+
export async function deleteFullService(serviceId, globalConfig = false) {
|
|
142
|
+
debugMessage(`ServiceOps.deleteFullService: start, globalConfig=${globalConfig}`);
|
|
143
|
+
const serviceNextDescendentData = await getServiceDescendents(serviceId, globalConfig);
|
|
144
|
+
await Promise.all(serviceNextDescendentData.map(nextDescendent => deleteServiceNextDescendent(serviceId, nextDescendent._type._id, nextDescendent._id, globalConfig)));
|
|
145
|
+
await deleteService(serviceId, globalConfig);
|
|
146
|
+
debugMessage(`ServiceOps.deleteFullService: end`);
|
|
153
147
|
}
|
|
148
|
+
|
|
154
149
|
/**
|
|
155
150
|
* Deletes all services
|
|
151
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
156
152
|
*/
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
debugMessage(`ServiceOps.deleteFullServices: start`);
|
|
160
|
-
|
|
153
|
+
export async function deleteFullServices(globalConfig = false) {
|
|
154
|
+
debugMessage(`ServiceOps.deleteFullServices: start, globalConfig=${globalConfig}`);
|
|
161
155
|
try {
|
|
162
|
-
const serviceList = (await _getListOfServices()).result;
|
|
156
|
+
const serviceList = (await _getListOfServices(globalConfig)).result;
|
|
163
157
|
await Promise.all(serviceList.map(async serviceListItem => {
|
|
164
158
|
try {
|
|
165
|
-
await deleteFullService(serviceListItem._id);
|
|
159
|
+
await deleteFullService(serviceListItem._id, globalConfig);
|
|
166
160
|
} catch (error) {
|
|
167
161
|
var _error$response10, _error$response11, _error$response11$dat;
|
|
168
|
-
|
|
169
162
|
if (!(((_error$response10 = error.response) === null || _error$response10 === void 0 ? void 0 : _error$response10.status) === 403 && ((_error$response11 = error.response) === null || _error$response11 === void 0 ? void 0 : (_error$response11$dat = _error$response11.data) === null || _error$response11$dat === void 0 ? void 0 : _error$response11$dat.message) === 'This operation is not available in ForgeRock Identity Cloud.')) {
|
|
170
163
|
var _error$response12, _error$response12$dat;
|
|
171
|
-
|
|
172
164
|
const message = (_error$response12 = error.response) === null || _error$response12 === void 0 ? void 0 : (_error$response12$dat = _error$response12.data) === null || _error$response12$dat === void 0 ? void 0 : _error$response12$dat.message;
|
|
173
165
|
printMessage(`Delete service '${serviceListItem._id}': ${message}`, 'error');
|
|
174
166
|
}
|
|
@@ -176,100 +168,91 @@ export async function deleteFullServices() {
|
|
|
176
168
|
}));
|
|
177
169
|
} catch (error) {
|
|
178
170
|
var _error$response13, _error$response13$dat;
|
|
179
|
-
|
|
180
171
|
const message = (_error$response13 = error.response) === null || _error$response13 === void 0 ? void 0 : (_error$response13$dat = _error$response13.data) === null || _error$response13$dat === void 0 ? void 0 : _error$response13$dat.message;
|
|
181
172
|
printMessage(`Delete services: ${message}`, 'error');
|
|
182
173
|
}
|
|
183
|
-
|
|
184
174
|
debugMessage(`ServiceOps.deleteFullServices: end`);
|
|
185
175
|
}
|
|
176
|
+
|
|
186
177
|
/**
|
|
187
178
|
* Export service. The response can be saved to file as is.
|
|
188
179
|
* @param serviceId service id/name
|
|
180
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
189
181
|
* @returns {Promise<ServiceExportInterface>} Promise resolving to a ServiceExportInterface object.
|
|
190
182
|
*/
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
debugMessage(`ServiceOps.exportService: start`);
|
|
183
|
+
export async function exportService(serviceId, globalConfig = false) {
|
|
184
|
+
debugMessage(`ServiceOps.exportService: start, globalConfig=${globalConfig}`);
|
|
194
185
|
const exportData = createServiceExportTemplate();
|
|
195
|
-
|
|
196
186
|
try {
|
|
197
|
-
const service = await getService(serviceId);
|
|
198
|
-
service.nextDescendents = await getServiceDescendents(serviceId);
|
|
187
|
+
const service = await getService(serviceId, globalConfig);
|
|
188
|
+
service.nextDescendents = await getServiceDescendents(serviceId, globalConfig);
|
|
199
189
|
exportData.service[serviceId] = service;
|
|
200
190
|
} catch (error) {
|
|
201
191
|
var _error$response14, _error$response14$dat;
|
|
202
|
-
|
|
203
192
|
const message = (_error$response14 = error.response) === null || _error$response14 === void 0 ? void 0 : (_error$response14$dat = _error$response14.data) === null || _error$response14$dat === void 0 ? void 0 : _error$response14$dat.message;
|
|
204
193
|
printMessage(`Export service '${serviceId}': ${message}`, 'error');
|
|
205
194
|
}
|
|
206
|
-
|
|
207
195
|
debugMessage(`ServiceOps.exportService: end`);
|
|
208
196
|
return exportData;
|
|
209
197
|
}
|
|
198
|
+
|
|
210
199
|
/**
|
|
211
200
|
* Export all services
|
|
212
|
-
* @param {
|
|
201
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
213
202
|
*/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
debugMessage(`ServiceOps.exportServices: start`);
|
|
203
|
+
export async function exportServices(globalConfig = false) {
|
|
204
|
+
debugMessage(`ServiceOps.exportServices: start, globalConfig=${globalConfig}`);
|
|
217
205
|
const exportData = createServiceExportTemplate();
|
|
218
|
-
|
|
219
206
|
try {
|
|
220
|
-
const services = await getFullServices();
|
|
221
|
-
|
|
207
|
+
const services = await getFullServices(globalConfig);
|
|
222
208
|
for (const service of services) {
|
|
223
209
|
exportData.service[service._type._id] = service;
|
|
224
210
|
}
|
|
225
211
|
} catch (error) {
|
|
226
212
|
var _error$response15, _error$response15$dat;
|
|
227
|
-
|
|
228
213
|
const message = (_error$response15 = error.response) === null || _error$response15 === void 0 ? void 0 : (_error$response15$dat = _error$response15.data) === null || _error$response15$dat === void 0 ? void 0 : _error$response15$dat.message;
|
|
229
214
|
printMessage(`Export servics: ${message}`, 'error');
|
|
230
215
|
}
|
|
231
|
-
|
|
232
216
|
debugMessage(`ServiceOps.exportServices: end`);
|
|
233
217
|
return exportData;
|
|
234
218
|
}
|
|
219
|
+
|
|
235
220
|
/**
|
|
236
221
|
* Imports a single service using a reference to the service and a file to read the data from. Optionally clean (remove) an existing service first
|
|
237
222
|
* @param {string} serviceId The service id/name to add
|
|
223
|
+
* @param {ServiceExportInterface} importData The service configuration export data to import
|
|
238
224
|
* @param {boolean} clean Indicates whether to remove a possible existing service with the same id first.
|
|
239
|
-
* @param {
|
|
225
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
240
226
|
* @returns Promise resolving when the service has been imported
|
|
241
227
|
*/
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
debugMessage(`ServiceOps.importService: start`);
|
|
228
|
+
export async function importService(serviceId, importData, clean, globalConfig = false) {
|
|
229
|
+
debugMessage(`ServiceOps.importService: start, globalConfig=${globalConfig}`);
|
|
245
230
|
const serviceData = importData.service[serviceId];
|
|
246
|
-
const result = await putFullService(serviceId, serviceData, clean);
|
|
231
|
+
const result = await putFullService(serviceId, serviceData, clean, globalConfig);
|
|
247
232
|
debugMessage(`ServiceOps.importService: end`);
|
|
248
233
|
return result;
|
|
249
234
|
}
|
|
235
|
+
|
|
250
236
|
/**
|
|
251
237
|
* Imports multiple services from the same file. Optionally clean (remove) existing services first
|
|
238
|
+
* @param {ServiceExportInterface} importData The service configuration export data to import
|
|
252
239
|
* @param {boolean} clean Indicates whether to remove possible existing services first
|
|
240
|
+
* @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
|
|
253
241
|
*/
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
debugMessage(`ServiceOps.importServices: start`);
|
|
257
|
-
|
|
242
|
+
export async function importServices(importData, clean, globalConfig = false) {
|
|
243
|
+
debugMessage(`ServiceOps.importServices: start, globalConfig=${globalConfig}`);
|
|
258
244
|
try {
|
|
259
|
-
const result = await putFullServices(Object.entries(importData.service), clean);
|
|
245
|
+
const result = await putFullServices(Object.entries(importData.service), clean, globalConfig);
|
|
260
246
|
debugMessage(`ServiceOps.importServices: end`);
|
|
261
247
|
return result;
|
|
262
248
|
} catch (error) {
|
|
263
249
|
var _error$response16, _error$response16$dat, _error$response17, _error$response17$dat;
|
|
264
|
-
|
|
265
250
|
const message = (_error$response16 = error.response) === null || _error$response16 === void 0 ? void 0 : (_error$response16$dat = _error$response16.data) === null || _error$response16$dat === void 0 ? void 0 : _error$response16$dat.message;
|
|
266
251
|
const detail = (_error$response17 = error.response) === null || _error$response17 === void 0 ? void 0 : (_error$response17$dat = _error$response17.data) === null || _error$response17$dat === void 0 ? void 0 : _error$response17$dat.detail;
|
|
267
252
|
printMessage(`Unable to import services: error: ${message}`, 'error');
|
|
268
|
-
|
|
269
253
|
if (detail) {
|
|
270
254
|
printMessage(`Details: ${JSON.stringify(detail)}`, 'error');
|
|
271
255
|
}
|
|
272
|
-
|
|
273
256
|
throw error;
|
|
274
257
|
}
|
|
275
258
|
}
|