@rockcarver/frodo-cli 2.0.0-2 → 2.0.0-21
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 +186 -3
- package/esm/app.js +14 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +18 -4
- 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 +12 -6
- 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 +10 -4
- 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 +10 -4
- 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 +11 -5
- 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.js +3 -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 +1 -1
- 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/authz/authz-policy-delete.js +10 -7
- 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 +9 -6
- 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 +10 -7
- 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 +7 -4
- 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 +1 -1
- 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 +9 -6
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +8 -5
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +7 -4
- 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 +1 -1
- 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 +10 -7
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +11 -8
- 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 +18 -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 +10 -7
- 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 +11 -8
- 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 +10 -7
- 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 +216 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AgentOps.js +88 -54
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +309 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +25 -13
- 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 +53 -47
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +58 -64
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +48 -25
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +108 -43
- 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 +29 -16
- 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 +60 -28
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +39 -22
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +15 -8
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +43 -27
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +56 -42
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +72 -18
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +33 -18
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +49 -28
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +42 -22
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +37 -28
- 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/package.json +45 -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
|
@@ -2,6 +2,22 @@ import { frodo, state } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { createObjectTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
getRealmName
|
|
7
|
+
} = frodo.utils;
|
|
8
|
+
const {
|
|
9
|
+
readResourceTypes,
|
|
10
|
+
readResourceType,
|
|
11
|
+
readResourceTypeByName,
|
|
12
|
+
exportResourceType,
|
|
13
|
+
exportResourceTypeByName,
|
|
14
|
+
exportResourceTypes,
|
|
15
|
+
importResourceType,
|
|
16
|
+
importResourceTypeByName,
|
|
17
|
+
importFirstResourceType,
|
|
18
|
+
importResourceTypes
|
|
19
|
+
} = frodo.authz.resourceType;
|
|
20
|
+
|
|
5
21
|
/**
|
|
6
22
|
* List resource types
|
|
7
23
|
* @param {boolean} long more fields
|
|
@@ -10,7 +26,7 @@ import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImpo
|
|
|
10
26
|
export async function listResourceTypes(long = false) {
|
|
11
27
|
let outcome = false;
|
|
12
28
|
try {
|
|
13
|
-
const resourceTypes = await
|
|
29
|
+
const resourceTypes = await readResourceTypes();
|
|
14
30
|
resourceTypes.sort((a, b) => a.name.localeCompare(b.name));
|
|
15
31
|
if (long) {
|
|
16
32
|
const table = createTable(['Name', 'Description', 'Uuid']);
|
|
@@ -40,7 +56,7 @@ export async function listResourceTypes(long = false) {
|
|
|
40
56
|
export async function describeResourceType(resourceTypeUuid, json = false) {
|
|
41
57
|
let outcome = false;
|
|
42
58
|
try {
|
|
43
|
-
const resourceType = await
|
|
59
|
+
const resourceType = await readResourceType(resourceTypeUuid);
|
|
44
60
|
if (json) {
|
|
45
61
|
printMessage(resourceType, 'data');
|
|
46
62
|
} else {
|
|
@@ -53,8 +69,8 @@ export async function describeResourceType(resourceTypeUuid, json = false) {
|
|
|
53
69
|
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404) {
|
|
54
70
|
printMessage(`Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`, 'error');
|
|
55
71
|
} else {
|
|
56
|
-
var _error$response2
|
|
57
|
-
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0
|
|
72
|
+
var _error$response2;
|
|
73
|
+
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 || (_error$response2 = _error$response2.data) === null || _error$response2 === void 0 ? void 0 : _error$response2.message) || error.message, 'error');
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
return outcome;
|
|
@@ -69,7 +85,7 @@ export async function describeResourceType(resourceTypeUuid, json = false) {
|
|
|
69
85
|
export async function describeResourceTypeByName(resourceTypeName, json = false) {
|
|
70
86
|
let outcome = false;
|
|
71
87
|
try {
|
|
72
|
-
const resourceType = await
|
|
88
|
+
const resourceType = await readResourceTypeByName(resourceTypeName);
|
|
73
89
|
if (json) {
|
|
74
90
|
printMessage(resourceType, 'data');
|
|
75
91
|
} else {
|
|
@@ -82,8 +98,8 @@ export async function describeResourceTypeByName(resourceTypeName, json = false)
|
|
|
82
98
|
if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 404) {
|
|
83
99
|
printMessage(`Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`, 'error');
|
|
84
100
|
} else {
|
|
85
|
-
var _error$response4
|
|
86
|
-
printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0
|
|
101
|
+
var _error$response4;
|
|
102
|
+
printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0 || (_error$response4 = _error$response4.data) === null || _error$response4 === void 0 ? void 0 : _error$response4.message) || error.message, 'error');
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
return outcome;
|
|
@@ -101,14 +117,14 @@ export async function deleteResourceType(resourceTypeUuid) {
|
|
|
101
117
|
const errors = [];
|
|
102
118
|
try {
|
|
103
119
|
debugMessage(`Deleting resource type ${resourceTypeUuid}`);
|
|
104
|
-
await
|
|
120
|
+
await deleteResourceType(resourceTypeUuid);
|
|
105
121
|
} catch (error) {
|
|
106
122
|
errors.push(error);
|
|
107
123
|
}
|
|
108
124
|
if (errors.length) {
|
|
109
125
|
const errorMessages = errors.map(error => {
|
|
110
|
-
var _error$response5
|
|
111
|
-
return ((_error$response5 = error.response) === null || _error$response5 === void 0
|
|
126
|
+
var _error$response5;
|
|
127
|
+
return ((_error$response5 = error.response) === null || _error$response5 === void 0 || (_error$response5 = _error$response5.data) === null || _error$response5 === void 0 ? void 0 : _error$response5.message) || error.message;
|
|
112
128
|
}).join('\n');
|
|
113
129
|
failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);
|
|
114
130
|
} else {
|
|
@@ -131,14 +147,14 @@ export async function deleteResourceTypeByName(resourceTypeName) {
|
|
|
131
147
|
const errors = [];
|
|
132
148
|
try {
|
|
133
149
|
debugMessage(`Deleting resource type ${resourceTypeName}`);
|
|
134
|
-
await
|
|
150
|
+
await deleteResourceTypeByName(resourceTypeName);
|
|
135
151
|
} catch (error) {
|
|
136
152
|
errors.push(error);
|
|
137
153
|
}
|
|
138
154
|
if (errors.length) {
|
|
139
155
|
const errorMessages = errors.map(error => {
|
|
140
|
-
var _error$response6
|
|
141
|
-
return ((_error$response6 = error.response) === null || _error$response6 === void 0
|
|
156
|
+
var _error$response6;
|
|
157
|
+
return ((_error$response6 = error.response) === null || _error$response6 === void 0 || (_error$response6 = _error$response6.data) === null || _error$response6 === void 0 ? void 0 : _error$response6.message) || error.message;
|
|
142
158
|
}).join('\n');
|
|
143
159
|
failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);
|
|
144
160
|
} else {
|
|
@@ -161,7 +177,7 @@ export async function deleteResourceTypes() {
|
|
|
161
177
|
try {
|
|
162
178
|
showSpinner(`Retrieving all resource types...`);
|
|
163
179
|
try {
|
|
164
|
-
resourceTypes = await
|
|
180
|
+
resourceTypes = await readResourceTypes();
|
|
165
181
|
succeedSpinner(`Found ${resourceTypes.length} resource types.`);
|
|
166
182
|
} catch (error) {
|
|
167
183
|
error.message = `Error retrieving all resource types: ${error.message}`;
|
|
@@ -173,7 +189,7 @@ export async function deleteResourceTypes() {
|
|
|
173
189
|
const resourceTypeId = resourceType.uuid;
|
|
174
190
|
try {
|
|
175
191
|
debugMessage(`Deleting resource type ${resourceTypeId}`);
|
|
176
|
-
await
|
|
192
|
+
await deleteResourceType(resourceTypeId);
|
|
177
193
|
updateProgressBar(`Deleted ${resourceTypeId}`);
|
|
178
194
|
} catch (error) {
|
|
179
195
|
error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;
|
|
@@ -212,7 +228,7 @@ export async function exportResourceTypeToFile(resourceTypeUuid, file) {
|
|
|
212
228
|
if (file) {
|
|
213
229
|
fileName = file;
|
|
214
230
|
}
|
|
215
|
-
const exportData = await
|
|
231
|
+
const exportData = await exportResourceType(resourceTypeUuid);
|
|
216
232
|
saveJsonToFile(exportData, fileName);
|
|
217
233
|
succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);
|
|
218
234
|
outcome = true;
|
|
@@ -238,7 +254,7 @@ export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
|
|
|
238
254
|
if (file) {
|
|
239
255
|
fileName = file;
|
|
240
256
|
}
|
|
241
|
-
const exportData = await
|
|
257
|
+
const exportData = await exportResourceTypeByName(resourceTypeName);
|
|
242
258
|
saveJsonToFile(exportData, fileName);
|
|
243
259
|
succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);
|
|
244
260
|
outcome = true;
|
|
@@ -259,11 +275,11 @@ export async function exportResourceTypesToFile(file) {
|
|
|
259
275
|
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);
|
|
260
276
|
showSpinner(`Exporting all resource types...`);
|
|
261
277
|
try {
|
|
262
|
-
let fileName = getTypedFilename(`all${titleCase(
|
|
278
|
+
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`, 'resourcetype.authz');
|
|
263
279
|
if (file) {
|
|
264
280
|
fileName = file;
|
|
265
281
|
}
|
|
266
|
-
const exportData = await
|
|
282
|
+
const exportData = await exportResourceTypes();
|
|
267
283
|
saveJsonToFile(exportData, fileName);
|
|
268
284
|
succeedSpinner(`Exported all resource types to ${fileName}.`);
|
|
269
285
|
outcome = true;
|
|
@@ -282,12 +298,12 @@ export async function exportResourceTypesToFiles() {
|
|
|
282
298
|
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);
|
|
283
299
|
const errors = [];
|
|
284
300
|
try {
|
|
285
|
-
const resourceTypes = await
|
|
301
|
+
const resourceTypes = await readResourceTypes();
|
|
286
302
|
createProgressBar(resourceTypes.length, 'Exporting resource types...');
|
|
287
303
|
for (const resourceType of resourceTypes) {
|
|
288
304
|
const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
|
|
289
305
|
try {
|
|
290
|
-
const exportData = await
|
|
306
|
+
const exportData = await exportResourceType(resourceType.uuid);
|
|
291
307
|
saveJsonToFile(exportData, file);
|
|
292
308
|
updateProgressBar(`Exported ${resourceType.name}.`);
|
|
293
309
|
} catch (error) {
|
|
@@ -317,7 +333,7 @@ export async function importResourceTypeFromFile(resourceTypeId, file) {
|
|
|
317
333
|
try {
|
|
318
334
|
const data = fs.readFileSync(file, 'utf8');
|
|
319
335
|
const fileData = JSON.parse(data);
|
|
320
|
-
await
|
|
336
|
+
await importResourceType(resourceTypeId, fileData);
|
|
321
337
|
outcome = true;
|
|
322
338
|
succeedSpinner(`Imported ${resourceTypeId}.`);
|
|
323
339
|
} catch (error) {
|
|
@@ -341,7 +357,7 @@ export async function importResourceTypeByNameFromFile(resourceTypeName, file) {
|
|
|
341
357
|
try {
|
|
342
358
|
const data = fs.readFileSync(file, 'utf8');
|
|
343
359
|
const fileData = JSON.parse(data);
|
|
344
|
-
await
|
|
360
|
+
await importResourceTypeByName(resourceTypeName, fileData);
|
|
345
361
|
outcome = true;
|
|
346
362
|
succeedSpinner(`Imported ${resourceTypeName}.`);
|
|
347
363
|
} catch (error) {
|
|
@@ -364,7 +380,7 @@ export async function importFirstResourceTypeFromFile(file) {
|
|
|
364
380
|
try {
|
|
365
381
|
const data = fs.readFileSync(file, 'utf8');
|
|
366
382
|
const fileData = JSON.parse(data);
|
|
367
|
-
await
|
|
383
|
+
await importFirstResourceType(fileData);
|
|
368
384
|
outcome = true;
|
|
369
385
|
succeedSpinner(`Imported ${file}.`);
|
|
370
386
|
} catch (error) {
|
|
@@ -387,7 +403,7 @@ export async function importResourceTypesFromFile(file) {
|
|
|
387
403
|
try {
|
|
388
404
|
const data = fs.readFileSync(file, 'utf8');
|
|
389
405
|
const fileData = JSON.parse(data);
|
|
390
|
-
await
|
|
406
|
+
await importResourceTypes(fileData);
|
|
391
407
|
outcome = true;
|
|
392
408
|
succeedSpinner(`Imported ${file}.`);
|
|
393
409
|
} catch (error) {
|
|
@@ -416,7 +432,7 @@ export async function importResourceTypesFromFiles() {
|
|
|
416
432
|
const fileData = JSON.parse(data);
|
|
417
433
|
const count = Object.keys(fileData.resourcetype).length;
|
|
418
434
|
total += count;
|
|
419
|
-
await
|
|
435
|
+
await importResourceTypes(fileData);
|
|
420
436
|
updateProgressBar(`Imported ${count} resource types from ${file}`);
|
|
421
437
|
} catch (error) {
|
|
422
438
|
errors.push(error);
|
|
@@ -433,4 +449,4 @@ export async function importResourceTypesFromFiles() {
|
|
|
433
449
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);
|
|
434
450
|
return 0 === errors.length;
|
|
435
451
|
}
|
|
436
|
-
//# sourceMappingURL=ResourceTypeOps.js.map
|
|
452
|
+
//# sourceMappingURL=ResourceTypeOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","listResourceTypes","long","outcome","resourceTypes","authz","resourceType","getResourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","getResourceType","error","_error$response","response","status","getRealm","_error$response2","_error$response2$data","data","describeResourceTypeByName","resourceTypeName","getResourceTypeByName","_error$response3","_error$response4","_error$response4$data","deleteResourceType","errors","length","errorMessages","map","_error$response5","_error$response5$data","join","deleteResourceTypeByName","_error$response6","_error$response6$data","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceType","exportResourceTypeByNameToFile","exportResourceTypeByName","exportResourceTypesToFile","helper","utils","getRealmName","exportResourceTypes","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceType","importResourceTypeByNameFromFile","importResourceTypeByName","importFirstResourceTypeFromFile","importFirstResourceType","importResourceTypesFromFile","importResourceTypes","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport { ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await frodo.authz.resourceType.getResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await frodo.authz.resourceType.getResourceType(\n resourceTypeUuid\n );\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await frodo.authz.resourceType.getResourceTypeByName(\n resourceTypeName\n );\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await frodo.authz.resourceType.deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await frodo.authz.resourceType.deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await frodo.authz.resourceType.getResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await frodo.authz.resourceType.deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceType(\n resourceTypeUuid\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceTypeByName(\n resourceTypeName\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] =\n await frodo.authz.resourceType.getResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await frodo.authz.resourceType.exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceTypeByName(\n resourceTypeName,\n fileData\n );\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await frodo.authz.resourceType.importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","utils","readResourceTypes","readResourceType","readResourceTypeByName","exportResourceType","exportResourceTypeByName","exportResourceTypes","importResourceType","importResourceTypeByName","importFirstResourceType","importResourceTypes","authz","resourceType","listResourceTypes","long","outcome","resourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","error","_error$response","response","status","getRealm","_error$response2","data","describeResourceTypeByName","resourceTypeName","_error$response3","_error$response4","deleteResourceType","errors","length","errorMessages","map","_error$response5","join","deleteResourceTypeByName","_error$response6","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceTypeByNameToFile","exportResourceTypesToFile","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceTypeByNameFromFile","importFirstResourceTypeFromFile","importResourceTypesFromFile","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["../../src/ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ResourceTypesApi';\nimport { type ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.utils;\nconst {\n readResourceTypes,\n readResourceType,\n readResourceTypeByName,\n exportResourceType,\n exportResourceTypeByName,\n exportResourceTypes,\n importResourceType,\n importResourceTypeByName,\n importFirstResourceType,\n importResourceTypes,\n} = frodo.authz.resourceType;\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await readResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await readResourceType(resourceTypeUuid);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await readResourceTypeByName(resourceTypeName);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await readResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceType(resourceTypeUuid);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypeByName(resourceTypeName);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] = await readResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypeByName(resourceTypeName, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
package/esm/ops/Saml2Ops.js
CHANGED
|
@@ -2,6 +2,26 @@ import { frodo } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { createObjectTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { saveTextToFile } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
decodeBase64
|
|
7
|
+
} = frodo.utils;
|
|
8
|
+
const {
|
|
9
|
+
getTypedFilename,
|
|
10
|
+
saveJsonToFile,
|
|
11
|
+
getRealmString,
|
|
12
|
+
validateImport
|
|
13
|
+
} = frodo.utils;
|
|
14
|
+
const {
|
|
15
|
+
readSaml2ProviderStubs,
|
|
16
|
+
readSaml2Provider,
|
|
17
|
+
readSaml2ProviderStub,
|
|
18
|
+
getSaml2ProviderMetadataUrl,
|
|
19
|
+
getSaml2ProviderMetadata,
|
|
20
|
+
exportSaml2Provider,
|
|
21
|
+
exportSaml2Providers,
|
|
22
|
+
importSaml2Provider,
|
|
23
|
+
importSaml2Providers
|
|
24
|
+
} = frodo.saml2.entityProvider;
|
|
5
25
|
const roleMap = {
|
|
6
26
|
identityProvider: 'IDP',
|
|
7
27
|
serviceProvider: 'SP',
|
|
@@ -57,7 +77,7 @@ export function getTableRowMd(saml2ProviderObj) {
|
|
|
57
77
|
* @param {boolean} long Long list format with details
|
|
58
78
|
*/
|
|
59
79
|
export async function listSaml2Providers(long = false) {
|
|
60
|
-
const providerList = await
|
|
80
|
+
const providerList = await readSaml2ProviderStubs();
|
|
61
81
|
providerList.sort((a, b) => a._id.localeCompare(b._id));
|
|
62
82
|
if (!long) {
|
|
63
83
|
for (const provider of providerList) {
|
|
@@ -78,19 +98,17 @@ export async function listSaml2Providers(long = false) {
|
|
|
78
98
|
*/
|
|
79
99
|
export async function describeSaml2Provider(entityId) {
|
|
80
100
|
try {
|
|
81
|
-
const stub = await
|
|
82
|
-
printMessage(stub);
|
|
101
|
+
const stub = await readSaml2ProviderStub(entityId);
|
|
83
102
|
const {
|
|
84
103
|
location
|
|
85
104
|
} = stub;
|
|
86
|
-
const id = stub._id;
|
|
87
105
|
const roles = stub.roles.map(role => roleMap[role]).join(', ');
|
|
88
|
-
const rawProviderData = await
|
|
106
|
+
const rawProviderData = await readSaml2Provider(entityId);
|
|
89
107
|
delete rawProviderData._id;
|
|
90
108
|
delete rawProviderData._rev;
|
|
91
109
|
rawProviderData.location = location;
|
|
92
110
|
rawProviderData.roles = roles;
|
|
93
|
-
rawProviderData.metadataUrl =
|
|
111
|
+
rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);
|
|
94
112
|
const table = createObjectTable(rawProviderData);
|
|
95
113
|
printMessage(table.toString());
|
|
96
114
|
} catch (error) {
|
|
@@ -106,12 +124,12 @@ export async function describeSaml2Provider(entityId) {
|
|
|
106
124
|
export async function exportSaml2MetadataToFile(entityId, file = null) {
|
|
107
125
|
let fileName = file;
|
|
108
126
|
if (!fileName) {
|
|
109
|
-
fileName =
|
|
127
|
+
fileName = getTypedFilename(entityId, 'metadata', 'xml');
|
|
110
128
|
}
|
|
111
129
|
createProgressBar(1, `Exporting metadata for: ${entityId}`);
|
|
112
130
|
try {
|
|
113
131
|
updateProgressBar(`Writing file ${fileName}`);
|
|
114
|
-
const metaData = await
|
|
132
|
+
const metaData = await getSaml2ProviderMetadata(entityId);
|
|
115
133
|
saveTextToFile(metaData, fileName);
|
|
116
134
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
117
135
|
stopProgressBar(`Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`);
|
|
@@ -130,12 +148,12 @@ export async function exportSaml2ProviderToFile(entityId, file = null) {
|
|
|
130
148
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`);
|
|
131
149
|
let fileName = file;
|
|
132
150
|
if (!fileName) {
|
|
133
|
-
fileName =
|
|
151
|
+
fileName = getTypedFilename(entityId, 'saml');
|
|
134
152
|
}
|
|
135
153
|
try {
|
|
136
154
|
createProgressBar(1, `Exporting provider ${entityId}`);
|
|
137
|
-
const fileData = await
|
|
138
|
-
|
|
155
|
+
const fileData = await exportSaml2Provider(entityId);
|
|
156
|
+
saveJsonToFile(fileData, fileName);
|
|
139
157
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
140
158
|
stopProgressBar(`Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`);
|
|
141
159
|
} catch (err) {
|
|
@@ -153,11 +171,11 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
153
171
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);
|
|
154
172
|
let fileName = file;
|
|
155
173
|
if (!fileName) {
|
|
156
|
-
fileName =
|
|
174
|
+
fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');
|
|
157
175
|
}
|
|
158
176
|
try {
|
|
159
|
-
const exportData = await
|
|
160
|
-
|
|
177
|
+
const exportData = await exportSaml2Providers();
|
|
178
|
+
saveJsonToFile(exportData, fileName);
|
|
161
179
|
} catch (error) {
|
|
162
180
|
var _error$response;
|
|
163
181
|
printMessage(error.message, 'error');
|
|
@@ -170,13 +188,13 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
170
188
|
* Export all entity providers to individual files
|
|
171
189
|
*/
|
|
172
190
|
export async function exportSaml2ProvidersToFiles() {
|
|
173
|
-
const stubs = await
|
|
191
|
+
const stubs = await readSaml2ProviderStubs();
|
|
174
192
|
if (stubs.length > 0) {
|
|
175
193
|
createProgressBar(stubs.length, 'Exporting providers');
|
|
176
194
|
for (const stub of stubs) {
|
|
177
|
-
const fileName =
|
|
178
|
-
const fileData = await
|
|
179
|
-
|
|
195
|
+
const fileName = getTypedFilename(stub.entityId, 'saml');
|
|
196
|
+
const fileData = await exportSaml2Provider(stub.entityId);
|
|
197
|
+
saveJsonToFile(fileData, fileName);
|
|
180
198
|
updateProgressBar(`Exported provider ${stub.entityId}`);
|
|
181
199
|
}
|
|
182
200
|
stopProgressBar(`${stubs.length} providers exported.`);
|
|
@@ -196,7 +214,7 @@ export async function importSaml2ProviderFromFile(entityId, file) {
|
|
|
196
214
|
const fileData = JSON.parse(data);
|
|
197
215
|
showSpinner(`Importing ${entityId}...`);
|
|
198
216
|
try {
|
|
199
|
-
await
|
|
217
|
+
await importSaml2Provider(entityId, fileData);
|
|
200
218
|
succeedSpinner(`Imported ${entityId}.`);
|
|
201
219
|
} catch (error) {
|
|
202
220
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -214,10 +232,10 @@ export async function importFirstSaml2ProviderFromFile(file) {
|
|
|
214
232
|
const fileData = JSON.parse(data);
|
|
215
233
|
// pick the first provider and run with it
|
|
216
234
|
const entityId64 = Object.keys(fileData.saml.remote)[0] || Object.keys(fileData.saml.hosted)[0];
|
|
217
|
-
const entityId =
|
|
235
|
+
const entityId = decodeBase64(entityId64);
|
|
218
236
|
showSpinner(`Importing ${entityId}...`);
|
|
219
237
|
try {
|
|
220
|
-
await
|
|
238
|
+
await importSaml2Provider(entityId, fileData);
|
|
221
239
|
succeedSpinner(`Imported ${entityId}.`);
|
|
222
240
|
} catch (error) {
|
|
223
241
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -233,8 +251,8 @@ export async function importSaml2ProvidersFromFile(file) {
|
|
|
233
251
|
fs.readFile(file, 'utf8', async (err, data) => {
|
|
234
252
|
if (err) throw err;
|
|
235
253
|
const fileData = JSON.parse(data);
|
|
236
|
-
if (
|
|
237
|
-
await
|
|
254
|
+
if (validateImport(fileData.meta)) {
|
|
255
|
+
await importSaml2Providers(fileData);
|
|
238
256
|
} else {
|
|
239
257
|
printMessage('Import validation failed...', 'error');
|
|
240
258
|
}
|
|
@@ -248,26 +266,22 @@ export async function importSaml2ProvidersFromFiles() {
|
|
|
248
266
|
const names = fs.readdirSync('.');
|
|
249
267
|
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json'));
|
|
250
268
|
createProgressBar(jsonFiles.length, 'Importing providers...');
|
|
251
|
-
|
|
252
|
-
total: 0,
|
|
253
|
-
successes: 0,
|
|
254
|
-
warnings: 0,
|
|
255
|
-
failures: 0
|
|
256
|
-
};
|
|
269
|
+
let total = 0;
|
|
257
270
|
for (const file of jsonFiles) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
271
|
+
try {
|
|
272
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
273
|
+
const fileData = JSON.parse(data);
|
|
274
|
+
if (validateImport(fileData.meta)) {
|
|
275
|
+
const result = await importSaml2Providers(fileData);
|
|
276
|
+
total += result.length;
|
|
277
|
+
updateProgressBar(`Imported ${result.length} provider(s) from ${file}.`);
|
|
278
|
+
} else {
|
|
279
|
+
printMessage(`Validation of ${file} failed!`, 'error');
|
|
280
|
+
}
|
|
281
|
+
} catch (error) {
|
|
282
|
+
printMessage(`Error importing providers from ${file}: ${error.message}`, 'error');
|
|
269
283
|
}
|
|
270
284
|
}
|
|
271
|
-
stopProgressBar(`Imported ${
|
|
285
|
+
stopProgressBar(`Imported ${total} provider(s) from ${jsonFiles.length} file(s).`);
|
|
272
286
|
}
|
|
273
|
-
//# sourceMappingURL=Saml2Ops.js.map
|
|
287
|
+
//# sourceMappingURL=Saml2Ops.js.map
|