@rockcarver/frodo-cli 2.0.0-50 → 2.0.0-52
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 +14 -1
- package/esm/app.js +7 -2
- package/esm/app.js.map +1 -1
- package/esm/cli/_template/something-delete.js +1 -4
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +1 -4
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +1 -4
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +1 -4
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +1 -4
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +1 -4
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +1 -4
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-export.js +1 -4
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +1 -4
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +1 -4
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +1 -4
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +1 -4
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +1 -4
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +1 -4
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +1 -4
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +4 -9
- 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 +47 -54
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +1 -4
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +2 -5
- package/esm/cli/admin/admin-federation-export.js.map +1 -1
- package/esm/cli/admin/admin-federation-import.js +2 -5
- package/esm/cli/admin/admin-federation-import.js.map +1 -1
- package/esm/cli/admin/admin-federation-list.js +2 -5
- package/esm/cli/admin/admin-federation-list.js.map +1 -1
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +2 -4
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +1 -3
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +5 -9
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +5 -9
- 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 +5 -12
- 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 +5 -12
- 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 +4 -12
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +4 -9
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +5 -9
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +5 -9
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +5 -9
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-train-auto-access-model.js +1 -3
- package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +9 -24
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +1 -4
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +7 -7
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +8 -23
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +1 -4
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +7 -7
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +9 -8
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +3 -5
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-import.js +9 -8
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +8 -23
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +1 -4
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +7 -7
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +9 -8
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +3 -5
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-list.js +3 -5
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +8 -23
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +1 -4
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +7 -7
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +9 -8
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +3 -5
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/app/app-delete.js +5 -8
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +1 -4
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +7 -10
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +9 -12
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +3 -5
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/authn/authn-describe.js +1 -4
- package/esm/cli/authn/authn-describe.js.map +1 -1
- package/esm/cli/authn/authn-export.js +1 -4
- package/esm/cli/authn/authn-export.js.map +1 -1
- package/esm/cli/authn/authn-import.js +1 -4
- package/esm/cli/authn/authn-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-delete.js +1 -4
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +1 -4
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +1 -4
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +1 -4
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +1 -4
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +1 -4
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +1 -4
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +1 -4
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +1 -4
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +1 -4
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +1 -4
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +1 -4
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +1 -4
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +1 -4
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +1 -4
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/config/config-delete.js +1 -4
- package/esm/cli/config/config-delete.js.map +1 -1
- package/esm/cli/config/config-describe.js +1 -4
- package/esm/cli/config/config-describe.js.map +1 -1
- package/esm/cli/config/config-export.js +2 -4
- package/esm/cli/config/config-export.js.map +1 -1
- package/esm/cli/config/config-import.js +2 -4
- package/esm/cli/config/config-import.js.map +1 -1
- package/esm/cli/config/config-list.js +1 -4
- package/esm/cli/config/config-list.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +7 -1
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-save.js +10 -12
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/email/email-template-export.js +8 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +9 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +3 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +1 -3
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +2 -5
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +2 -5
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +2 -5
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +3 -5
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +1 -4
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +2 -5
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +2 -5
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +2 -5
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +2 -5
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +2 -5
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +2 -5
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +2 -5
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +2 -5
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +2 -5
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +2 -5
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +3 -5
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +1 -4
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +2 -5
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +2 -5
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/idm/idm-count.js +3 -5
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +8 -7
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +10 -8
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +3 -5
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idp/idp-export.js +8 -7
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +10 -8
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +4 -5
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/info/info.js +1 -3
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +7 -10
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +16 -12
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +1 -4
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +1 -4
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +7 -7
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +9 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +4 -5
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +4 -5
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/log/log-fetch.js +7 -5
- package/esm/cli/log/log-fetch.js.map +1 -1
- package/esm/cli/log/log-key-delete.js +1 -4
- package/esm/cli/log/log-key-delete.js.map +1 -1
- package/esm/cli/log/log-key-describe.js +1 -4
- package/esm/cli/log/log-key-describe.js.map +1 -1
- package/esm/cli/log/log-key-list.js +1 -4
- package/esm/cli/log/log-key-list.js.map +1 -1
- package/esm/cli/log/log-list.js +13 -6
- package/esm/cli/log/log-list.js.map +1 -1
- package/esm/cli/log/log-tail.js +7 -5
- package/esm/cli/log/log-tail.js.map +1 -1
- package/esm/cli/oauth/oauth-client-delete.js +1 -4
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -1
- package/esm/cli/oauth/oauth-client-describe.js +1 -4
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -1
- package/esm/cli/oauth/oauth-client-export.js +7 -10
- package/esm/cli/oauth/oauth-client-export.js.map +1 -1
- package/esm/cli/oauth/oauth-client-import.js +9 -12
- package/esm/cli/oauth/oauth-client-import.js.map +1 -1
- package/esm/cli/oauth/oauth-client-list.js +3 -5
- package/esm/cli/oauth/oauth-client-list.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +2 -4
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +1 -3
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +1 -4
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +1 -3
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +2 -4
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +2 -4
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +2 -4
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +1 -3
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +4 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +8 -7
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +10 -8
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +4 -5
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +12 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/script/script-delete.js +12 -8
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +1 -4
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +10 -17
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +21 -18
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +2 -4
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/service/service-delete.js +5 -6
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +7 -7
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +9 -8
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +3 -5
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/shell/shell.js +3 -7
- package/esm/cli/shell/shell.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +9 -8
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +10 -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 +4 -5
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/ops/AdminOps.js +790 -3
- package/esm/ops/AdminOps.js.map +1 -1
- package/esm/ops/AgentOps.js +638 -305
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +91 -79
- package/esm/ops/ApplicationOps.js.map +1 -1
- package/esm/ops/AuthenticateOps.js +23 -0
- package/esm/ops/AuthenticateOps.js.map +1 -0
- package/esm/ops/AuthenticationSettingsOps.js +22 -23
- package/esm/ops/AuthenticationSettingsOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +52 -55
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConfigOps.js +100 -84
- package/esm/ops/ConfigOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +9 -7
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +64 -47
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +149 -117
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +76 -46
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +333 -238
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +15 -23
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +43 -36
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +104 -108
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +72 -78
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +84 -99
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +132 -88
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +90 -80
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +125 -87
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +170 -139
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/{AdminFederationOps.js → cloud/AdminFederationOps.js} +10 -16
- package/esm/ops/cloud/AdminFederationOps.js.map +1 -0
- package/esm/ops/{SecretsOps.js → cloud/SecretsOps.js} +123 -129
- package/esm/ops/cloud/SecretsOps.js.map +1 -0
- package/esm/ops/{VariablesOps.js → cloud/VariablesOps.js} +48 -52
- package/esm/ops/cloud/VariablesOps.js.map +1 -0
- package/esm/ops/templates/OAuth2ClientTemplate.json +270 -0
- package/esm/ops/templates/OAuth2TrustedJwtIssuerTemplate.json +38 -0
- package/esm/ops/templates/OrgModelUserAttributesTemplate.json +149 -0
- package/esm/ops/templates/autoaccess/IPAddresses.json +202 -0
- package/esm/ops/templates/autoaccess/UserAgents.json +35 -0
- package/esm/ops/templates/autoaccess/Usernames.json +203 -0
- package/esm/ops/templates/cloud/GenericExtensionAttributesTemplate.json +392 -0
- package/esm/ops/templates/cloud/managed.json +4119 -0
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/utils/Console.js +31 -0
- package/esm/utils/Console.js.map +1 -1
- package/package.json +11 -6
- package/esm/ops/AdminFederationOps.js.map +0 -1
- package/esm/ops/SecretsOps.js.map +0 -1
- package/esm/ops/VariablesOps.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
1
|
+
import { frodo, FrodoError, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import { createProgressIndicator, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
|
|
3
|
+
import { createProgressIndicator, createTable, debugMessage, failSpinner, printError, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
|
|
4
4
|
const {
|
|
5
5
|
getTypedFilename,
|
|
6
6
|
titleCase,
|
|
@@ -19,6 +19,8 @@ const {
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* List OAuth2 clients
|
|
22
|
+
* @param [long=false] list with additional details
|
|
23
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
22
24
|
*/
|
|
23
25
|
export async function listOAuth2Clients(long = false) {
|
|
24
26
|
try {
|
|
@@ -47,14 +49,17 @@ export async function listOAuth2Clients(long = false) {
|
|
|
47
49
|
]);
|
|
48
50
|
});
|
|
49
51
|
printMessage(table.toString(), 'data');
|
|
52
|
+
return true;
|
|
50
53
|
} else {
|
|
51
54
|
clients.forEach(client => {
|
|
52
55
|
printMessage(`${client._id}`, 'data');
|
|
53
56
|
});
|
|
57
|
+
return true;
|
|
54
58
|
}
|
|
55
59
|
} catch (error) {
|
|
56
|
-
|
|
60
|
+
printError(error);
|
|
57
61
|
}
|
|
62
|
+
return false;
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
/**
|
|
@@ -69,7 +74,6 @@ export async function exportOAuth2ClientToFile(clientId, file, includeMeta = tru
|
|
|
69
74
|
useStringArrays: true,
|
|
70
75
|
deps: true
|
|
71
76
|
}) {
|
|
72
|
-
let outcome = false;
|
|
73
77
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);
|
|
74
78
|
showSpinner(`Exporting ${clientId}...`);
|
|
75
79
|
try {
|
|
@@ -81,12 +85,13 @@ export async function exportOAuth2ClientToFile(clientId, file, includeMeta = tru
|
|
|
81
85
|
const exportData = await exportOAuth2Client(clientId, options);
|
|
82
86
|
saveJsonToFile(exportData, filePath, includeMeta);
|
|
83
87
|
succeedSpinner(`Exported ${clientId} to ${filePath}.`);
|
|
84
|
-
|
|
88
|
+
return true;
|
|
85
89
|
} catch (error) {
|
|
86
|
-
failSpinner(`Error exporting ${clientId}
|
|
90
|
+
failSpinner(`Error exporting ${clientId}`);
|
|
91
|
+
printError(error);
|
|
87
92
|
}
|
|
88
93
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);
|
|
89
|
-
return
|
|
94
|
+
return false;
|
|
90
95
|
}
|
|
91
96
|
|
|
92
97
|
/**
|
|
@@ -100,7 +105,6 @@ export async function exportOAuth2ClientsToFile(file, includeMeta = true, option
|
|
|
100
105
|
useStringArrays: true,
|
|
101
106
|
deps: true
|
|
102
107
|
}) {
|
|
103
|
-
let outcome = false;
|
|
104
108
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
|
|
105
109
|
showSpinner(`Exporting all clients...`);
|
|
106
110
|
try {
|
|
@@ -112,13 +116,13 @@ export async function exportOAuth2ClientsToFile(file, includeMeta = true, option
|
|
|
112
116
|
const exportData = await exportOAuth2Clients(options);
|
|
113
117
|
saveJsonToFile(exportData, filePath, includeMeta);
|
|
114
118
|
succeedSpinner(`Exported all clients to ${filePath}.`);
|
|
115
|
-
|
|
119
|
+
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end]`);
|
|
120
|
+
return true;
|
|
116
121
|
} catch (error) {
|
|
117
122
|
failSpinner(`Error exporting all clients`);
|
|
118
|
-
|
|
123
|
+
printError(error);
|
|
119
124
|
}
|
|
120
|
-
|
|
121
|
-
return outcome;
|
|
125
|
+
return false;
|
|
122
126
|
}
|
|
123
127
|
|
|
124
128
|
/**
|
|
@@ -148,13 +152,17 @@ export async function exportOAuth2ClientsToFiles(includeMeta = true, options = {
|
|
|
148
152
|
updateProgressIndicator(indicatorId, `Error exporting ${client._id}.`);
|
|
149
153
|
}
|
|
150
154
|
}
|
|
155
|
+
if (errors.length > 0) {
|
|
156
|
+
throw new FrodoError(`Error exporting oauth2 clients`, errors);
|
|
157
|
+
}
|
|
151
158
|
stopProgressIndicator(indicatorId, `Export complete.`);
|
|
159
|
+
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);
|
|
160
|
+
return true;
|
|
152
161
|
} catch (error) {
|
|
153
|
-
errors.push(error);
|
|
154
162
|
stopProgressIndicator(indicatorId, `Error exporting client(s) to file(s)`);
|
|
163
|
+
printError(error);
|
|
155
164
|
}
|
|
156
|
-
|
|
157
|
-
return 0 === errors.length;
|
|
165
|
+
return false;
|
|
158
166
|
}
|
|
159
167
|
|
|
160
168
|
/**
|
|
@@ -167,21 +175,20 @@ export async function exportOAuth2ClientsToFiles(includeMeta = true, options = {
|
|
|
167
175
|
export async function importOAuth2ClientFromFile(clientId, file, options = {
|
|
168
176
|
deps: true
|
|
169
177
|
}) {
|
|
170
|
-
let outcome = false;
|
|
171
178
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);
|
|
172
179
|
showSpinner(`Importing ${clientId}...`);
|
|
173
180
|
try {
|
|
174
181
|
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
175
182
|
const fileData = JSON.parse(data);
|
|
176
183
|
await importOAuth2Client(clientId, fileData, options);
|
|
177
|
-
outcome = true;
|
|
178
184
|
succeedSpinner(`Imported ${clientId}.`);
|
|
185
|
+
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);
|
|
186
|
+
return true;
|
|
179
187
|
} catch (error) {
|
|
180
188
|
failSpinner(`Error importing ${clientId}.`);
|
|
181
|
-
|
|
189
|
+
printError(error);
|
|
182
190
|
}
|
|
183
|
-
|
|
184
|
-
return outcome;
|
|
191
|
+
return false;
|
|
185
192
|
}
|
|
186
193
|
|
|
187
194
|
/**
|
|
@@ -193,7 +200,6 @@ export async function importOAuth2ClientFromFile(clientId, file, options = {
|
|
|
193
200
|
export async function importFirstOAuth2ClientFromFile(file, options = {
|
|
194
201
|
deps: true
|
|
195
202
|
}) {
|
|
196
|
-
let outcome = false;
|
|
197
203
|
debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);
|
|
198
204
|
const filePath = getFilePath(file);
|
|
199
205
|
showSpinner(`Importing ${filePath}...`);
|
|
@@ -201,14 +207,14 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
|
|
|
201
207
|
const data = fs.readFileSync(filePath, 'utf8');
|
|
202
208
|
const fileData = JSON.parse(data);
|
|
203
209
|
await importFirstOAuth2Client(fileData, options);
|
|
204
|
-
outcome = true;
|
|
205
210
|
succeedSpinner(`Imported ${filePath}.`);
|
|
211
|
+
debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);
|
|
212
|
+
return true;
|
|
206
213
|
} catch (error) {
|
|
207
214
|
failSpinner(`Error importing ${filePath}.`);
|
|
208
|
-
|
|
215
|
+
printError(error);
|
|
209
216
|
}
|
|
210
|
-
|
|
211
|
-
return outcome;
|
|
217
|
+
return false;
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
/**
|
|
@@ -220,7 +226,6 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
|
|
|
220
226
|
export async function importOAuth2ClientsFromFile(file, options = {
|
|
221
227
|
deps: true
|
|
222
228
|
}) {
|
|
223
|
-
let outcome = false;
|
|
224
229
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);
|
|
225
230
|
const filePath = getFilePath(file);
|
|
226
231
|
showSpinner(`Importing ${filePath}...`);
|
|
@@ -228,14 +233,14 @@ export async function importOAuth2ClientsFromFile(file, options = {
|
|
|
228
233
|
const data = fs.readFileSync(filePath, 'utf8');
|
|
229
234
|
const clientData = JSON.parse(data);
|
|
230
235
|
await importOAuth2Clients(clientData, options);
|
|
231
|
-
outcome = true;
|
|
232
236
|
succeedSpinner(`Imported ${filePath}.`);
|
|
237
|
+
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);
|
|
238
|
+
return true;
|
|
233
239
|
} catch (error) {
|
|
234
240
|
failSpinner(`Error importing ${filePath}.`);
|
|
235
|
-
|
|
241
|
+
printError(error);
|
|
236
242
|
}
|
|
237
|
-
|
|
238
|
-
return outcome;
|
|
243
|
+
return false;
|
|
239
244
|
}
|
|
240
245
|
|
|
241
246
|
/**
|
|
@@ -265,16 +270,18 @@ export async function importOAuth2ClientsFromFiles(options = {
|
|
|
265
270
|
} catch (error) {
|
|
266
271
|
errors.push(error);
|
|
267
272
|
updateProgressIndicator(indicatorId, `Error importing client(s) from ${file}`);
|
|
268
|
-
printMessage(error, 'error');
|
|
269
273
|
}
|
|
270
274
|
}
|
|
275
|
+
if (errors.length > 0) {
|
|
276
|
+
throw new FrodoError(`Error importing oauth2 clients`, errors);
|
|
277
|
+
}
|
|
271
278
|
stopProgressIndicator(indicatorId, `Finished importing ${total} client(s) from ${files.length} file(s).`);
|
|
279
|
+
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);
|
|
280
|
+
return true;
|
|
272
281
|
} catch (error) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
printMessage(error, 'error');
|
|
282
|
+
stopProgressIndicator(indicatorId, `Error importing oauth2 clients.`);
|
|
283
|
+
printError(error);
|
|
276
284
|
}
|
|
277
|
-
|
|
278
|
-
return 0 === errors.length;
|
|
285
|
+
return false;
|
|
279
286
|
}
|
|
280
287
|
//# sourceMappingURL=OAuth2ClientOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","titleCase","saveJsonToFile","getFilePath","getWorkingDirectory","utils","readOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","includeMeta","options","useStringArrays","deps","outcome","fileName","filePath","exportData","message","exportOAuth2ClientsToFile","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","indicatorId","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","clientData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Readable } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport fs from 'fs';\n\nimport {\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getTypedFilename,\n titleCase,\n saveJsonToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await readOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as Readable<string[]>)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as Readable<string[]>).join(\n '\\n'\n ),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing oauth2 clients - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${clientId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all clients to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const clients = await readOAuth2Clients();\n indicatorId = createProgressIndicator(\n 'determinate',\n clients.length,\n 'Exporting clients...'\n );\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${client._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const clientData = JSON.parse(data);\n await importOAuth2Clients(clientData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.oauth2.app.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing clients...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} client(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing client(s) from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing client(s) from file(s).`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","FrodoError","state","fs","createProgressIndicator","createTable","debugMessage","failSpinner","printError","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","titleCase","saveJsonToFile","getFilePath","getWorkingDirectory","utils","readOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","includeMeta","options","useStringArrays","deps","fileName","filePath","exportData","exportOAuth2ClientsToFile","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","indicatorId","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","clientData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, FrodoError, state } from '@rockcarver/frodo-lib';\nimport { Readable } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport fs from 'fs';\n\nimport {\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printError,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getTypedFilename,\n titleCase,\n saveJsonToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n * @param [long=false] list with additional details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await readOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as Readable<string[]>)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as Readable<string[]>).join(\n '\\n'\n ),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n return true;\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n return true;\n }\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n includeMeta: boolean = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${clientId} to ${filePath}.`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}`);\n printError(error);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return false;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n includeMeta: boolean = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all clients to ${filePath}.`);\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printError(error);\n }\n return false;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n includeMeta: boolean = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const clients = await readOAuth2Clients();\n indicatorId = createProgressIndicator(\n 'determinate',\n clients.length,\n 'Exporting clients...'\n );\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${client._id}.`);\n }\n }\n if (errors.length > 0) {\n throw new FrodoError(`Error exporting oauth2 clients`, errors);\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error exporting client(s) to file(s)`);\n printError(error);\n }\n return false;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n succeedSpinner(`Imported ${clientId}.`);\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return true;\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printError(error);\n }\n return false;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstOAuth2Client(fileData, options);\n succeedSpinner(`Imported ${filePath}.`);\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return true;\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printError(error);\n }\n return false;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const clientData = JSON.parse(data);\n await importOAuth2Clients(clientData, options);\n succeedSpinner(`Imported ${filePath}.`);\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return true;\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printError(error);\n }\n return false;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.oauth2.app.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing clients...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} client(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing client(s) from ${file}`\n );\n }\n }\n if (errors.length > 0) {\n throw new FrodoError(`Error importing oauth2 clients`, errors);\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing oauth2 clients.`);\n printError(error);\n }\n return false;\n}\n"],"mappings":"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"}
|