@rockcarver/frodo-lib 0.16.2-9 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +217 -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 +16 -67
- 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 +5 -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 +2 -159
- 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 +139 -370
- 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 +11 -107
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ScriptOps.js +26 -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 +161 -83
- 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/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 +25 -29
- 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 +5 -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 +37 -80
- 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 +146 -289
- package/esm/ops/JourneyOps.test.mjs +29 -27
- 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 +28 -62
- package/esm/ops/Saml2Ops.test.mjs +20 -23
- package/esm/ops/ScriptOps.mjs +29 -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 +147 -31
- 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/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 +36 -26
- package/types/api/AgentApi.d.ts.map +1 -1
- package/types/api/ApiTypes.d.ts +15 -16
- 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.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/index.d.ts +11 -5
- package/types/index.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 +1 -1
- package/types/ops/OpsTypes.d.ts.map +1 -1
- package/types/ops/OrganizationOps.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 +19 -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
|
@@ -1,292 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { EMAIL_TEMPLATE_TYPE, getEmailTemplate, getEmailTemplates, putEmailTemplate } from '../api/EmailTemplateApi';
|
|
3
|
-
import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from './utils/Console';
|
|
4
|
-
import { getTypedFilename, saveJsonToFile, validateImport } from './utils/ExportImportUtils';
|
|
5
|
-
import wordwrap from './utils/Wordwrap';
|
|
6
|
-
/**
|
|
7
|
-
* Regex to remove email template type from id
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');
|
|
11
|
-
/**
|
|
12
|
-
* Maintain the file type centrally
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const EMAIL_TEMPLATE_FILE_TYPE = 'template.email'; // use a function vs a template variable to avoid problems in loops
|
|
1
|
+
import { getConfigEntitiesByType, getConfigEntity, putConfigEntity } from '../api/IdmConfigApi';
|
|
16
2
|
|
|
17
|
-
function getFileDataTemplate() {
|
|
18
|
-
return {
|
|
19
|
-
meta: {},
|
|
20
|
-
emailTemplate: {}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
3
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @param {boolean} long Long list format with details
|
|
26
|
-
* @return {Promise<unknown[]>} a promise that resolves to an array of email template objects
|
|
4
|
+
* Email template type key used to build the IDM id: 'emailTemplate/<id>'
|
|
27
5
|
*/
|
|
6
|
+
export const EMAIL_TEMPLATE_TYPE = 'emailTemplate';
|
|
28
7
|
|
|
29
|
-
|
|
30
|
-
export async function listEmailTemplates(long = false) {
|
|
31
|
-
let emailTemplates = [];
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
emailTemplates = (await getEmailTemplates()).result;
|
|
35
|
-
} catch (error) {
|
|
36
|
-
printMessage(`Error retrieving email templates: ${error.message}`, 'error');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
emailTemplates.sort((a, b) => a._id.localeCompare(b._id));
|
|
40
|
-
|
|
41
|
-
if (!long) {
|
|
42
|
-
for (const [, emailTemplate] of emailTemplates.entries()) {
|
|
43
|
-
printMessage(`${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`, 'data');
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
const table = createTable(['Id'['brightCyan'], 'Name'['brightCyan'], 'Status'['brightCyan'], 'Locale(s)'['brightCyan'], 'From'['brightCyan'], 'Subject'['brightCyan']]);
|
|
47
|
-
|
|
48
|
-
for (const emailTemplate of emailTemplates) {
|
|
49
|
-
table.push([// Id
|
|
50
|
-
`${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`, // Name
|
|
51
|
-
`${emailTemplate.displayName ? emailTemplate.displayName : ''}`, // Status
|
|
52
|
-
emailTemplate.enabled === false ? 'disabled'['brightRed'] : 'enabled'['brightGreen'], // Locale(s)
|
|
53
|
-
`${emailTemplate.defaultLocale}${Object.keys(emailTemplate.subject).length > 1 ? ` (${Object.keys(emailTemplate.subject).filter(locale => locale !== emailTemplate.defaultLocale).join(',')})` : ''}`, // From
|
|
54
|
-
`${emailTemplate.from ? emailTemplate.from : ''}`, // Subject
|
|
55
|
-
wordwrap(emailTemplate.subject[emailTemplate.defaultLocale], 40)]);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
printMessage(table.toString(), 'data');
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return emailTemplates;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Export a single email template to file
|
|
65
|
-
* @param {String} templateId email template id
|
|
66
|
-
* @param {String} file optional filename
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
export async function exportEmailTemplateToFile(templateId, file) {
|
|
70
|
-
let fileName = file;
|
|
71
|
-
|
|
72
|
-
if (!fileName) {
|
|
73
|
-
fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
createProgressIndicator(1, `Exporting ${templateId}`);
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
const templateData = await getEmailTemplate(templateId);
|
|
80
|
-
updateProgressIndicator(`Writing file ${fileName}`);
|
|
81
|
-
const fileData = getFileDataTemplate();
|
|
82
|
-
fileData.emailTemplate[templateId] = templateData;
|
|
83
|
-
saveJsonToFile(fileData, fileName);
|
|
84
|
-
stopProgressIndicator(`Exported ${templateId.brightCyan} to ${fileName.brightCyan}.`);
|
|
85
|
-
} catch (err) {
|
|
86
|
-
stopProgressIndicator(`${err}`);
|
|
87
|
-
printMessage(err, 'error');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Export all email templates to file
|
|
92
|
-
* @param {String} file optional filename
|
|
93
|
-
*/
|
|
94
|
-
|
|
95
|
-
export async function exportEmailTemplatesToFile(file) {
|
|
96
|
-
let fileName = file;
|
|
97
|
-
|
|
98
|
-
if (!fileName) {
|
|
99
|
-
fileName = getTypedFilename(`allEmailTemplates`, EMAIL_TEMPLATE_FILE_TYPE);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
try {
|
|
103
|
-
const fileData = getFileDataTemplate();
|
|
104
|
-
const response = await getEmailTemplates();
|
|
105
|
-
const templates = response.result;
|
|
106
|
-
createProgressIndicator(response.resultCount, 'Exporting email templates');
|
|
107
|
-
|
|
108
|
-
for (const template of templates) {
|
|
109
|
-
const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
|
|
110
|
-
|
|
111
|
-
updateProgressIndicator(`Exporting ${templateId}`);
|
|
112
|
-
fileData.emailTemplate[templateId] = template;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
saveJsonToFile(fileData, fileName);
|
|
116
|
-
stopProgressIndicator(`${response.resultCount} templates exported to ${fileName}.`);
|
|
117
|
-
} catch (err) {
|
|
118
|
-
stopProgressIndicator(`${err}`);
|
|
119
|
-
printMessage(err, 'error');
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
8
|
/**
|
|
123
|
-
*
|
|
9
|
+
* Get all email templates
|
|
10
|
+
* @returns {Promise} a promise that resolves to an array of email template objects
|
|
124
11
|
*/
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
try {
|
|
128
|
-
const response = await getEmailTemplates();
|
|
129
|
-
const templates = response.result;
|
|
130
|
-
createProgressIndicator(response.resultCount, 'Exporting email templates');
|
|
131
|
-
|
|
132
|
-
for (const template of templates) {
|
|
133
|
-
const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
|
|
134
|
-
|
|
135
|
-
const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
|
|
136
|
-
const fileData = getFileDataTemplate();
|
|
137
|
-
updateProgressIndicator(`Exporting ${templateId}`);
|
|
138
|
-
fileData.emailTemplate[templateId] = template;
|
|
139
|
-
saveJsonToFile(fileData, fileName);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
stopProgressIndicator(`${response.resultCount} templates exported.`);
|
|
143
|
-
} catch (err) {
|
|
144
|
-
stopProgressIndicator(`${err}`);
|
|
145
|
-
printMessage(err, 'error');
|
|
146
|
-
}
|
|
12
|
+
export async function getEmailTemplates() {
|
|
13
|
+
return getConfigEntitiesByType(EMAIL_TEMPLATE_TYPE);
|
|
147
14
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Import email template by id from file
|
|
150
|
-
* @param {String} templateId email template id
|
|
151
|
-
* @param {String} file optional filename
|
|
152
|
-
*/
|
|
153
15
|
|
|
154
|
-
export async function importEmailTemplateFromFile(templateId, file) {
|
|
155
|
-
// eslint-disable-next-line no-param-reassign
|
|
156
|
-
templateId = templateId.replaceAll(`${EMAIL_TEMPLATE_TYPE}/`, '');
|
|
157
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
158
|
-
if (err) throw err;
|
|
159
|
-
const fileData = JSON.parse(data);
|
|
160
|
-
|
|
161
|
-
if (validateImport(fileData.meta)) {
|
|
162
|
-
createProgressIndicator(1, `Importing ${templateId}`);
|
|
163
|
-
|
|
164
|
-
if (fileData.emailTemplate[templateId]) {
|
|
165
|
-
try {
|
|
166
|
-
await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
167
|
-
updateProgressIndicator(`Importing ${templateId}`);
|
|
168
|
-
stopProgressIndicator(`Imported ${templateId}`);
|
|
169
|
-
} catch (putEmailTemplateError) {
|
|
170
|
-
stopProgressIndicator(`${putEmailTemplateError}`);
|
|
171
|
-
printMessage(putEmailTemplateError, 'error');
|
|
172
|
-
}
|
|
173
|
-
} else {
|
|
174
|
-
stopProgressIndicator(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`);
|
|
175
|
-
printMessage(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`, 'error');
|
|
176
|
-
}
|
|
177
|
-
} else {
|
|
178
|
-
printMessage('Import validation failed...', 'error');
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
16
|
/**
|
|
183
|
-
*
|
|
184
|
-
* @param {
|
|
17
|
+
* Get email template
|
|
18
|
+
* @param {string} templateId id/name of the email template without the type prefix
|
|
19
|
+
* @returns {Promise} a promise that resolves an email template object
|
|
185
20
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
189
|
-
if (err) throw err;
|
|
190
|
-
const fileData = JSON.parse(data);
|
|
191
|
-
|
|
192
|
-
if (validateImport(fileData.meta)) {
|
|
193
|
-
createProgressIndicator(Object.keys(fileData.emailTemplate).length, `Importing email templates`);
|
|
194
|
-
|
|
195
|
-
for (const id in fileData.emailTemplate) {
|
|
196
|
-
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
197
|
-
const templateId = id.replace(regexEmailTemplateType, '');
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
// eslint-disable-next-line no-await-in-loop
|
|
201
|
-
await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
202
|
-
updateProgressIndicator(`Imported ${templateId}`);
|
|
203
|
-
} catch (putEmailTemplateError) {
|
|
204
|
-
printMessage(`\nError importing ${templateId}`, 'error');
|
|
205
|
-
printMessage(putEmailTemplateError.response.data, 'error');
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
stopProgressIndicator(`Done.`);
|
|
211
|
-
} else {
|
|
212
|
-
printMessage('Import validation failed...', 'error');
|
|
213
|
-
}
|
|
214
|
-
});
|
|
21
|
+
export async function getEmailTemplate(templateId) {
|
|
22
|
+
return getConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${templateId}`);
|
|
215
23
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Import all email templates from separate files
|
|
218
|
-
*/
|
|
219
|
-
|
|
220
|
-
export async function importEmailTemplatesFromFiles() {
|
|
221
|
-
const names = fs.readdirSync('.');
|
|
222
|
-
const jsonFiles = names.filter(name => name.toLowerCase().endsWith(`${EMAIL_TEMPLATE_FILE_TYPE}.json`));
|
|
223
|
-
createProgressIndicator(jsonFiles.length, 'Importing email templates...');
|
|
224
|
-
let total = 0;
|
|
225
|
-
let totalErrors = 0;
|
|
226
|
-
|
|
227
|
-
for (const file of jsonFiles) {
|
|
228
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
229
|
-
const fileData = JSON.parse(data);
|
|
230
|
-
|
|
231
|
-
if (validateImport(fileData.meta)) {
|
|
232
|
-
total += Object.keys(fileData.emailTemplate).length;
|
|
233
|
-
let errors = 0;
|
|
234
|
-
|
|
235
|
-
for (const id in fileData.emailTemplate) {
|
|
236
|
-
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
237
|
-
const templateId = id.replace(regexEmailTemplateType, '');
|
|
238
24
|
|
|
239
|
-
try {
|
|
240
|
-
// eslint-disable-next-line no-await-in-loop
|
|
241
|
-
await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
242
|
-
} catch (putEmailTemplateError) {
|
|
243
|
-
errors += 1;
|
|
244
|
-
printMessage(`\nError importing ${templateId}`, 'error');
|
|
245
|
-
printMessage(putEmailTemplateError.response.data, 'error');
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
totalErrors += errors;
|
|
251
|
-
updateProgressIndicator(`Imported ${file}`);
|
|
252
|
-
} else {
|
|
253
|
-
printMessage(`Validation of ${file} failed!`, 'error');
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
stopProgressIndicator(`Imported ${total - totalErrors} of ${total} email template(s) from ${jsonFiles.length} file(s).`);
|
|
258
|
-
}
|
|
259
25
|
/**
|
|
260
|
-
*
|
|
261
|
-
* @param {
|
|
26
|
+
* Put email template
|
|
27
|
+
* @param {string} templateId id/name of the email template without the type prefix
|
|
28
|
+
* @param {Object} templateData email template object
|
|
29
|
+
* @returns {Promise} a promise that resolves to an email template object
|
|
262
30
|
*/
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
266
|
-
if (err) throw err;
|
|
267
|
-
const fileData = JSON.parse(data);
|
|
268
|
-
|
|
269
|
-
if (validateImport(fileData.meta)) {
|
|
270
|
-
createProgressIndicator(1, `Importing first email template`);
|
|
271
|
-
|
|
272
|
-
for (const id in fileData.emailTemplate) {
|
|
273
|
-
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
274
|
-
try {
|
|
275
|
-
await putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
|
|
276
|
-
updateProgressIndicator(`Imported ${id}`);
|
|
277
|
-
stopProgressIndicator(`Imported ${id}`);
|
|
278
|
-
} catch (putEmailTemplateError) {
|
|
279
|
-
stopProgressIndicator(`Error importing email template ${id}`);
|
|
280
|
-
printMessage(`\nError importing email template ${id}`, 'error');
|
|
281
|
-
printMessage(putEmailTemplateError.response.data, 'error');
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
} else {
|
|
288
|
-
printMessage('Import validation failed...', 'error');
|
|
289
|
-
}
|
|
290
|
-
});
|
|
31
|
+
export async function putEmailTemplate(templateId, templateData) {
|
|
32
|
+
return putConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${templateId}`, templateData);
|
|
291
33
|
}
|
|
292
34
|
//# sourceMappingURL=EmailTemplateOps.js.map
|
|
@@ -4,56 +4,31 @@ import { EmailTemplate, state } from '../index';
|
|
|
4
4
|
import * as global from '../storage/StaticStorage';
|
|
5
5
|
import { mockGetConfigEntitiesByType } from '../test/mocks/ForgeRockApiMockEngine';
|
|
6
6
|
const mock = new MockAdapter(axios);
|
|
7
|
-
state.
|
|
8
|
-
state.
|
|
9
|
-
state.
|
|
10
|
-
state.
|
|
11
|
-
state.
|
|
12
|
-
describe('EmailTemplateOps -
|
|
13
|
-
test('
|
|
14
|
-
expect(EmailTemplate.
|
|
7
|
+
state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
|
|
8
|
+
state.setRealm('alpha');
|
|
9
|
+
state.setCookieName('cookieName');
|
|
10
|
+
state.setCookieValue('cookieValue');
|
|
11
|
+
state.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);
|
|
12
|
+
describe('EmailTemplateOps - getEmailTemplate()', () => {
|
|
13
|
+
test('getEmailTemplate() 0: Method is implemented', async () => {
|
|
14
|
+
expect(EmailTemplate.getEmailTemplate).toBeDefined();
|
|
15
15
|
});
|
|
16
16
|
});
|
|
17
|
-
describe('EmailTemplateOps -
|
|
18
|
-
test('
|
|
19
|
-
expect(EmailTemplate.
|
|
17
|
+
describe('EmailTemplateOps - getEmailTemplates()', () => {
|
|
18
|
+
test('getEmailTemplates() 0: Method is implemented', async () => {
|
|
19
|
+
expect(EmailTemplate.getEmailTemplates).toBeDefined();
|
|
20
20
|
});
|
|
21
|
-
|
|
22
|
-
describe('EmailTemplateOps - exportEmailTemplatesToFiles()', () => {
|
|
23
|
-
test('exportEmailTemplatesToFiles() 0: Method is implemented', async () => {
|
|
24
|
-
expect(EmailTemplate.exportEmailTemplatesToFiles).toBeDefined();
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
describe('EmailTemplateOps - importEmailTemplateFromFile()', () => {
|
|
28
|
-
test('importEmailTemplateFromFile() 0: Method is implemented', async () => {
|
|
29
|
-
expect(EmailTemplate.importEmailTemplateFromFile).toBeDefined();
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe('EmailTemplateOps - importEmailTemplatesFromFile()', () => {
|
|
33
|
-
test('importEmailTemplatesFromFile() 0: Method is implemented', async () => {
|
|
34
|
-
expect(EmailTemplate.importEmailTemplatesFromFile).toBeDefined();
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
describe('EmailTemplateOps - importEmailTemplatesFromFiles()', () => {
|
|
38
|
-
test('importEmailTemplatesFromFiles() 0: Method is implemented', async () => {
|
|
39
|
-
expect(EmailTemplate.importEmailTemplatesFromFiles).toBeDefined();
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('EmailTemplateOps - importFirstEmailTemplateFromFile()', () => {
|
|
43
|
-
test('importFirstEmailTemplateFromFile() 0: Method is implemented', async () => {
|
|
44
|
-
expect(EmailTemplate.importFirstEmailTemplateFromFile).toBeDefined();
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
describe('EmailTemplateOps - listEmailTemplates()', () => {
|
|
48
|
-
test('listEmailTemplates() 0: Method is implemented', async () => {
|
|
49
|
-
expect(EmailTemplate.listEmailTemplates).toBeDefined();
|
|
50
|
-
});
|
|
51
|
-
test('listEmailTemplates() 1: List email templates', async () => {
|
|
21
|
+
test('getEmailTemplates() 1: Get email templates', async () => {
|
|
52
22
|
mockGetConfigEntitiesByType(mock);
|
|
53
23
|
expect.assertions(2);
|
|
54
|
-
const emailTemplates = await EmailTemplate.
|
|
24
|
+
const emailTemplates = await EmailTemplate.getEmailTemplates();
|
|
55
25
|
expect(emailTemplates).toBeTruthy();
|
|
56
|
-
expect(emailTemplates.length).toBe(17);
|
|
26
|
+
expect(emailTemplates.result.length).toBe(17);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('EmailTemplateOps - putEmailTemplate()', () => {
|
|
30
|
+
test('putEmailTemplate() 0: Method is implemented', async () => {
|
|
31
|
+
expect(EmailTemplate.putEmailTemplate).toBeDefined();
|
|
57
32
|
});
|
|
58
33
|
});
|
|
59
34
|
//# sourceMappingURL=EmailTemplateOps.test.js.map
|