@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
|
@@ -10,6 +10,7 @@ exports.convertTextArrayToBase64 = convertTextArrayToBase64;
|
|
|
10
10
|
exports.convertTextArrayToBase64Url = convertTextArrayToBase64Url;
|
|
11
11
|
exports.findFilesByName = findFilesByName;
|
|
12
12
|
exports.getCurrentTimestamp = getCurrentTimestamp;
|
|
13
|
+
exports.getMetadata = getMetadata;
|
|
13
14
|
exports.getRealmString = getRealmString;
|
|
14
15
|
exports.getTypedFilename = getTypedFilename;
|
|
15
16
|
exports.getWorkingDirectory = getWorkingDirectory;
|
|
@@ -19,69 +20,52 @@ exports.saveTextToFile = saveTextToFile;
|
|
|
19
20
|
exports.saveToFile = saveToFile;
|
|
20
21
|
exports.titleCase = titleCase;
|
|
21
22
|
exports.validateImport = validateImport;
|
|
22
|
-
|
|
23
23
|
var _fs = _interopRequireDefault(require("fs"));
|
|
24
|
-
|
|
25
24
|
var _promises = require("fs/promises");
|
|
26
|
-
|
|
27
25
|
var _path = require("path");
|
|
28
|
-
|
|
29
26
|
var _slugify = _interopRequireDefault(require("slugify"));
|
|
30
|
-
|
|
31
27
|
var _Base = require("../../api/utils/Base64");
|
|
32
|
-
|
|
33
|
-
var _SessionStorage = _interopRequireDefault(require("../../storage/SessionStorage"));
|
|
34
|
-
|
|
28
|
+
var state = _interopRequireWildcard(require("../../shared/State"));
|
|
35
29
|
var _StaticStorage = require("../../storage/StaticStorage");
|
|
36
|
-
|
|
37
30
|
var _Console = require("./Console");
|
|
38
|
-
|
|
31
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
33
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
40
|
-
|
|
41
34
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
42
|
-
|
|
43
35
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
44
|
-
|
|
45
36
|
function getCurrentTimestamp() {
|
|
46
37
|
var ts = new Date();
|
|
47
38
|
return ts.toISOString();
|
|
48
39
|
}
|
|
49
|
-
|
|
50
40
|
function getMetadata() {
|
|
51
41
|
var metadata = {
|
|
52
|
-
origin:
|
|
53
|
-
originAmVersion:
|
|
54
|
-
exportedBy:
|
|
42
|
+
origin: state.getHost(),
|
|
43
|
+
originAmVersion: state.getAmVersion(),
|
|
44
|
+
exportedBy: state.getUsername(),
|
|
55
45
|
exportDate: getCurrentTimestamp(),
|
|
56
46
|
exportTool: _StaticStorage.FRODO_METADATA_ID,
|
|
57
|
-
exportToolVersion:
|
|
47
|
+
exportToolVersion: state.getFrodoVersion()
|
|
58
48
|
};
|
|
59
49
|
return metadata;
|
|
60
50
|
}
|
|
51
|
+
|
|
61
52
|
/*
|
|
62
53
|
* Output str in title case
|
|
63
54
|
*
|
|
64
55
|
* e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'
|
|
65
56
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
57
|
function titleCase(input) {
|
|
69
58
|
var str = input.toString();
|
|
70
59
|
var splitStr = str.toLowerCase().split(' ');
|
|
71
|
-
|
|
72
60
|
for (var i = 0; i < splitStr.length; i += 1) {
|
|
73
61
|
splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);
|
|
74
62
|
}
|
|
75
|
-
|
|
76
63
|
return splitStr.join(' ');
|
|
77
64
|
}
|
|
78
|
-
|
|
79
65
|
function getRealmString() {
|
|
80
|
-
var realm =
|
|
81
|
-
|
|
66
|
+
var realm = state.getRealm();
|
|
82
67
|
return realm.split('/').reduce((result, item) => "".concat(result).concat(titleCase(item)), '');
|
|
83
68
|
}
|
|
84
|
-
|
|
85
69
|
function convertBase64TextToArray(b64text) {
|
|
86
70
|
var arrayOut = [];
|
|
87
71
|
var plainText = (0, _Base.decode)(b64text);
|
|
@@ -89,7 +73,6 @@ function convertBase64TextToArray(b64text) {
|
|
|
89
73
|
arrayOut = plainText.split('\n');
|
|
90
74
|
return arrayOut;
|
|
91
75
|
}
|
|
92
|
-
|
|
93
76
|
function convertBase64UrlTextToArray(b64UTF8Text) {
|
|
94
77
|
var arrayOut = [];
|
|
95
78
|
var plainText = (0, _Base.decodeBase64Url)(b64UTF8Text);
|
|
@@ -97,53 +80,44 @@ function convertBase64UrlTextToArray(b64UTF8Text) {
|
|
|
97
80
|
arrayOut = plainText.split('\n');
|
|
98
81
|
return arrayOut;
|
|
99
82
|
}
|
|
100
|
-
|
|
101
83
|
function convertTextArrayToBase64(textArray) {
|
|
102
84
|
var joinedText = textArray.join('\n');
|
|
103
85
|
var b64encodedScript = (0, _Base.encode)(joinedText);
|
|
104
86
|
return b64encodedScript;
|
|
105
87
|
}
|
|
106
|
-
|
|
107
88
|
function convertTextArrayToBase64Url(textArray) {
|
|
108
89
|
var joinedText = textArray.join('\n');
|
|
109
90
|
var b64encodedScript = (0, _Base.encodeBase64Url)(joinedText);
|
|
110
91
|
return b64encodedScript;
|
|
111
|
-
}
|
|
112
|
-
|
|
92
|
+
}
|
|
113
93
|
|
|
94
|
+
// eslint-disable-next-line no-unused-vars
|
|
114
95
|
function validateImport(metadata) {
|
|
115
96
|
return metadata || true;
|
|
116
97
|
}
|
|
117
|
-
|
|
118
98
|
function getTypedFilename(name, type) {
|
|
119
99
|
var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'json';
|
|
120
100
|
var slug = (0, _slugify.default)(name.replace(/^http(s?):\/\//, ''));
|
|
121
101
|
return "".concat(slug, ".").concat(type, ".").concat(suffix);
|
|
122
102
|
}
|
|
123
|
-
|
|
124
103
|
function getWorkingDirectory() {
|
|
125
104
|
var wd = '.';
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
105
|
+
if (state.getDirectory()) {
|
|
106
|
+
wd = state.getDirectory().replace(/\/$/, '');
|
|
107
|
+
// create directory if it doesn't exist
|
|
130
108
|
if (!_fs.default.existsSync(wd)) {
|
|
131
109
|
(0, _Console.debugMessage)("ExportImportUtils.getWorkingDirectory: creating directory '".concat(wd, "'"));
|
|
132
|
-
|
|
133
110
|
_fs.default.mkdirSync(wd, {
|
|
134
111
|
recursive: true
|
|
135
112
|
});
|
|
136
113
|
}
|
|
137
114
|
}
|
|
138
|
-
|
|
139
115
|
return wd;
|
|
140
116
|
}
|
|
141
|
-
|
|
142
117
|
function saveToFile(type, data, identifier, filename) {
|
|
143
118
|
var exportData = {};
|
|
144
119
|
exportData['meta'] = getMetadata();
|
|
145
120
|
exportData[type] = {};
|
|
146
|
-
|
|
147
121
|
if (Array.isArray(data)) {
|
|
148
122
|
data.forEach(element => {
|
|
149
123
|
exportData[type][element[identifier]] = element;
|
|
@@ -151,58 +125,53 @@ function saveToFile(type, data, identifier, filename) {
|
|
|
151
125
|
} else {
|
|
152
126
|
exportData[type][data[identifier]] = data;
|
|
153
127
|
}
|
|
154
|
-
|
|
155
128
|
_fs.default.writeFile(filename, JSON.stringify(exportData, null, 2), err => {
|
|
156
129
|
if (err) {
|
|
157
130
|
return (0, _Console.printMessage)("ERROR - can't save ".concat(type, " to file"), 'error');
|
|
158
131
|
}
|
|
159
|
-
|
|
160
132
|
return '';
|
|
161
133
|
});
|
|
162
134
|
}
|
|
135
|
+
|
|
163
136
|
/**
|
|
164
137
|
* Save JSON object to file
|
|
165
138
|
* @param {Object} data data object
|
|
166
139
|
* @param {String} filename file name
|
|
140
|
+
* @return {boolean} true if successful, false otherwise
|
|
167
141
|
*/
|
|
168
|
-
|
|
169
|
-
|
|
170
142
|
function saveJsonToFile(data, filename) {
|
|
143
|
+
var includeMeta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
171
144
|
var exportData = data;
|
|
172
|
-
exportData.meta = getMetadata();
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
});
|
|
145
|
+
if (includeMeta) exportData.meta = getMetadata();
|
|
146
|
+
try {
|
|
147
|
+
_fs.default.writeFileSync(filename, JSON.stringify(exportData, null, 2));
|
|
148
|
+
return true;
|
|
149
|
+
} catch (err) {
|
|
150
|
+
(0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
181
153
|
}
|
|
154
|
+
|
|
182
155
|
/**
|
|
183
156
|
* Save text data to file
|
|
184
157
|
* @param {String} data text data
|
|
185
158
|
* @param {String} filename file name
|
|
186
159
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
189
160
|
function saveTextToFile(data, filename) {
|
|
190
161
|
_fs.default.writeFile(filename, data, err => {
|
|
191
162
|
if (err) {
|
|
192
163
|
(0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
|
|
193
164
|
return false;
|
|
194
165
|
}
|
|
195
|
-
|
|
196
166
|
return true;
|
|
197
167
|
});
|
|
198
168
|
}
|
|
169
|
+
|
|
199
170
|
/**
|
|
200
171
|
* Append text data to file
|
|
201
172
|
* @param {String} data text data
|
|
202
173
|
* @param {String} filename file name
|
|
203
174
|
*/
|
|
204
|
-
|
|
205
|
-
|
|
206
175
|
function appendTextToFile(data, filename) {
|
|
207
176
|
try {
|
|
208
177
|
_fs.default.appendFileSync(filename, data);
|
|
@@ -210,6 +179,7 @@ function appendTextToFile(data, filename) {
|
|
|
210
179
|
(0, _Console.printMessage)("".concat(error.message), 'error');
|
|
211
180
|
}
|
|
212
181
|
}
|
|
182
|
+
|
|
213
183
|
/**
|
|
214
184
|
* Find files by name
|
|
215
185
|
* @param {string} fileName file name to search for
|
|
@@ -217,42 +187,37 @@ function appendTextToFile(data, filename) {
|
|
|
217
187
|
* @param {string} path path to directory where to start the search
|
|
218
188
|
* @returns {string[]} array of found file paths relative to starting directory
|
|
219
189
|
*/
|
|
220
|
-
|
|
221
|
-
|
|
222
190
|
function findFilesByName(fileName) {
|
|
223
191
|
var fast = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
224
192
|
var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : './';
|
|
225
|
-
|
|
226
193
|
var entries = _fs.default.readdirSync(path, {
|
|
227
194
|
encoding: 'utf8',
|
|
228
195
|
withFileTypes: true
|
|
229
|
-
});
|
|
230
|
-
|
|
196
|
+
});
|
|
231
197
|
|
|
232
|
-
|
|
198
|
+
// Get files within the current directory and add a path key to the file objects
|
|
199
|
+
var files = entries.filter(entry => !entry.isDirectory()).filter(file => file.name === fileName)
|
|
200
|
+
// .map((file) => ({ ...file, path: path + file.name }));
|
|
233
201
|
.map(file => path + file.name);
|
|
234
|
-
if (fast && files.length > 0) return files;
|
|
202
|
+
if (fast && files.length > 0) return files;
|
|
235
203
|
|
|
204
|
+
// search sub-folders
|
|
236
205
|
var folders = entries.filter(entry => entry.isDirectory());
|
|
237
|
-
|
|
238
206
|
for (var folder of folders) {
|
|
239
207
|
files.push(...findFilesByName(fileName, fast, "".concat(path).concat(folder.name, "/")));
|
|
240
208
|
}
|
|
241
|
-
|
|
242
209
|
return files;
|
|
243
210
|
}
|
|
211
|
+
|
|
244
212
|
/**
|
|
245
213
|
* find all (nested) files in a directory
|
|
246
214
|
*
|
|
247
215
|
* @param directory directory to search
|
|
248
216
|
* @returns list of files
|
|
249
217
|
*/
|
|
250
|
-
|
|
251
|
-
|
|
252
218
|
function readFilesRecursive(_x) {
|
|
253
219
|
return _readFilesRecursive.apply(this, arguments);
|
|
254
220
|
}
|
|
255
|
-
|
|
256
221
|
function _readFilesRecursive() {
|
|
257
222
|
_readFilesRecursive = _asyncToGenerator(function* (directory) {
|
|
258
223
|
var items = yield (0, _promises.readdir)(directory);
|
|
@@ -260,14 +225,11 @@ function _readFilesRecursive() {
|
|
|
260
225
|
var _ref = _asyncToGenerator(function* (entity) {
|
|
261
226
|
var path = (0, _path.join)(directory, entity);
|
|
262
227
|
var isDirectory = (yield (0, _promises.lstat)(path)).isDirectory();
|
|
263
|
-
|
|
264
228
|
if (isDirectory) {
|
|
265
229
|
return readFilesRecursive(path);
|
|
266
230
|
}
|
|
267
|
-
|
|
268
231
|
return path;
|
|
269
232
|
});
|
|
270
|
-
|
|
271
233
|
return function (_x2) {
|
|
272
234
|
return _ref.apply(this, arguments);
|
|
273
235
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","storage","session","getTenant","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","meta","saveTextToFile","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport storage from '../../storage/SessionStorage';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nfunction getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: storage.session.getTenant(),\n originAmVersion: storage.session.getAmVersion(),\n exportedBy: storage.session.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: storage.session.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = storage.session.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (storage.session.getDirectory()) {\n wd = storage.session.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n */\nexport function saveJsonToFile(data, filename) {\n const exportData = data;\n exportData.meta = getMetadata();\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${filename}`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function saveTextToFile(data, filename) {\n fs.writeFile(filename, data, (err) => {\n if (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n return true;\n });\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","state","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","includeMeta","meta","writeFileSync","saveTextToFile","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport * as state from '../../shared/State';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nexport function getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile(data, filename, includeMeta = true): boolean {\n const exportData = data;\n if (includeMeta) exportData.meta = getMetadata();\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n}\n\n/**\n * Save text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function saveTextToFile(data, filename) {\n fs.writeFile(filename, data, (err) => {\n if (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n return true;\n });\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportImportUtils.test.js","names":["FS_TMP_DIR","resolve","PATH_TO_ARTIFACT","test","originalScript","base64Script","Buffer","from","toString","result","convertBase64TextToArray","expect","toEqual","split","originalArrayOfScriptLines","expected","convertTextArrayToBase64","validateImport","not","toBe","describe","skip","afterAll","existsSync","rmSync","id","data","location","character","words","lotr","saveToFile","resultingJSON","JSON","parse","readFileSync","Object","keys","meta"],"sources":["ops/utils/ExportImportUtils.test.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { rmSync, existsSync, readFileSync } from 'fs';\nimport {\n convertTextArrayToBase64,\n convertBase64TextToArray,\n saveToFile,\n validateImport,\n} from './ExportImportUtils';\n// Warning! implimentation file contains non determinisitc functions which are either; not reasonable to test or imposible\n// Cause: date based non overidable functions\n// Not tested: getCurrentTimestamp\n\nconst FS_TMP_DIR = resolve('.', 'test', 'fs_tmp');\nconst PATH_TO_ARTIFACT = resolve(FS_TMP_DIR, 'export.json');\n\ntest('convertBase64TextToArray returns an array of text lines in base64 encoding', () => {\n // Arrange\n const originalScript = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const base64Script = Buffer.from(originalScript).toString('base64');\n // Act\n const result = convertBase64TextToArray(base64Script);\n // Assert\n expect(result).toEqual(originalScript.split('\\n'));\n});\n\ntest('convertTextArrayToBase64', () => {\n // Arrange\n const originalArrayOfScriptLines = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const expected = Buffer.from(originalArrayOfScriptLines).toString('base64');\n // Act\n const result = convertTextArrayToBase64(\n originalArrayOfScriptLines.split('\\n')\n );\n // Assert\n expect(result).toEqual(expected);\n});\n\ntest('validateImport should always return true', () => {\n expect(validateImport(null)).not.toBe(false);\n});\n\n// This function has no way to determine when its asnyc task is complete, suggest using callback or promises to allow for testing\ndescribe.skip('file system based tests', () => {\n afterAll(() => {\n if (existsSync(PATH_TO_ARTIFACT)) {\n rmSync(PATH_TO_ARTIFACT);\n }\n });\n\n test('saveToFile should save a file to specified tmp directory with expected data format', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n\n const expected = {\n lotr: {\n 'id-3021': {\n id: 'id-3021',\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n },\n };\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(resultingJSON.lotr).toEqual(expected.lotr);\n });\n\n test('saveToFile should save a file with metadata', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(Object.keys(resultingJSON.meta)).toEqual([\n 'origin',\n 'exportedBy',\n 'exportDate',\n 'exportTool',\n 'exportToolVersion',\n ]);\n });\n});\n"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"ExportImportUtils.test.js","names":["FS_TMP_DIR","resolve","PATH_TO_ARTIFACT","test","originalScript","base64Script","Buffer","from","toString","result","convertBase64TextToArray","expect","toEqual","split","originalArrayOfScriptLines","expected","convertTextArrayToBase64","validateImport","not","toBe","describe","skip","afterAll","existsSync","rmSync","id","data","location","character","words","lotr","saveToFile","resultingJSON","JSON","parse","readFileSync","Object","keys","meta"],"sources":["ops/utils/ExportImportUtils.test.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { rmSync, existsSync, readFileSync } from 'fs';\nimport {\n convertTextArrayToBase64,\n convertBase64TextToArray,\n saveToFile,\n validateImport,\n} from './ExportImportUtils';\n// Warning! implimentation file contains non determinisitc functions which are either; not reasonable to test or imposible\n// Cause: date based non overidable functions\n// Not tested: getCurrentTimestamp\n\nconst FS_TMP_DIR = resolve('.', 'test', 'fs_tmp');\nconst PATH_TO_ARTIFACT = resolve(FS_TMP_DIR, 'export.json');\n\ntest('convertBase64TextToArray returns an array of text lines in base64 encoding', () => {\n // Arrange\n const originalScript = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const base64Script = Buffer.from(originalScript).toString('base64');\n // Act\n const result = convertBase64TextToArray(base64Script);\n // Assert\n expect(result).toEqual(originalScript.split('\\n'));\n});\n\ntest('convertTextArrayToBase64', () => {\n // Arrange\n const originalArrayOfScriptLines = `\n function frodo() {\n return 'ring to mt doom';\n }\n `;\n const expected = Buffer.from(originalArrayOfScriptLines).toString('base64');\n // Act\n const result = convertTextArrayToBase64(\n originalArrayOfScriptLines.split('\\n')\n );\n // Assert\n expect(result).toEqual(expected);\n});\n\ntest('validateImport should always return true', () => {\n expect(validateImport(null)).not.toBe(false);\n});\n\n// This function has no way to determine when its asnyc task is complete, suggest using callback or promises to allow for testing\ndescribe.skip('file system based tests', () => {\n afterAll(() => {\n if (existsSync(PATH_TO_ARTIFACT)) {\n rmSync(PATH_TO_ARTIFACT);\n }\n });\n\n test('saveToFile should save a file to specified tmp directory with expected data format', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n\n const expected = {\n lotr: {\n 'id-3021': {\n id: 'id-3021',\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n },\n };\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(resultingJSON.lotr).toEqual(expected.lotr);\n });\n\n test('saveToFile should save a file with metadata', async () => {\n // Arrange\n const id = `id-3021`;\n const data = [\n {\n id,\n location: 'The Shire',\n character: 'Gandalf',\n words: 1064,\n },\n ];\n // Act\n saveToFile('lotr', data, 'id', PATH_TO_ARTIFACT);\n const resultingJSON = JSON.parse(readFileSync(PATH_TO_ARTIFACT, 'utf8'));\n // Assert\n expect(Object.keys(resultingJSON.meta)).toEqual([\n 'origin',\n 'exportedBy',\n 'exportDate',\n 'exportTool',\n 'exportToolVersion',\n ]);\n });\n});\n"],"mappings":"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"}
|
|
@@ -8,77 +8,61 @@ exports.escapeRegExp = escapeRegExp;
|
|
|
8
8
|
exports.getRealmManagedUser = getRealmManagedUser;
|
|
9
9
|
exports.getRealmName = getRealmName;
|
|
10
10
|
exports.isEqualJson = isEqualJson;
|
|
11
|
+
exports.isValidUrl = isValidUrl;
|
|
11
12
|
exports.readFiles = readFiles;
|
|
12
13
|
exports.replaceAll = replaceAll;
|
|
13
14
|
exports.substituteEnvParams = substituteEnvParams;
|
|
14
15
|
exports.unSubstituteEnvParams = unSubstituteEnvParams;
|
|
15
|
-
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var global = _interopRequireWildcard(require("../../storage/StaticStorage"));
|
|
19
|
-
|
|
16
|
+
var state = _interopRequireWildcard(require("../../shared/State"));
|
|
17
|
+
var globalConfig = _interopRequireWildcard(require("../../storage/StaticStorage"));
|
|
20
18
|
var _ApiUtils = require("../../api/utils/ApiUtils");
|
|
21
|
-
|
|
22
19
|
var _promises = require("fs/promises");
|
|
23
|
-
|
|
24
20
|
var _path = require("path");
|
|
25
|
-
|
|
26
21
|
var _replaceall = _interopRequireDefault(require("replaceall"));
|
|
27
|
-
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
23
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
-
|
|
30
24
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
-
|
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
-
|
|
34
25
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
35
|
-
|
|
36
26
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
37
|
-
|
|
38
27
|
// TODO: do we really need this? if yes: document
|
|
39
28
|
function escapeRegExp(str) {
|
|
40
29
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
41
|
-
}
|
|
42
|
-
|
|
30
|
+
}
|
|
43
31
|
|
|
32
|
+
// TODO: do we really need this? if yes: document
|
|
44
33
|
function replaceAll(str, find, replace) {
|
|
45
34
|
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
|
|
46
35
|
}
|
|
36
|
+
|
|
47
37
|
/**
|
|
48
38
|
* Get new name when names collide
|
|
49
39
|
* @param {String} name to apply policy to
|
|
50
40
|
* @returns {String} new name according to policy
|
|
51
41
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
42
|
function applyNameCollisionPolicy(name) {
|
|
55
43
|
var capturingRegex = /(.* - imported) \(([0-9]+)\)/;
|
|
56
44
|
var found = name.match(capturingRegex);
|
|
57
|
-
|
|
58
45
|
if (found && found.length > 0 && found.length === 3) {
|
|
59
46
|
// already renamed one or more times
|
|
60
47
|
// return the next number
|
|
61
48
|
return "".concat(found[1], " (").concat(parseInt(found[2], 10) + 1, ")");
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
}
|
|
50
|
+
// first time
|
|
65
51
|
return "".concat(name, " - imported (1)");
|
|
66
52
|
}
|
|
53
|
+
|
|
67
54
|
/**
|
|
68
55
|
* Get the name of the managed user object for the current realm
|
|
69
56
|
* @returns {String} the name of the managed user object for the current realm
|
|
70
57
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
58
|
function getRealmManagedUser() {
|
|
74
59
|
var realmManagedUser = 'user';
|
|
75
|
-
|
|
76
|
-
if (_SessionStorage.default.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY) {
|
|
60
|
+
if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {
|
|
77
61
|
realmManagedUser = "".concat((0, _ApiUtils.getCurrentRealmName)(), "_user");
|
|
78
62
|
}
|
|
79
|
-
|
|
80
63
|
return realmManagedUser;
|
|
81
64
|
}
|
|
65
|
+
|
|
82
66
|
/**
|
|
83
67
|
* Compare two json objects
|
|
84
68
|
* @param {Object} obj1 object 1
|
|
@@ -86,17 +70,13 @@ function getRealmManagedUser() {
|
|
|
86
70
|
* @param {[String]} ignoreKeys array of keys to ignore in comparison
|
|
87
71
|
* @returns {boolean} true if the two json objects have the same length and all the properties have the same value
|
|
88
72
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
73
|
function isEqualJson(obj1, obj2) {
|
|
92
74
|
var ignoreKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
93
75
|
var obj1Keys = Object.keys(obj1).filter(key => !ignoreKeys.includes(key));
|
|
94
76
|
var obj2Keys = Object.keys(obj2).filter(key => !ignoreKeys.includes(key));
|
|
95
|
-
|
|
96
77
|
if (obj1Keys.length !== obj2Keys.length) {
|
|
97
78
|
return false;
|
|
98
79
|
}
|
|
99
|
-
|
|
100
80
|
for (var objKey of obj1Keys) {
|
|
101
81
|
if (obj1[objKey] !== obj2[objKey]) {
|
|
102
82
|
if (typeof obj1[objKey] === 'object' && typeof obj2[objKey] === 'object') {
|
|
@@ -108,19 +88,18 @@ function isEqualJson(obj1, obj2) {
|
|
|
108
88
|
}
|
|
109
89
|
}
|
|
110
90
|
}
|
|
111
|
-
|
|
112
91
|
return true;
|
|
113
92
|
}
|
|
93
|
+
|
|
114
94
|
/**
|
|
115
95
|
* Get current realm name
|
|
116
96
|
* @param {String} realm realm
|
|
117
97
|
* @returns {String} name of the realm. /alpha -> alpha
|
|
118
98
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
99
|
function getRealmName(realm) {
|
|
122
100
|
return (0, _ApiUtils.getRealmName)(realm);
|
|
123
101
|
}
|
|
102
|
+
|
|
124
103
|
/**
|
|
125
104
|
* find all (nested) files in a directory
|
|
126
105
|
*
|
|
@@ -128,12 +107,9 @@ function getRealmName(realm) {
|
|
|
128
107
|
* @param childDirectory subdirectory to search
|
|
129
108
|
* @returns list of files
|
|
130
109
|
*/
|
|
131
|
-
|
|
132
|
-
|
|
133
110
|
function readFiles(_x) {
|
|
134
111
|
return _readFiles.apply(this, arguments);
|
|
135
112
|
}
|
|
136
|
-
|
|
137
113
|
function _readFiles() {
|
|
138
114
|
_readFiles = _asyncToGenerator(function* (baseDirectory) {
|
|
139
115
|
var childDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
@@ -144,17 +120,14 @@ function _readFiles() {
|
|
|
144
120
|
var _ref = _asyncToGenerator(function* (childPath) {
|
|
145
121
|
var path = (0, _path.join)(baseDirectory, childPath);
|
|
146
122
|
var isDirectory = (yield (0, _promises.lstat)(path)).isDirectory();
|
|
147
|
-
|
|
148
123
|
if (isDirectory) {
|
|
149
124
|
return readFiles(baseDirectory, childPath);
|
|
150
125
|
}
|
|
151
|
-
|
|
152
126
|
return {
|
|
153
127
|
path: childPath,
|
|
154
128
|
content: yield (0, _promises.readFile)(path, 'utf8')
|
|
155
129
|
};
|
|
156
130
|
});
|
|
157
|
-
|
|
158
131
|
return function (_x2) {
|
|
159
132
|
return _ref.apply(this, arguments);
|
|
160
133
|
};
|
|
@@ -163,18 +136,29 @@ function _readFiles() {
|
|
|
163
136
|
});
|
|
164
137
|
return _readFiles.apply(this, arguments);
|
|
165
138
|
}
|
|
166
|
-
|
|
167
139
|
function substituteEnvParams(input, reader) {
|
|
168
140
|
reader.each((key, value) => {
|
|
169
141
|
input = (0, _replaceall.default)(value, "${".concat(key, "}"), input);
|
|
170
142
|
});
|
|
171
143
|
return input;
|
|
172
144
|
}
|
|
173
|
-
|
|
174
145
|
function unSubstituteEnvParams(input, reader) {
|
|
175
146
|
reader.each((key, value) => {
|
|
176
147
|
input = (0, _replaceall.default)("${".concat(key, "}"), value, input);
|
|
177
148
|
});
|
|
178
149
|
return input;
|
|
179
150
|
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Check if a string is a valid URL
|
|
154
|
+
* @param {string} urlString input string to be evaluated
|
|
155
|
+
* @returns {boolean} true if a valid URL, false otherwise
|
|
156
|
+
*/
|
|
157
|
+
function isValidUrl(urlString) {
|
|
158
|
+
try {
|
|
159
|
+
return Boolean(new URL(urlString));
|
|
160
|
+
} catch (error) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
180
164
|
//# sourceMappingURL=OpsUtils.js.map
|