@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31
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 +275 -4
- package/esm/app.js +20 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +28 -6
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +7 -4
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +7 -4
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +7 -4
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +7 -4
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +7 -4
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +7 -4
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +7 -4
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +1 -1
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +7 -4
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +7 -4
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +7 -4
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +7 -4
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +7 -4
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +7 -4
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +7 -4
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +7 -4
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +1 -1
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +2 -2
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +45 -0
- package/esm/cli/admin/admin-federation-export.js.map +1 -0
- package/esm/cli/admin/admin-federation-import.js +49 -0
- package/esm/cli/admin/admin-federation-import.js.map +1 -0
- package/esm/cli/admin/admin-federation-list.js +29 -0
- package/esm/cli/admin/admin-federation-list.js.map +1 -0
- package/esm/cli/admin/admin-federation.js +13 -0
- package/esm/cli/admin/admin-federation.js.map +1 -0
- package/esm/cli/admin/admin-get-access-token.js +12 -6
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +11 -5
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
- package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
- package/esm/cli/admin/admin.js +6 -2
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +13 -6
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +7 -4
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -5
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +13 -6
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +7 -4
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -5
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -5
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +7 -4
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +1 -1
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -5
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +13 -6
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +7 -4
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -5
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -5
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +7 -4
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +1 -1
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +7 -4
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +13 -6
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +7 -4
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -5
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -5
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +7 -4
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +3 -3
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +2 -2
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +27 -8
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -5
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +17 -13
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +21 -17
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +12 -8
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -12
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authn/authn-describe.js +30 -0
- package/esm/cli/authn/authn-describe.js.map +1 -0
- package/esm/cli/authn/authn-export.js +26 -0
- package/esm/cli/authn/authn-export.js.map +1 -0
- package/esm/cli/authn/authn-import.js +26 -0
- package/esm/cli/authn/authn-import.js.map +1 -0
- package/esm/cli/authn/authn.js +12 -0
- package/esm/cli/authn/authn.js.map +1 -0
- package/esm/cli/authz/authz-policy-delete.js +11 -8
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +8 -5
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +12 -9
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +10 -7
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +9 -6
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-policy.js +1 -1
- package/esm/cli/authz/authz-policy.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +10 -7
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +8 -5
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +10 -7
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +10 -7
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +7 -4
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-set.js +1 -1
- package/esm/cli/authz/authz-set.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +12 -9
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +9 -6
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +11 -8
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +12 -9
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +8 -5
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz-type.js +1 -1
- package/esm/cli/authz/authz-type.js.map +1 -1
- package/esm/cli/authz/authz.js +2 -2
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +2 -2
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +2 -2
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +2 -2
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +31 -15
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +2 -2
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +10 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +11 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +8 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +1 -1
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +18 -8
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +8 -5
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +9 -6
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +8 -5
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +19 -5
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +7 -4
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +8 -5
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +8 -5
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +8 -5
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +9 -6
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +9 -6
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +8 -5
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +1 -1
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +2 -3
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -6
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +10 -7
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +10 -7
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +20 -6
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +7 -4
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +8 -5
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +8 -5
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +2 -3
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +2 -2
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +9 -6
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +21 -12
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +22 -13
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +7 -4
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +2 -2
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -8
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +15 -12
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +7 -4
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +2 -2
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +16 -10
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +8 -5
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +19 -10
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +12 -6
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +12 -6
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +21 -9
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +11 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +6 -3
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +23 -12
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +2 -2
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
- package/esm/cli/log/log-fetch.js.map +1 -0
- package/esm/cli/log/log-key-delete.js +35 -0
- package/esm/cli/log/log-key-delete.js.map +1 -0
- package/esm/cli/log/log-key-describe.js +22 -0
- package/esm/cli/log/log-key-describe.js.map +1 -0
- package/esm/cli/log/log-key-list.js +26 -0
- package/esm/cli/log/log-key-list.js.map +1 -0
- package/esm/cli/log/log-key.js +8 -0
- package/esm/cli/log/log-key.js.map +1 -0
- package/esm/cli/log/log-list.js +80 -0
- package/esm/cli/log/log-list.js.map +1 -0
- package/esm/cli/log/log-tail.js +77 -0
- package/esm/cli/log/log-tail.js.map +1 -0
- package/esm/cli/{logging/logs.js → log/log.js} +6 -3
- package/esm/cli/log/log.js.map +1 -0
- package/esm/cli/oauth/oauth-client-delete.js +22 -0
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
- package/esm/cli/oauth/oauth-client-describe.js +22 -0
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
- package/esm/cli/oauth/oauth-client-export.js +52 -0
- package/esm/cli/oauth/oauth-client-export.js.map +1 -0
- package/esm/cli/oauth/oauth-client-import.js +57 -0
- package/esm/cli/oauth/oauth-client-import.js.map +1 -0
- package/esm/cli/oauth/oauth-client-list.js +25 -0
- package/esm/cli/oauth/oauth-client-list.js.map +1 -0
- package/esm/cli/oauth/oauth-client.js +14 -0
- package/esm/cli/oauth/oauth-client.js.map +1 -0
- package/esm/cli/oauth/oauth.js +13 -0
- package/esm/cli/oauth/oauth.js.map +1 -0
- package/esm/cli/realm/realm-add-custom-domain.js +8 -5
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +8 -5
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +8 -5
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +2 -2
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +10 -7
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +15 -12
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +8 -5
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +1 -1
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +14 -7
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +8 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +10 -7
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +11 -8
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +8 -5
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +9 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +1 -1
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +2 -2
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +7 -4
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +7 -4
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +8 -5
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +9 -6
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +8 -5
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +2 -2
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +8 -5
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +9 -6
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +11 -9
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +7 -4
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +2 -2
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +57 -0
- package/esm/cli/shell/shell.js.map +1 -0
- package/esm/cli/theme/theme-delete.js +10 -7
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +11 -8
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +12 -9
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +7 -4
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +2 -2
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/help/SampleData.js +7 -0
- package/esm/help/SampleData.js.map +1 -0
- package/esm/launch.js +1 -1
- package/esm/launch.js.map +1 -1
- package/esm/loader.js +2 -2
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +225 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AgentOps.js +128 -87
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +315 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/AuthenticationSettingsOps.js +89 -0
- package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +72 -59
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +13 -6
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +76 -64
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +70 -84
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +74 -43
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +99 -67
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +92 -30
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +6 -3
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +51 -32
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +14 -22
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +84 -55
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +67 -43
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +18 -11
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +75 -66
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +76 -54
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +92 -31
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +106 -23
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +67 -41
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +62 -36
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +132 -41
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +1 -1
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/Wordwrap.js +1 -1
- package/esm/ops/utils/Wordwrap.js.map +1 -1
- package/esm/storage/StaticStorage.js +1 -1
- package/esm/storage/StaticStorage.js.map +1 -1
- package/esm/utils/Config.js +7 -4
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +9 -5
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +32 -66
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +19 -16
- package/esm/utils/Version.js.map +1 -1
- package/global-jest-setup.js +4 -0
- package/package.json +46 -35
- package/esm/cli/logging/logs-fetch.js.map +0 -1
- package/esm/cli/logging/logs-list.js +0 -49
- package/esm/cli/logging/logs-list.js.map +0 -1
- package/esm/cli/logging/logs-tail.js +0 -46
- package/esm/cli/logging/logs-tail.js.map +0 -1
- package/esm/cli/logging/logs.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
package/esm/ops/IdmOps.js
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import fse from 'fs-extra';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import propertiesReader from 'properties-reader';
|
|
6
6
|
import replaceall from 'replaceall';
|
|
7
|
-
import { frodo } from '@rockcarver/frodo-lib';
|
|
8
7
|
import { createProgressIndicator, printMessage, stopProgressIndicator } from '../utils/Console';
|
|
9
|
-
import { getTypedFilename } from '../utils/ExportImportUtils';
|
|
8
|
+
import { getTypedFilename, readFiles } from '../utils/ExportImportUtils';
|
|
9
|
+
const {
|
|
10
|
+
unSubstituteEnvParams,
|
|
11
|
+
areScriptHooksValid,
|
|
12
|
+
getFilePath
|
|
13
|
+
} = frodo.utils;
|
|
14
|
+
const {
|
|
15
|
+
testConnectorServers,
|
|
16
|
+
readConfigEntities,
|
|
17
|
+
readConfigEntity,
|
|
18
|
+
updateConfigEntity
|
|
19
|
+
} = frodo.idm.config;
|
|
20
|
+
const {
|
|
21
|
+
queryManagedObjects
|
|
22
|
+
} = frodo.idm.managed;
|
|
10
23
|
|
|
11
24
|
/**
|
|
12
25
|
* Warn about and list offline remote connector servers
|
|
13
26
|
*/
|
|
14
27
|
export async function warnAboutOfflineConnectorServers() {
|
|
15
28
|
try {
|
|
16
|
-
const all = await
|
|
29
|
+
const all = await testConnectorServers();
|
|
17
30
|
const offline = all.filter(status => !status.ok).map(status => status.name);
|
|
18
31
|
if (offline.length) {
|
|
19
32
|
printMessage(`\nThe following connector server(s) are offline and their connectors and configuration unavailable:\n${offline.join('\n')}`, 'warn');
|
|
@@ -29,15 +42,13 @@ export async function warnAboutOfflineConnectorServers() {
|
|
|
29
42
|
*/
|
|
30
43
|
export async function listAllConfigEntities() {
|
|
31
44
|
try {
|
|
32
|
-
const
|
|
33
|
-
configurations
|
|
34
|
-
} = await frodo.idm.config.getAllConfigEntities();
|
|
45
|
+
const configurations = await readConfigEntities();
|
|
35
46
|
for (const configEntity of configurations) {
|
|
36
47
|
printMessage(`${configEntity._id}`, 'data');
|
|
37
48
|
}
|
|
38
|
-
} catch (
|
|
39
|
-
printMessage(
|
|
40
|
-
printMessage(`Error getting config entities: ${
|
|
49
|
+
} catch (readConfigEntitiesError) {
|
|
50
|
+
printMessage(readConfigEntitiesError, 'error');
|
|
51
|
+
printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
|
|
41
52
|
}
|
|
42
53
|
}
|
|
43
54
|
|
|
@@ -51,8 +62,8 @@ export async function exportConfigEntity(id, file) {
|
|
|
51
62
|
if (!fileName) {
|
|
52
63
|
fileName = getTypedFilename(`${id}`, 'idm');
|
|
53
64
|
}
|
|
54
|
-
const configEntity = await
|
|
55
|
-
fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), err => {
|
|
65
|
+
const configEntity = await readConfigEntity(id);
|
|
66
|
+
fs.writeFile(getFilePath(fileName, true), JSON.stringify(configEntity, null, 2), err => {
|
|
56
67
|
if (err) {
|
|
57
68
|
return printMessage(`ERROR - can't save ${id} export to file`, 'error');
|
|
58
69
|
}
|
|
@@ -62,37 +73,31 @@ export async function exportConfigEntity(id, file) {
|
|
|
62
73
|
|
|
63
74
|
/**
|
|
64
75
|
* Export all IDM configuration objects into separate JSON files in a directory specified by <directory>
|
|
65
|
-
* @param {String} directory export directory
|
|
66
76
|
*/
|
|
67
|
-
export async function exportAllRawConfigEntities(
|
|
77
|
+
export async function exportAllRawConfigEntities() {
|
|
68
78
|
try {
|
|
69
|
-
const
|
|
70
|
-
configurations
|
|
71
|
-
} = await frodo.idm.config.getAllConfigEntities();
|
|
72
|
-
if (!fs.existsSync(directory)) {
|
|
73
|
-
fs.mkdirSync(directory);
|
|
74
|
-
}
|
|
79
|
+
const configurations = await readConfigEntities();
|
|
75
80
|
createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
|
|
76
81
|
const entityPromises = [];
|
|
77
82
|
for (const configEntity of configurations) {
|
|
78
|
-
entityPromises.push(
|
|
79
|
-
var
|
|
80
|
-
if (!(((
|
|
83
|
+
entityPromises.push(readConfigEntity(configEntity._id).catch(readConfigEntityError => {
|
|
84
|
+
var _readConfigEntityErro, _readConfigEntityErro2, _readConfigEntityErro3, _readConfigEntityErro4, _readConfigEntityErro5, _readConfigEntityErro6;
|
|
85
|
+
if (!(((_readConfigEntityErro = readConfigEntityError.response) === null || _readConfigEntityErro === void 0 ? void 0 : _readConfigEntityErro.status) === 403 && ((_readConfigEntityErro2 = readConfigEntityError.response) === null || _readConfigEntityErro2 === void 0 || (_readConfigEntityErro2 = _readConfigEntityErro2.data) === null || _readConfigEntityErro2 === void 0 ? void 0 : _readConfigEntityErro2.message) === 'This operation is not available in ForgeRock Identity Cloud.') && !(
|
|
81
86
|
// list of config entities, which do not exist by default or ever.
|
|
82
87
|
|
|
83
|
-
['script', 'notificationFactory', 'apiVersion', 'metrics', 'repo.init', 'endpoint/validateQueryFilter', 'endpoint/oauthproxy', 'external.rest', 'scheduler', 'org.apache.felix.fileinstall/openidm', 'cluster', 'endpoint/mappingDetails', 'fieldPolicy/teammember'].includes(configEntity._id) && ((
|
|
88
|
+
['script', 'notificationFactory', 'apiVersion', 'metrics', 'repo.init', 'endpoint/validateQueryFilter', 'endpoint/oauthproxy', 'external.rest', 'scheduler', 'org.apache.felix.fileinstall/openidm', 'cluster', 'endpoint/mappingDetails', 'fieldPolicy/teammember'].includes(configEntity._id) && ((_readConfigEntityErro3 = readConfigEntityError.response) === null || _readConfigEntityErro3 === void 0 ? void 0 : _readConfigEntityErro3.status) === 404 && ((_readConfigEntityErro4 = readConfigEntityError.response) === null || _readConfigEntityErro4 === void 0 || (_readConfigEntityErro4 = _readConfigEntityErro4.data) === null || _readConfigEntityErro4 === void 0 ? void 0 : _readConfigEntityErro4.reason) === 'Not Found') &&
|
|
84
89
|
// https://bugster.forgerock.org/jira/browse/OPENIDM-18270
|
|
85
|
-
!(((
|
|
86
|
-
var
|
|
87
|
-
printMessage((
|
|
88
|
-
printMessage(`Error getting config entity ${configEntity._id}: ${
|
|
90
|
+
!(((_readConfigEntityErro5 = readConfigEntityError.response) === null || _readConfigEntityErro5 === void 0 ? void 0 : _readConfigEntityErro5.status) === 404 && ((_readConfigEntityErro6 = readConfigEntityError.response) === null || _readConfigEntityErro6 === void 0 || (_readConfigEntityErro6 = _readConfigEntityErro6.data) === null || _readConfigEntityErro6 === void 0 ? void 0 : _readConfigEntityErro6.message) === 'No configuration exists for id org.apache.felix.fileinstall/openidm')) {
|
|
91
|
+
var _readConfigEntityErro7;
|
|
92
|
+
printMessage((_readConfigEntityErro7 = readConfigEntityError.response) === null || _readConfigEntityErro7 === void 0 ? void 0 : _readConfigEntityErro7.data, 'error');
|
|
93
|
+
printMessage(`Error getting config entity ${configEntity._id}: ${readConfigEntityError}`, 'error');
|
|
89
94
|
}
|
|
90
95
|
}));
|
|
91
96
|
}
|
|
92
97
|
const results = await Promise.all(entityPromises);
|
|
93
98
|
for (const item of results) {
|
|
94
99
|
if (item != null) {
|
|
95
|
-
fse.outputFile(`${
|
|
100
|
+
fse.outputFile(getFilePath(`${item._id}.json`, true), JSON.stringify(item, null, 2), err => {
|
|
96
101
|
if (err) {
|
|
97
102
|
return printMessage(`ERROR - can't save config ${item._id} to file - ${err}`, 'error');
|
|
98
103
|
}
|
|
@@ -100,19 +105,18 @@ export async function exportAllRawConfigEntities(directory) {
|
|
|
100
105
|
}
|
|
101
106
|
}
|
|
102
107
|
stopProgressIndicator('Exported config objects.', 'success');
|
|
103
|
-
} catch (
|
|
104
|
-
printMessage(
|
|
105
|
-
printMessage(`Error getting config entities: ${
|
|
108
|
+
} catch (readConfigEntitiesError) {
|
|
109
|
+
printMessage(readConfigEntitiesError, 'error');
|
|
110
|
+
printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
|
|
109
114
|
/**
|
|
110
115
|
* Export all IDM configuration objects
|
|
111
|
-
* @param {String} directory export directory
|
|
112
116
|
* @param {String} entitiesFile JSON file that specifies the config entities to export/import
|
|
113
117
|
* @param {String} envFile File that defines environment specific variables for replacement during configuration export/import
|
|
114
118
|
*/
|
|
115
|
-
export async function exportAllConfigEntities(
|
|
119
|
+
export async function exportAllConfigEntities(entitiesFile, envFile) {
|
|
116
120
|
let entriesToExport = [];
|
|
117
121
|
// read list of entities to export
|
|
118
122
|
fs.readFile(entitiesFile, 'utf8', async (err, data) => {
|
|
@@ -124,18 +128,12 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
|
|
|
124
128
|
// read list of configs to parameterize for environment specific values
|
|
125
129
|
const envParams = propertiesReader(envFile);
|
|
126
130
|
try {
|
|
127
|
-
const
|
|
128
|
-
configurations
|
|
129
|
-
} = await frodo.idm.config.getAllConfigEntities();
|
|
130
|
-
// create export directory if not exist
|
|
131
|
-
if (!fs.existsSync(directory)) {
|
|
132
|
-
fs.mkdirSync(directory);
|
|
133
|
-
}
|
|
131
|
+
const configurations = await readConfigEntities();
|
|
134
132
|
createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
|
|
135
133
|
const entityPromises = [];
|
|
136
134
|
for (const configEntity of configurations) {
|
|
137
135
|
if (entriesToExport.includes(configEntity._id)) {
|
|
138
|
-
entityPromises.push(
|
|
136
|
+
entityPromises.push(readConfigEntity(configEntity._id));
|
|
139
137
|
}
|
|
140
138
|
}
|
|
141
139
|
const results = await Promise.all(entityPromises);
|
|
@@ -145,7 +143,7 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
|
|
|
145
143
|
envParams.each((key, value) => {
|
|
146
144
|
configEntityString = replaceall(value, `\${${key}}`, configEntityString);
|
|
147
145
|
});
|
|
148
|
-
fse.outputFile(`${
|
|
146
|
+
fse.outputFile(getFilePath(`${item._id}.json`, true), configEntityString, error => {
|
|
149
147
|
if (err) {
|
|
150
148
|
return printMessage(`ERROR - can't save config ${item._id} to file - ${error}`, 'error');
|
|
151
149
|
}
|
|
@@ -153,9 +151,9 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
|
|
|
153
151
|
}
|
|
154
152
|
}
|
|
155
153
|
stopProgressIndicator(null, 'success');
|
|
156
|
-
} catch (
|
|
157
|
-
printMessage(
|
|
158
|
-
printMessage(`Error getting config entities: ${
|
|
154
|
+
} catch (readConfigEntitiesError) {
|
|
155
|
+
printMessage(readConfigEntitiesError, 'error');
|
|
156
|
+
printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
|
|
159
157
|
}
|
|
160
158
|
});
|
|
161
159
|
}
|
|
@@ -170,18 +168,18 @@ export async function importConfigEntityByIdFromFile(entityId, file, validate) {
|
|
|
170
168
|
if (!file) {
|
|
171
169
|
file = getTypedFilename(entityId, 'idm');
|
|
172
170
|
}
|
|
173
|
-
const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
|
|
171
|
+
const fileData = fs.readFileSync(path.resolve(process.cwd(), getFilePath(file)), 'utf8');
|
|
174
172
|
const entityData = JSON.parse(fileData);
|
|
175
|
-
const isValid =
|
|
173
|
+
const isValid = areScriptHooksValid(entityData);
|
|
176
174
|
if (validate && !isValid) {
|
|
177
175
|
printMessage('Invalid IDM configuration object', 'error');
|
|
178
176
|
return;
|
|
179
177
|
}
|
|
180
178
|
try {
|
|
181
|
-
await
|
|
182
|
-
} catch (
|
|
183
|
-
printMessage(
|
|
184
|
-
printMessage(`Error: ${
|
|
179
|
+
await updateConfigEntity(entityId, entityData);
|
|
180
|
+
} catch (updateConfigEntityError) {
|
|
181
|
+
printMessage(updateConfigEntityError, 'error');
|
|
182
|
+
printMessage(`Error: ${updateConfigEntityError}`, 'error');
|
|
185
183
|
}
|
|
186
184
|
}
|
|
187
185
|
|
|
@@ -191,32 +189,32 @@ export async function importConfigEntityByIdFromFile(entityId, file, validate) {
|
|
|
191
189
|
* @param validate validate script hooks
|
|
192
190
|
*/
|
|
193
191
|
export async function importConfigEntityFromFile(file, validate) {
|
|
194
|
-
const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
|
|
192
|
+
const fileData = fs.readFileSync(path.resolve(process.cwd(), getFilePath(file)), 'utf8');
|
|
195
193
|
const entityData = JSON.parse(fileData);
|
|
196
194
|
const entityId = entityData._id;
|
|
197
|
-
const isValid =
|
|
195
|
+
const isValid = areScriptHooksValid(entityData);
|
|
198
196
|
if (validate && !isValid) {
|
|
199
197
|
printMessage('Invalid IDM configuration object', 'error');
|
|
200
198
|
return;
|
|
201
199
|
}
|
|
202
200
|
try {
|
|
203
|
-
await
|
|
204
|
-
} catch (
|
|
205
|
-
printMessage(
|
|
206
|
-
printMessage(`Error: ${
|
|
201
|
+
await updateConfigEntity(entityId, entityData);
|
|
202
|
+
} catch (updateConfigEntityError) {
|
|
203
|
+
printMessage(updateConfigEntityError, 'error');
|
|
204
|
+
printMessage(`Error: ${updateConfigEntityError}`, 'error');
|
|
207
205
|
}
|
|
208
206
|
}
|
|
209
207
|
|
|
210
208
|
/**
|
|
211
209
|
* Import all IDM configuration objects from separate JSON files in a directory specified by <directory>
|
|
212
|
-
* @param baseDirectory export directory
|
|
213
210
|
* @param validate validate script hooks
|
|
214
211
|
*/
|
|
215
|
-
export async function importAllRawConfigEntities(
|
|
212
|
+
export async function importAllRawConfigEntities(validate) {
|
|
213
|
+
const baseDirectory = state.getDirectory();
|
|
216
214
|
if (!fs.existsSync(baseDirectory)) {
|
|
217
215
|
return;
|
|
218
216
|
}
|
|
219
|
-
const files = await
|
|
217
|
+
const files = await readFiles(baseDirectory);
|
|
220
218
|
const jsonFiles = files.filter(({
|
|
221
219
|
path
|
|
222
220
|
}) => path.toLowerCase().endsWith('.json')).map(({
|
|
@@ -231,7 +229,7 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
|
|
|
231
229
|
let everyScriptValid = true;
|
|
232
230
|
for (const file of jsonFiles) {
|
|
233
231
|
const jsObject = JSON.parse(file.content);
|
|
234
|
-
const isScriptValid =
|
|
232
|
+
const isScriptValid = areScriptHooksValid(jsObject);
|
|
235
233
|
if (!isScriptValid) {
|
|
236
234
|
printMessage(`Invalid script hook in ${file.path}`, 'error');
|
|
237
235
|
everyScriptValid = false;
|
|
@@ -242,7 +240,7 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
|
|
|
242
240
|
}
|
|
243
241
|
createProgressIndicator('indeterminate', undefined, 'Importing config objects...');
|
|
244
242
|
const entityPromises = jsonFiles.map(file => {
|
|
245
|
-
return
|
|
243
|
+
return updateConfigEntity(file.entityId, JSON.parse(file.content));
|
|
246
244
|
});
|
|
247
245
|
const results = await Promise.allSettled(entityPromises);
|
|
248
246
|
const errors = results.filter(result => result.status === 'rejected');
|
|
@@ -259,18 +257,18 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
|
|
|
259
257
|
|
|
260
258
|
/**
|
|
261
259
|
* Import all IDM configuration objects
|
|
262
|
-
* @param baseDirectory import directory
|
|
263
260
|
* @param entitiesFile JSON file that specifies the config entities to export/import
|
|
264
261
|
* @param envFile File that defines environment specific variables for replacement during configuration export/import
|
|
265
262
|
* @param validate validate script hooks
|
|
266
263
|
*/
|
|
267
|
-
export async function importAllConfigEntities(
|
|
264
|
+
export async function importAllConfigEntities(entitiesFile, envFile, validate) {
|
|
265
|
+
const baseDirectory = state.getDirectory();
|
|
268
266
|
if (!fs.existsSync(baseDirectory)) {
|
|
269
267
|
return;
|
|
270
268
|
}
|
|
271
269
|
const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;
|
|
272
270
|
const envReader = propertiesReader(envFile);
|
|
273
|
-
const files = await
|
|
271
|
+
const files = await readFiles(baseDirectory);
|
|
274
272
|
const jsonFiles = files.filter(({
|
|
275
273
|
path
|
|
276
274
|
}) => path.toLowerCase().endsWith('.json')).map(({
|
|
@@ -285,7 +283,7 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
|
|
|
285
283
|
let everyScriptValid = true;
|
|
286
284
|
for (const file of jsonFiles) {
|
|
287
285
|
const jsObject = JSON.parse(file.content);
|
|
288
|
-
const isScriptValid =
|
|
286
|
+
const isScriptValid = areScriptHooksValid(jsObject);
|
|
289
287
|
if (!isScriptValid) {
|
|
290
288
|
printMessage(`Invalid script hook in ${file.path}`, 'error');
|
|
291
289
|
everyScriptValid = false;
|
|
@@ -303,8 +301,8 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
|
|
|
303
301
|
entityId,
|
|
304
302
|
content
|
|
305
303
|
}) => {
|
|
306
|
-
const unsubstituted =
|
|
307
|
-
return
|
|
304
|
+
const unsubstituted = unSubstituteEnvParams(content, envReader);
|
|
305
|
+
return updateConfigEntity(entityId, JSON.parse(unsubstituted));
|
|
308
306
|
});
|
|
309
307
|
const results = await Promise.allSettled(entityPromises);
|
|
310
308
|
const errors = results.filter(result => result.status === 'rejected');
|
|
@@ -324,24 +322,12 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
|
|
|
324
322
|
* @param {String} type managed object type, e.g. alpha_user
|
|
325
323
|
*/
|
|
326
324
|
export async function countManagedObjects(type) {
|
|
327
|
-
let count = 0;
|
|
328
|
-
let result = {
|
|
329
|
-
result: [],
|
|
330
|
-
resultCount: 0,
|
|
331
|
-
pagedResultsCookie: null,
|
|
332
|
-
totalPagedResultsPolicy: 'NONE',
|
|
333
|
-
totalPagedResults: -1,
|
|
334
|
-
remainingPagedResults: -1
|
|
335
|
-
};
|
|
336
325
|
try {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
count += result.resultCount;
|
|
340
|
-
} while (result.pagedResultsCookie);
|
|
341
|
-
printMessage(`${type}: ${count}`);
|
|
326
|
+
const result = await queryManagedObjects(type);
|
|
327
|
+
printMessage(`${type}: ${result.length}`, 'data');
|
|
342
328
|
} catch (error) {
|
|
343
329
|
printMessage(error.response.data, 'error');
|
|
344
330
|
printMessage(`Error querying managed objects by type: ${error}`, 'error');
|
|
345
331
|
}
|
|
346
332
|
}
|
|
347
|
-
//# sourceMappingURL=IdmOps.js.map
|
|
333
|
+
//# sourceMappingURL=IdmOps.js.map
|
package/esm/ops/IdmOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdmOps.js","names":["fs","fse","path","propertiesReader","replaceall","frodo","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","warnAboutOfflineConnectorServers","all","idm","config","testConnectorServers","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","getAllConfigEntities","configEntity","_id","getAllConfigEntitiesError","exportConfigEntity","id","file","fileName","getConfigEntity","writeFile","JSON","stringify","err","exportAllRawConfigEntities","directory","existsSync","mkdirSync","undefined","entityPromises","push","catch","getConfigEntityError","_getConfigEntityError","_getConfigEntityError2","_getConfigEntityError3","_getConfigEntityError4","_getConfigEntityError5","_getConfigEntityError6","_getConfigEntityError7","_getConfigEntityError8","_getConfigEntityError9","response","data","includes","reason","_getConfigEntityError10","results","Promise","item","outputFile","exportAllConfigEntities","entitiesFile","envFile","entriesToExport","readFile","entriesData","parse","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","fileData","readFileSync","resolve","process","cwd","entityData","isValid","helper","script","validateScriptHooks","putConfigEntity","putConfigEntityError","importConfigEntityFromFile","importAllRawConfigEntities","baseDirectory","files","utils","readFiles","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","jsObject","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","unSubstituteEnvParams","countManagedObjects","type","count","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","queryAllManagedObjectsByType"],"sources":["ops/IdmOps.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport path from 'path';\nimport propertiesReader from 'properties-reader';\nimport replaceall from 'replaceall';\n\nimport { frodo } from '@rockcarver/frodo-lib';\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename } from '../utils/ExportImportUtils';\n\n/**\n * Warn about and list offline remote connector servers\n */\nexport async function warnAboutOfflineConnectorServers() {\n try {\n const all = await frodo.idm.config.testConnectorServers();\n const offline = all\n .filter((status) => !status.ok)\n .map((status) => status.name);\n if (offline.length) {\n printMessage(\n `\\nThe following connector server(s) are offline and their connectors and configuration unavailable:\\n${offline.join(\n '\\n'\n )}`,\n 'warn'\n );\n }\n } catch (error) {\n printMessage(error, 'error');\n printMessage(\n `Error getting offline connector servers: ${error.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all IDM configuration objects\n */\nexport async function listAllConfigEntities() {\n try {\n const { configurations } = await frodo.idm.config.getAllConfigEntities();\n for (const configEntity of configurations) {\n printMessage(`${configEntity._id}`, 'data');\n }\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export an IDM configuration object.\n * @param {String} id the desired configuration object\n * @param {String} file optional export file\n */\nexport async function exportConfigEntity(id, file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`${id}`, 'idm');\n }\n const configEntity = await frodo.idm.config.getConfigEntity(id);\n fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${id} export to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>\n * @param {String} directory export directory\n */\nexport async function exportAllRawConfigEntities(directory) {\n try {\n const { configurations } = await frodo.idm.config.getAllConfigEntities();\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n entityPromises.push(\n frodo.idm.config\n .getConfigEntity(configEntity._id)\n .catch((getConfigEntityError) => {\n if (\n !(\n getConfigEntityError.response?.status === 403 &&\n getConfigEntityError.response?.data?.message ===\n 'This operation is not available in ForgeRock Identity Cloud.'\n ) &&\n !(\n // list of config entities, which do not exist by default or ever.\n (\n [\n 'script',\n 'notificationFactory',\n 'apiVersion',\n 'metrics',\n 'repo.init',\n 'endpoint/validateQueryFilter',\n 'endpoint/oauthproxy',\n 'external.rest',\n 'scheduler',\n 'org.apache.felix.fileinstall/openidm',\n 'cluster',\n 'endpoint/mappingDetails',\n 'fieldPolicy/teammember',\n ].includes(configEntity._id) &&\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.reason === 'Not Found'\n )\n ) &&\n // https://bugster.forgerock.org/jira/browse/OPENIDM-18270\n !(\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.message ===\n 'No configuration exists for id org.apache.felix.fileinstall/openidm'\n )\n ) {\n printMessage(getConfigEntityError.response?.data, 'error');\n printMessage(\n `Error getting config entity ${configEntity._id}: ${getConfigEntityError}`,\n 'error'\n );\n }\n })\n );\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n fse.outputFile(\n `${directory}/${item._id}.json`,\n JSON.stringify(item, null, 2),\n (err) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${err}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator('Exported config objects.', 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export all IDM configuration objects\n * @param {String} directory export directory\n * @param {String} entitiesFile JSON file that specifies the config entities to export/import\n * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import\n */\nexport async function exportAllConfigEntities(\n directory,\n entitiesFile,\n envFile\n) {\n let entriesToExport = [];\n // read list of entities to export\n fs.readFile(entitiesFile, 'utf8', async (err, data) => {\n if (err) throw err;\n const entriesData = JSON.parse(data);\n entriesToExport = entriesData.idm;\n // console.log(`entriesToExport ${entriesToExport}`);\n\n // read list of configs to parameterize for environment specific values\n const envParams = propertiesReader(envFile);\n\n try {\n const { configurations } = await frodo.idm.config.getAllConfigEntities();\n // create export directory if not exist\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n if (entriesToExport.includes(configEntity._id)) {\n entityPromises.push(\n frodo.idm.config.getConfigEntity(configEntity._id)\n );\n }\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n let configEntityString = JSON.stringify(item, null, 2);\n envParams.each((key, value) => {\n configEntityString = replaceall(\n value,\n `\\${${key}}`,\n configEntityString\n );\n });\n fse.outputFile(\n `${directory}/${item._id}.json`,\n configEntityString,\n (error) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${error}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator(null, 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Import an IDM configuration object by id from file.\n * @param entityId the configuration object to import\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityByIdFromFile(\n entityId: string,\n file?: string,\n validate?: boolean\n) {\n if (!file) {\n file = getTypedFilename(entityId, 'idm');\n }\n\n const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n\n const entityData = JSON.parse(fileData);\n const isValid = frodo.helper.script.validateScriptHooks(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await frodo.idm.config.putConfigEntity(entityId, entityData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import IDM configuration object from file.\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityFromFile(\n file: string,\n validate?: boolean\n) {\n const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n const entityData = JSON.parse(fileData);\n const entityId = entityData._id;\n const isValid = frodo.helper.script.validateScriptHooks(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await frodo.idm.config.putConfigEntity(entityId, entityData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>\n * @param baseDirectory export directory\n * @param validate validate script hooks\n */\nexport async function importAllRawConfigEntities(\n baseDirectory: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const files = await frodo.helper.utils.readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ path, content }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles.map((file) => {\n return frodo.idm.config.putConfigEntity(file.entityId, file.content);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Import all IDM configuration objects\n * @param baseDirectory import directory\n * @param entitiesFile JSON file that specifies the config entities to export/import\n * @param envFile File that defines environment specific variables for replacement during configuration export/import\n * @param validate validate script hooks\n */\nexport async function importAllConfigEntities(\n baseDirectory: string,\n entitiesFile: string,\n envFile: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;\n\n const envReader = propertiesReader(envFile);\n\n const files = await frodo.helper.utils.readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ content, path }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles\n .filter(({ entityId }) => {\n return entriesToImport.includes(entityId);\n })\n .map(({ entityId, content }) => {\n const unsubstituted = frodo.helper.utils.unSubstituteEnvParams(\n content,\n envReader\n );\n return frodo.idm.config.putConfigEntity(entityId, unsubstituted);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Count number of managed objects of a given type\n * @param {String} type managed object type, e.g. alpha_user\n */\nexport async function countManagedObjects(type) {\n let count = 0;\n let result = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'NONE',\n totalPagedResults: -1,\n remainingPagedResults: -1,\n };\n try {\n do {\n result = await frodo.idm.config.queryAllManagedObjectsByType(\n type,\n [],\n result.pagedResultsCookie\n );\n count += result.resultCount;\n } while (result.pagedResultsCookie);\n printMessage(`${type}: ${count}`);\n } catch (error) {\n printMessage(error.response.data, 'error');\n printMessage(`Error querying managed objects by type: ${error}`, 'error');\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IdmOps.js","names":["frodo","state","fs","fse","path","propertiesReader","replaceall","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","readFiles","unSubstituteEnvParams","areScriptHooksValid","getFilePath","utils","testConnectorServers","readConfigEntities","readConfigEntity","updateConfigEntity","idm","config","queryManagedObjects","managed","warnAboutOfflineConnectorServers","all","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","configEntity","_id","readConfigEntitiesError","exportConfigEntity","id","file","fileName","writeFile","JSON","stringify","err","exportAllRawConfigEntities","undefined","entityPromises","push","catch","readConfigEntityError","_readConfigEntityErro","_readConfigEntityErro2","_readConfigEntityErro3","_readConfigEntityErro4","_readConfigEntityErro5","_readConfigEntityErro6","response","data","includes","reason","_readConfigEntityErro7","results","Promise","item","outputFile","exportAllConfigEntities","entitiesFile","envFile","entriesToExport","readFile","entriesData","parse","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","fileData","readFileSync","resolve","process","cwd","entityData","isValid","updateConfigEntityError","importConfigEntityFromFile","importAllRawConfigEntities","baseDirectory","getDirectory","existsSync","files","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","jsObject","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","countManagedObjects","type"],"sources":["../../src/ops/IdmOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport path from 'path';\nimport propertiesReader from 'properties-reader';\nimport replaceall from 'replaceall';\n\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename, readFiles } from '../utils/ExportImportUtils';\n\nconst { unSubstituteEnvParams, areScriptHooksValid, getFilePath } = frodo.utils;\nconst {\n testConnectorServers,\n readConfigEntities,\n readConfigEntity,\n updateConfigEntity,\n} = frodo.idm.config;\nconst { queryManagedObjects } = frodo.idm.managed;\n\n/**\n * Warn about and list offline remote connector servers\n */\nexport async function warnAboutOfflineConnectorServers() {\n try {\n const all = await testConnectorServers();\n const offline = all\n .filter((status) => !status.ok)\n .map((status) => status.name);\n if (offline.length) {\n printMessage(\n `\\nThe following connector server(s) are offline and their connectors and configuration unavailable:\\n${offline.join(\n '\\n'\n )}`,\n 'warn'\n );\n }\n } catch (error) {\n printMessage(error, 'error');\n printMessage(\n `Error getting offline connector servers: ${error.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all IDM configuration objects\n */\nexport async function listAllConfigEntities() {\n try {\n const configurations = await readConfigEntities();\n for (const configEntity of configurations) {\n printMessage(`${configEntity._id}`, 'data');\n }\n } catch (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export an IDM configuration object.\n * @param {String} id the desired configuration object\n * @param {String} file optional export file\n */\nexport async function exportConfigEntity(id, file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`${id}`, 'idm');\n }\n const configEntity = await readConfigEntity(id);\n fs.writeFile(\n getFilePath(fileName, true),\n JSON.stringify(configEntity, null, 2),\n (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${id} export to file`, 'error');\n }\n return '';\n }\n );\n}\n\n/**\n * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>\n */\nexport async function exportAllRawConfigEntities() {\n try {\n const configurations = await readConfigEntities();\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n entityPromises.push(\n readConfigEntity(configEntity._id).catch((readConfigEntityError) => {\n if (\n !(\n readConfigEntityError.response?.status === 403 &&\n readConfigEntityError.response?.data?.message ===\n 'This operation is not available in ForgeRock Identity Cloud.'\n ) &&\n !(\n // list of config entities, which do not exist by default or ever.\n (\n [\n 'script',\n 'notificationFactory',\n 'apiVersion',\n 'metrics',\n 'repo.init',\n 'endpoint/validateQueryFilter',\n 'endpoint/oauthproxy',\n 'external.rest',\n 'scheduler',\n 'org.apache.felix.fileinstall/openidm',\n 'cluster',\n 'endpoint/mappingDetails',\n 'fieldPolicy/teammember',\n ].includes(configEntity._id) &&\n readConfigEntityError.response?.status === 404 &&\n readConfigEntityError.response?.data?.reason === 'Not Found'\n )\n ) &&\n // https://bugster.forgerock.org/jira/browse/OPENIDM-18270\n !(\n readConfigEntityError.response?.status === 404 &&\n readConfigEntityError.response?.data?.message ===\n 'No configuration exists for id org.apache.felix.fileinstall/openidm'\n )\n ) {\n printMessage(readConfigEntityError.response?.data, 'error');\n printMessage(\n `Error getting config entity ${configEntity._id}: ${readConfigEntityError}`,\n 'error'\n );\n }\n })\n );\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n fse.outputFile(\n getFilePath(`${item._id}.json`, true),\n JSON.stringify(item, null, 2),\n (err) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${err}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator('Exported config objects.', 'success');\n } catch (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export all IDM configuration objects\n * @param {String} entitiesFile JSON file that specifies the config entities to export/import\n * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import\n */\nexport async function exportAllConfigEntities(entitiesFile, envFile) {\n let entriesToExport = [];\n // read list of entities to export\n fs.readFile(entitiesFile, 'utf8', async (err, data) => {\n if (err) throw err;\n const entriesData = JSON.parse(data);\n entriesToExport = entriesData.idm;\n // console.log(`entriesToExport ${entriesToExport}`);\n\n // read list of configs to parameterize for environment specific values\n const envParams = propertiesReader(envFile);\n\n try {\n const configurations = await readConfigEntities();\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n if (entriesToExport.includes(configEntity._id)) {\n entityPromises.push(readConfigEntity(configEntity._id));\n }\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n let configEntityString = JSON.stringify(item, null, 2);\n envParams.each((key, value) => {\n configEntityString = replaceall(\n value,\n `\\${${key}}`,\n configEntityString\n );\n });\n fse.outputFile(\n getFilePath(`${item._id}.json`, true),\n configEntityString,\n (error) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${error}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator(null, 'success');\n } catch (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Import an IDM configuration object by id from file.\n * @param entityId the configuration object to import\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityByIdFromFile(\n entityId: string,\n file?: string,\n validate?: boolean\n) {\n if (!file) {\n file = getTypedFilename(entityId, 'idm');\n }\n\n const fileData = fs.readFileSync(\n path.resolve(process.cwd(), getFilePath(file)),\n 'utf8'\n );\n\n const entityData = JSON.parse(fileData);\n const isValid = areScriptHooksValid(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await updateConfigEntity(entityId, entityData);\n } catch (updateConfigEntityError) {\n printMessage(updateConfigEntityError, 'error');\n printMessage(`Error: ${updateConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import IDM configuration object from file.\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityFromFile(\n file: string,\n validate?: boolean\n) {\n const fileData = fs.readFileSync(\n path.resolve(process.cwd(), getFilePath(file)),\n 'utf8'\n );\n const entityData = JSON.parse(fileData);\n const entityId = entityData._id;\n const isValid = areScriptHooksValid(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await updateConfigEntity(entityId, entityData);\n } catch (updateConfigEntityError) {\n printMessage(updateConfigEntityError, 'error');\n printMessage(`Error: ${updateConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>\n * @param validate validate script hooks\n */\nexport async function importAllRawConfigEntities(validate?: boolean) {\n const baseDirectory = state.getDirectory();\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ path, content }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = areScriptHooksValid(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles.map((file) => {\n return updateConfigEntity(file.entityId, JSON.parse(file.content));\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Import all IDM configuration objects\n * @param entitiesFile JSON file that specifies the config entities to export/import\n * @param envFile File that defines environment specific variables for replacement during configuration export/import\n * @param validate validate script hooks\n */\nexport async function importAllConfigEntities(\n entitiesFile: string,\n envFile: string,\n validate?: boolean\n) {\n const baseDirectory = state.getDirectory();\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;\n\n const envReader = propertiesReader(envFile);\n\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ content, path }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = areScriptHooksValid(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles\n .filter(({ entityId }) => {\n return entriesToImport.includes(entityId);\n })\n .map(({ entityId, content }) => {\n const unsubstituted = unSubstituteEnvParams(content, envReader);\n return updateConfigEntity(entityId, JSON.parse(unsubstituted));\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Count number of managed objects of a given type\n * @param {String} type managed object type, e.g. alpha_user\n */\nexport async function countManagedObjects(type: string) {\n try {\n const result = await queryManagedObjects(type);\n printMessage(`${type}: ${result.length}`, 'data');\n } catch (error) {\n printMessage(error.response.data, 'error');\n printMessage(`Error querying managed objects by type: ${error}`, 'error');\n }\n}\n"],"mappings":"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"}
|