@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +275 -4
- package/esm/app.js +20 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +28 -6
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +7 -4
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +7 -4
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +7 -4
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +7 -4
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +7 -4
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +7 -4
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +7 -4
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +1 -1
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +7 -4
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +7 -4
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +7 -4
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +7 -4
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +7 -4
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +7 -4
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +7 -4
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +7 -4
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +1 -1
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +2 -2
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +45 -0
- package/esm/cli/admin/admin-federation-export.js.map +1 -0
- package/esm/cli/admin/admin-federation-import.js +49 -0
- package/esm/cli/admin/admin-federation-import.js.map +1 -0
- package/esm/cli/admin/admin-federation-list.js +29 -0
- package/esm/cli/admin/admin-federation-list.js.map +1 -0
- package/esm/cli/admin/admin-federation.js +13 -0
- package/esm/cli/admin/admin-federation.js.map +1 -0
- package/esm/cli/admin/admin-get-access-token.js +12 -6
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +11 -5
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
- package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
- package/esm/cli/admin/admin.js +6 -2
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +13 -6
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +7 -4
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -5
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +13 -6
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +7 -4
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -5
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -5
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +7 -4
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +1 -1
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -5
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +13 -6
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +7 -4
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -5
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -5
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +7 -4
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +1 -1
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +7 -4
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +13 -6
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +7 -4
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -5
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -5
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +7 -4
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +3 -3
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +2 -2
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +27 -8
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -5
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +17 -13
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +21 -17
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +12 -8
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -12
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authn/authn-describe.js +30 -0
- package/esm/cli/authn/authn-describe.js.map +1 -0
- package/esm/cli/authn/authn-export.js +26 -0
- package/esm/cli/authn/authn-export.js.map +1 -0
- package/esm/cli/authn/authn-import.js +26 -0
- package/esm/cli/authn/authn-import.js.map +1 -0
- package/esm/cli/authn/authn.js +12 -0
- package/esm/cli/authn/authn.js.map +1 -0
- package/esm/cli/authz/authz-policy-delete.js +11 -8
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +8 -5
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +12 -9
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +10 -7
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +9 -6
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-policy.js +1 -1
- package/esm/cli/authz/authz-policy.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +10 -7
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +8 -5
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +10 -7
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +10 -7
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +7 -4
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-set.js +1 -1
- package/esm/cli/authz/authz-set.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +12 -9
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +9 -6
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +11 -8
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +12 -9
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +8 -5
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz-type.js +1 -1
- package/esm/cli/authz/authz-type.js.map +1 -1
- package/esm/cli/authz/authz.js +2 -2
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +2 -2
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +2 -2
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +2 -2
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +31 -15
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +2 -2
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +10 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +11 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +8 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +1 -1
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +18 -8
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +8 -5
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +9 -6
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +8 -5
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +19 -5
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +7 -4
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +8 -5
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +8 -5
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +8 -5
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +9 -6
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +9 -6
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +8 -5
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +1 -1
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +2 -3
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -6
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +10 -7
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +10 -7
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +20 -6
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +7 -4
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +8 -5
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +8 -5
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +2 -3
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +2 -2
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +9 -6
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +21 -12
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +22 -13
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +7 -4
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +2 -2
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -8
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +15 -12
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +7 -4
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +2 -2
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +16 -10
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +8 -5
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +19 -10
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +12 -6
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +12 -6
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +21 -9
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +11 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +6 -3
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +23 -12
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +2 -2
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
- package/esm/cli/log/log-fetch.js.map +1 -0
- package/esm/cli/log/log-key-delete.js +35 -0
- package/esm/cli/log/log-key-delete.js.map +1 -0
- package/esm/cli/log/log-key-describe.js +22 -0
- package/esm/cli/log/log-key-describe.js.map +1 -0
- package/esm/cli/log/log-key-list.js +26 -0
- package/esm/cli/log/log-key-list.js.map +1 -0
- package/esm/cli/log/log-key.js +8 -0
- package/esm/cli/log/log-key.js.map +1 -0
- package/esm/cli/log/log-list.js +80 -0
- package/esm/cli/log/log-list.js.map +1 -0
- package/esm/cli/log/log-tail.js +77 -0
- package/esm/cli/log/log-tail.js.map +1 -0
- package/esm/cli/{logging/logs.js → log/log.js} +6 -3
- package/esm/cli/log/log.js.map +1 -0
- package/esm/cli/oauth/oauth-client-delete.js +22 -0
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
- package/esm/cli/oauth/oauth-client-describe.js +22 -0
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
- package/esm/cli/oauth/oauth-client-export.js +52 -0
- package/esm/cli/oauth/oauth-client-export.js.map +1 -0
- package/esm/cli/oauth/oauth-client-import.js +57 -0
- package/esm/cli/oauth/oauth-client-import.js.map +1 -0
- package/esm/cli/oauth/oauth-client-list.js +25 -0
- package/esm/cli/oauth/oauth-client-list.js.map +1 -0
- package/esm/cli/oauth/oauth-client.js +14 -0
- package/esm/cli/oauth/oauth-client.js.map +1 -0
- package/esm/cli/oauth/oauth.js +13 -0
- package/esm/cli/oauth/oauth.js.map +1 -0
- package/esm/cli/realm/realm-add-custom-domain.js +8 -5
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +8 -5
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +8 -5
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +2 -2
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +10 -7
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +15 -12
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +8 -5
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +1 -1
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +14 -7
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +8 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +10 -7
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +11 -8
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +8 -5
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +9 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +1 -1
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +2 -2
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +7 -4
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +7 -4
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +8 -5
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +9 -6
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +8 -5
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +2 -2
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +8 -5
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +9 -6
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +11 -9
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +7 -4
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +2 -2
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +57 -0
- package/esm/cli/shell/shell.js.map +1 -0
- package/esm/cli/theme/theme-delete.js +10 -7
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +11 -8
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +12 -9
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +7 -4
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +2 -2
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/help/SampleData.js +7 -0
- package/esm/help/SampleData.js.map +1 -0
- package/esm/launch.js +1 -1
- package/esm/launch.js.map +1 -1
- package/esm/loader.js +2 -2
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +225 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AgentOps.js +128 -87
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +315 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/AuthenticationSettingsOps.js +89 -0
- package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +72 -59
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +13 -6
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +76 -64
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +70 -84
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +74 -43
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +99 -67
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +92 -30
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +6 -3
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +51 -32
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +14 -22
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +84 -55
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +67 -43
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +18 -11
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +75 -66
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +76 -54
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +92 -31
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +106 -23
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +67 -41
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +62 -36
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +132 -41
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +1 -1
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/Wordwrap.js +1 -1
- package/esm/ops/utils/Wordwrap.js.map +1 -1
- package/esm/storage/StaticStorage.js +1 -1
- package/esm/storage/StaticStorage.js.map +1 -1
- package/esm/utils/Config.js +7 -4
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +9 -5
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +32 -66
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +19 -16
- package/esm/utils/Version.js.map +1 -1
- package/global-jest-setup.js +4 -0
- package/package.json +46 -35
- package/esm/cli/logging/logs-fetch.js.map +0 -1
- package/esm/cli/logging/logs-list.js +0 -49
- package/esm/cli/logging/logs-list.js.map +0 -1
- package/esm/cli/logging/logs-tail.js +0 -46
- package/esm/cli/logging/logs-tail.js.map +0 -1
- package/esm/cli/logging/logs.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { createObjectTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
+
import { saveJsonToFile } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
getTypedFilename,
|
|
7
|
+
getFilePath
|
|
8
|
+
} = frodo.utils;
|
|
9
|
+
const {
|
|
10
|
+
exportAuthenticationSettings: _exportAuthenticationSettings,
|
|
11
|
+
importAuthenticationSettings: _importAuthenticationSettings,
|
|
12
|
+
readAuthenticationSettings: _readAuthenticationSettings
|
|
13
|
+
} = frodo.authn.settings;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Export authentication settings to file
|
|
17
|
+
* @param {string} file file name
|
|
18
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
19
|
+
*/
|
|
20
|
+
export async function exportAuthenticationSettingsToFile(file) {
|
|
21
|
+
let outcome = false;
|
|
22
|
+
debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`);
|
|
23
|
+
showSpinner(`Exporting ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings...`);
|
|
24
|
+
try {
|
|
25
|
+
let fileName = getTypedFilename(`${frodo.utils.getRealmName(state.getRealm())}Realm`, 'authentication.settings');
|
|
26
|
+
if (file) {
|
|
27
|
+
fileName = file;
|
|
28
|
+
}
|
|
29
|
+
const filePath = getFilePath(fileName, true);
|
|
30
|
+
const exportData = await _exportAuthenticationSettings();
|
|
31
|
+
saveJsonToFile(exportData, filePath);
|
|
32
|
+
succeedSpinner(`Exported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings to ${filePath}.`);
|
|
33
|
+
outcome = true;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
failSpinner(`Error exporting ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings: ${error.message}`);
|
|
36
|
+
}
|
|
37
|
+
debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`);
|
|
38
|
+
return outcome;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Import authentication settings from file
|
|
43
|
+
* @param {string} file file name
|
|
44
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
45
|
+
*/
|
|
46
|
+
export async function importAuthenticationSettingsFromFile(file) {
|
|
47
|
+
let outcome = false;
|
|
48
|
+
debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`);
|
|
49
|
+
showSpinner(`Importing ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings...`);
|
|
50
|
+
try {
|
|
51
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
52
|
+
const fileData = JSON.parse(data);
|
|
53
|
+
await _importAuthenticationSettings(fileData);
|
|
54
|
+
outcome = true;
|
|
55
|
+
succeedSpinner(`Imported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings.`);
|
|
56
|
+
} catch (error) {
|
|
57
|
+
failSpinner(`Error importing ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings.`);
|
|
58
|
+
printMessage(error, 'error');
|
|
59
|
+
}
|
|
60
|
+
debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`);
|
|
61
|
+
return outcome;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Describe authentication settings
|
|
66
|
+
* @param {boolean} json JSON output
|
|
67
|
+
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
68
|
+
*/
|
|
69
|
+
export async function describeAuthenticationSettings(json = false) {
|
|
70
|
+
let outcome = false;
|
|
71
|
+
try {
|
|
72
|
+
const settings = await _readAuthenticationSettings();
|
|
73
|
+
delete settings._id;
|
|
74
|
+
delete settings._rev;
|
|
75
|
+
delete settings._type;
|
|
76
|
+
if (json) {
|
|
77
|
+
printMessage(settings, 'data');
|
|
78
|
+
outcome = true;
|
|
79
|
+
} else {
|
|
80
|
+
const table = createObjectTable(settings);
|
|
81
|
+
printMessage(table.toString(), 'data');
|
|
82
|
+
outcome = true;
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {
|
|
85
|
+
printMessage(error.message, 'error');
|
|
86
|
+
}
|
|
87
|
+
return outcome;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=AuthenticationSettingsOps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationSettingsOps.js","names":["frodo","state","fs","createObjectTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","saveJsonToFile","getTypedFilename","getFilePath","utils","exportAuthenticationSettings","_exportAuthenticationSettings","importAuthenticationSettings","_importAuthenticationSettings","readAuthenticationSettings","_readAuthenticationSettings","authn","settings","exportAuthenticationSettingsToFile","file","outcome","getRealmName","getRealm","fileName","filePath","exportData","error","message","importAuthenticationSettingsFromFile","data","readFileSync","fileData","JSON","parse","describeAuthenticationSettings","json","_id","_rev","_type","table","toString"],"sources":["../../src/ops/AuthenticationSettingsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\n\nconst { getTypedFilename, getFilePath } = frodo.utils;\nconst {\n exportAuthenticationSettings: _exportAuthenticationSettings,\n importAuthenticationSettings: _importAuthenticationSettings,\n readAuthenticationSettings: _readAuthenticationSettings,\n} = frodo.authn.settings;\n\n/**\n * Export authentication settings to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAuthenticationSettingsToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`\n );\n showSpinner(\n `Exporting ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings...`\n );\n try {\n let fileName = getTypedFilename(\n `${frodo.utils.getRealmName(state.getRealm())}Realm`,\n 'authentication.settings'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportAuthenticationSettings();\n saveJsonToFile(exportData, filePath);\n succeedSpinner(\n `Exported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings to ${filePath}.`\n );\n outcome = true;\n } catch (error) {\n failSpinner(\n `Error exporting ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings: ${error.message}`\n );\n }\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`\n );\n return outcome;\n}\n\n/**\n * Import authentication settings from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAuthenticationSettingsFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`\n );\n showSpinner(\n `Importing ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings...`\n );\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importAuthenticationSettings(fileData);\n outcome = true;\n succeedSpinner(\n `Imported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings.`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings.`\n );\n printMessage(error, 'error');\n }\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Describe authentication settings\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeAuthenticationSettings(\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const settings = await _readAuthenticationSettings();\n delete settings._id;\n delete settings._rev;\n delete settings._type;\n if (json) {\n printMessage(settings, 'data');\n outcome = true;\n } else {\n const table = createObjectTable(settings);\n printMessage(table.toString(), 'data');\n outcome = true;\n }\n } catch (error) {\n printMessage(error.message, 'error');\n }\n return outcome;\n}\n"],"mappings":"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"}
|
|
@@ -2,6 +2,20 @@ import { frodo, state } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { 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
|
+
getFilePath,
|
|
8
|
+
getWorkingDirectory
|
|
9
|
+
} = frodo.utils;
|
|
10
|
+
const {
|
|
11
|
+
readCirclesOfTrust,
|
|
12
|
+
exportCircleOfTrust,
|
|
13
|
+
exportCirclesOfTrust,
|
|
14
|
+
importCircleOfTrust,
|
|
15
|
+
importCirclesOfTrust,
|
|
16
|
+
importFirstCircleOfTrust
|
|
17
|
+
} = frodo.saml2.circlesOfTrust;
|
|
18
|
+
|
|
5
19
|
/**
|
|
6
20
|
* Get a one-line description of the circle of trust object
|
|
7
21
|
* @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe
|
|
@@ -41,9 +55,9 @@ export async function listCirclesOfTrust(long = false) {
|
|
|
41
55
|
let outcome = false;
|
|
42
56
|
let cotList = [];
|
|
43
57
|
try {
|
|
44
|
-
cotList = await
|
|
58
|
+
cotList = await readCirclesOfTrust();
|
|
45
59
|
} catch (error) {
|
|
46
|
-
printMessage(`
|
|
60
|
+
printMessage(`readCirclesOfTrust ERROR: ${error}`, 'error');
|
|
47
61
|
printMessage(error, 'data');
|
|
48
62
|
}
|
|
49
63
|
cotList.sort((a, b) => a._id.localeCompare(b._id));
|
|
@@ -57,7 +71,7 @@ export async function listCirclesOfTrust(long = false) {
|
|
|
57
71
|
cotList.forEach(cot => {
|
|
58
72
|
table.push([cot._id, cot.description, cot.status, cot.trustedProviders.map(provider => provider.split('|')[0]).join('\n')]);
|
|
59
73
|
});
|
|
60
|
-
printMessage(table.toString());
|
|
74
|
+
printMessage(table.toString(), 'data');
|
|
61
75
|
outcome = true;
|
|
62
76
|
}
|
|
63
77
|
return outcome;
|
|
@@ -77,9 +91,10 @@ export async function exportCircleOfTrustToFile(cotId, file = null) {
|
|
|
77
91
|
if (file) {
|
|
78
92
|
fileName = file;
|
|
79
93
|
}
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
94
|
+
const filePath = getFilePath(fileName, true);
|
|
95
|
+
const exportData = await exportCircleOfTrust(cotId);
|
|
96
|
+
saveJsonToFile(exportData, filePath);
|
|
97
|
+
succeedSpinner(`Exported ${cotId} to ${filePath}.`);
|
|
83
98
|
outcome = true;
|
|
84
99
|
} catch (error) {
|
|
85
100
|
failSpinner(`Error exporting ${cotId}: ${error.message}`);
|
|
@@ -97,13 +112,14 @@ export async function exportCirclesOfTrustToFile(file = null) {
|
|
|
97
112
|
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);
|
|
98
113
|
showSpinner(`Exporting all circles of trust...`);
|
|
99
114
|
try {
|
|
100
|
-
let fileName = getTypedFilename(`all${titleCase(
|
|
115
|
+
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}CirclesOfTrust`, 'cot.saml');
|
|
101
116
|
if (file) {
|
|
102
117
|
fileName = file;
|
|
103
118
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
119
|
+
const filePath = getFilePath(fileName, true);
|
|
120
|
+
const exportData = await exportCirclesOfTrust();
|
|
121
|
+
saveJsonToFile(exportData, filePath);
|
|
122
|
+
succeedSpinner(`Exported all circles of trust to ${filePath}.`);
|
|
107
123
|
outcome = true;
|
|
108
124
|
} catch (error) {
|
|
109
125
|
failSpinner(`Error exporting circles of trust: ${error.message}`);
|
|
@@ -119,13 +135,13 @@ export async function exportCirclesOfTrustToFiles() {
|
|
|
119
135
|
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);
|
|
120
136
|
const errors = [];
|
|
121
137
|
try {
|
|
122
|
-
const cots = await
|
|
138
|
+
const cots = await readCirclesOfTrust();
|
|
123
139
|
createProgressBar(cots.length, 'Exporting circles of trust...');
|
|
124
140
|
for (const cot of cots) {
|
|
125
141
|
const file = getTypedFilename(cot._id, 'cot.saml');
|
|
126
142
|
try {
|
|
127
|
-
const exportData = await
|
|
128
|
-
saveJsonToFile(exportData, file);
|
|
143
|
+
const exportData = await exportCircleOfTrust(cot._id);
|
|
144
|
+
saveJsonToFile(exportData, getFilePath(file, true));
|
|
129
145
|
updateProgressBar(`Exported ${cot.name}.`);
|
|
130
146
|
} catch (error) {
|
|
131
147
|
errors.push(error);
|
|
@@ -148,20 +164,19 @@ export async function exportCirclesOfTrustToFiles() {
|
|
|
148
164
|
*/
|
|
149
165
|
export async function importCircleOfTrustFromFile(cotId, file) {
|
|
150
166
|
let outcome = false;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
});
|
|
167
|
+
const filePath = getFilePath(file);
|
|
168
|
+
showSpinner(`Importing circle of trust ${cotId} from ${filePath}...`);
|
|
169
|
+
try {
|
|
170
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
171
|
+
const fileData = JSON.parse(data);
|
|
172
|
+
await importCircleOfTrust(cotId, fileData);
|
|
173
|
+
outcome = true;
|
|
174
|
+
succeedSpinner(`Imported circle of trust ${cotId} from ${filePath}.`);
|
|
175
|
+
} catch (error) {
|
|
176
|
+
var _error$response;
|
|
177
|
+
failSpinner(`Error importing circle of trust ${cotId} from ${filePath}.`);
|
|
178
|
+
printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
|
|
179
|
+
}
|
|
165
180
|
return outcome;
|
|
166
181
|
}
|
|
167
182
|
|
|
@@ -171,20 +186,19 @@ export async function importCircleOfTrustFromFile(cotId, file) {
|
|
|
171
186
|
*/
|
|
172
187
|
export async function importFirstCircleOfTrustFromFile(file) {
|
|
173
188
|
let outcome = false;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
});
|
|
189
|
+
const filePath = getFilePath(file);
|
|
190
|
+
showSpinner(`Importing first circle of trust from ${filePath}...`);
|
|
191
|
+
try {
|
|
192
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
193
|
+
const fileData = JSON.parse(data);
|
|
194
|
+
await importFirstCircleOfTrust(fileData);
|
|
195
|
+
outcome = true;
|
|
196
|
+
succeedSpinner(`Imported first circle of trust from ${filePath}.`);
|
|
197
|
+
} catch (error) {
|
|
198
|
+
var _error$response2;
|
|
199
|
+
failSpinner(`Error importing first circle of trust from ${filePath}.`);
|
|
200
|
+
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
|
|
201
|
+
}
|
|
188
202
|
return outcome;
|
|
189
203
|
}
|
|
190
204
|
|
|
@@ -194,20 +208,19 @@ export async function importFirstCircleOfTrustFromFile(file) {
|
|
|
194
208
|
*/
|
|
195
209
|
export async function importCirclesOfTrustFromFile(file) {
|
|
196
210
|
let outcome = false;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
211
|
+
const filePath = getFilePath(file);
|
|
212
|
+
showSpinner(`Importing circles of trust from ${filePath}...`);
|
|
213
|
+
try {
|
|
214
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
215
|
+
const fileData = JSON.parse(data);
|
|
216
|
+
await importCirclesOfTrust(fileData);
|
|
217
|
+
outcome = true;
|
|
218
|
+
succeedSpinner(`Imported circles of trust from ${filePath}.`);
|
|
219
|
+
} catch (error) {
|
|
220
|
+
var _error$response3;
|
|
221
|
+
failSpinner(`Error importing circles of trust from ${filePath}.`);
|
|
222
|
+
printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
|
|
223
|
+
}
|
|
211
224
|
return outcome;
|
|
212
225
|
}
|
|
213
226
|
|
|
@@ -218,8 +231,8 @@ export async function importCirclesOfTrustFromFiles() {
|
|
|
218
231
|
const errors = [];
|
|
219
232
|
try {
|
|
220
233
|
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);
|
|
221
|
-
const names = fs.readdirSync(
|
|
222
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.
|
|
234
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
235
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.cot.saml.json')).map(name => getFilePath(name));
|
|
223
236
|
createProgressBar(files.length, 'Importing circles of trust...');
|
|
224
237
|
let total = 0;
|
|
225
238
|
for (const file of files) {
|
|
@@ -228,7 +241,7 @@ export async function importCirclesOfTrustFromFiles() {
|
|
|
228
241
|
const fileData = JSON.parse(data);
|
|
229
242
|
const count = Object.keys(fileData.saml.cot).length;
|
|
230
243
|
total += count;
|
|
231
|
-
await
|
|
244
|
+
await importCirclesOfTrust(fileData);
|
|
232
245
|
updateProgressBar(`Imported ${count} circles of trust from ${file}`);
|
|
233
246
|
} catch (error) {
|
|
234
247
|
errors.push(error);
|
|
@@ -245,4 +258,4 @@ export async function importCirclesOfTrustFromFiles() {
|
|
|
245
258
|
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);
|
|
246
259
|
return 0 === errors.length;
|
|
247
260
|
}
|
|
248
|
-
//# sourceMappingURL=CirclesOfTrustOps.js.map
|
|
261
|
+
//# sourceMappingURL=CirclesOfTrustOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CirclesOfTrustOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join","listCirclesOfTrust","long","outcome","cotList","saml2","circlesOfTrust","getCirclesOfTrust","error","sort","a","b","localeCompare","forEach","cot","table","push","toString","exportCircleOfTrustToFile","cotId","file","fileName","exportData","exportCircleOfTrust","message","exportCirclesOfTrustToFile","helper","utils","getRealmName","getRealm","exportCirclesOfTrust","exportCirclesOfTrustToFiles","errors","cots","length","name","importCircleOfTrustFromFile","readFile","err","data","fileData","JSON","parse","importCircleOfTrust","_error$response","response","importFirstCircleOfTrustFromFile","importFirstCircleOfTrust","_error$response2","importCirclesOfTrustFromFile","importCirclesOfTrust","_error$response3","importCirclesOfTrustFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","saml"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport type { CircleOfTrustSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport type { CirclesOfTrustExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(cotObj: CircleOfTrustSkeleton): string {\n const description = `[${cotObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false): Promise<boolean> {\n let outcome = false;\n let cotList = [];\n try {\n cotList = await frodo.saml2.circlesOfTrust.getCirclesOfTrust();\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n outcome = true;\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n outcome = true;\n }\n return outcome;\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrustToFile(\n cotId: string,\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);\n showSpinner(`Exporting ${cotId}...`);\n try {\n let fileName = getTypedFilename(cotId, 'cot.saml');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.saml2.circlesOfTrust.exportCircleOfTrust(\n cotId\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${cotId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${cotId}: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);\n showSpinner(`Exporting all circles of trust...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}CirclesOfTrust`,\n 'cot.saml'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.saml2.circlesOfTrust.exportCirclesOfTrust();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all circles of trust to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting circles of trust: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles(): Promise<boolean> {\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);\n const errors = [];\n try {\n const cots: CircleOfTrustSkeleton[] =\n await frodo.saml2.circlesOfTrust.getCirclesOfTrust();\n createProgressBar(cots.length, 'Exporting circles of trust...');\n for (const cot of cots) {\n const file = getTypedFilename(cot._id, 'cot.saml');\n try {\n const exportData: CirclesOfTrustExportInterface =\n await frodo.saml2.circlesOfTrust.exportCircleOfTrust(cot._id);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${cot.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${cot.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting circles of trust to files`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrustFromFile(\n cotId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circle of trust ${cotId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importCircleOfTrust(cotId, fileData);\n outcome = true;\n succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first circle of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importFirstCircleOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported first circle of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first circle of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circles of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported circles of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circles of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing circles of trust...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: CirclesOfTrustExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.saml.cot).length;\n total += count;\n await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);\n updateProgressBar(`Imported ${count} circles of trust from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing circles of trust from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Imported ${total} circles of trust from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing circles of trust from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CirclesOfTrustOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readCirclesOfTrust","exportCircleOfTrust","exportCirclesOfTrust","importCircleOfTrust","importCirclesOfTrust","importFirstCircleOfTrust","saml2","circlesOfTrust","getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join","listCirclesOfTrust","long","outcome","cotList","error","sort","a","b","localeCompare","forEach","cot","table","push","toString","exportCircleOfTrustToFile","cotId","file","fileName","filePath","exportData","message","exportCirclesOfTrustToFile","getRealm","exportCirclesOfTrustToFiles","errors","cots","length","name","importCircleOfTrustFromFile","data","readFileSync","fileData","JSON","parse","_error$response","response","importFirstCircleOfTrustFromFile","_error$response2","importCirclesOfTrustFromFile","_error$response3","importCirclesOfTrustFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","saml"],"sources":["../../src/ops/CirclesOfTrustOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type CircleOfTrustSkeleton } from '@rockcarver/frodo-lib/types/api/CirclesOfTrustApi';\nimport { type CirclesOfTrustExportInterface } from '@rockcarver/frodo-lib/types/ops/CirclesOfTrustOps';\nimport fs from 'fs';\n\nimport {\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, getFilePath, getWorkingDirectory } = frodo.utils;\nconst {\n readCirclesOfTrust,\n exportCircleOfTrust,\n exportCirclesOfTrust,\n importCircleOfTrust,\n importCirclesOfTrust,\n importFirstCircleOfTrust,\n} = frodo.saml2.circlesOfTrust;\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(cotObj: CircleOfTrustSkeleton): string {\n const description = `[${cotObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false): Promise<boolean> {\n let outcome = false;\n let cotList = [];\n try {\n cotList = await readCirclesOfTrust();\n } catch (error) {\n printMessage(`readCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n outcome = true;\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString(), 'data');\n outcome = true;\n }\n return outcome;\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrustToFile(\n cotId: string,\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);\n showSpinner(`Exporting ${cotId}...`);\n try {\n let fileName = getTypedFilename(cotId, 'cot.saml');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportCircleOfTrust(cotId);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${cotId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${cotId}: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);\n showSpinner(`Exporting all circles of trust...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}CirclesOfTrust`,\n 'cot.saml'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportCirclesOfTrust();\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all circles of trust to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting circles of trust: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles(): Promise<boolean> {\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);\n const errors = [];\n try {\n const cots: CircleOfTrustSkeleton[] = await readCirclesOfTrust();\n createProgressBar(cots.length, 'Exporting circles of trust...');\n for (const cot of cots) {\n const file = getTypedFilename(cot._id, 'cot.saml');\n try {\n const exportData: CirclesOfTrustExportInterface =\n await exportCircleOfTrust(cot._id);\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${cot.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${cot.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting circles of trust to files`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrustFromFile(\n cotId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n showSpinner(`Importing circle of trust ${cotId} from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importCircleOfTrust(cotId, fileData);\n outcome = true;\n succeedSpinner(`Imported circle of trust ${cotId} from ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing circle of trust ${cotId} from ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n showSpinner(`Importing first circle of trust from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstCircleOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported first circle of trust from ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing first circle of trust from ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n showSpinner(`Importing circles of trust from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importCirclesOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported circles of trust from ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing circles of trust from ${filePath}.`);\n printMessage(error.response?.data || error, 'error');\n }\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.cot.saml.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing circles of trust...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: CirclesOfTrustExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.saml.cot).length;\n total += count;\n await importCirclesOfTrust(fileData);\n updateProgressBar(`Imported ${count} circles of trust from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing circles of trust from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Imported ${total} circles of trust from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing circles of trust from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
+
import fs from 'fs';
|
|
3
3
|
import { createObjectTable, createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
+
const {
|
|
5
|
+
getAccessTokenForServiceAccount
|
|
6
|
+
} = frodo.login;
|
|
7
|
+
const {
|
|
8
|
+
getConnectionProfilesPath,
|
|
9
|
+
getConnectionProfileByHost
|
|
10
|
+
} = frodo.conn;
|
|
4
11
|
|
|
5
12
|
/**
|
|
6
13
|
* List connection profiles
|
|
@@ -8,7 +15,7 @@ import { createObjectTable, createTable, debugMessage, failSpinner, printMessage
|
|
|
8
15
|
* @param {State} state library state
|
|
9
16
|
*/
|
|
10
17
|
export function listConnectionProfiles(long = false) {
|
|
11
|
-
const filename =
|
|
18
|
+
const filename = getConnectionProfilesPath();
|
|
12
19
|
try {
|
|
13
20
|
const data = fs.readFileSync(filename, 'utf8');
|
|
14
21
|
const connectionsData = JSON.parse(data);
|
|
@@ -42,7 +49,7 @@ export function listConnectionProfiles(long = false) {
|
|
|
42
49
|
*/
|
|
43
50
|
export async function describeConnectionProfile(host, showSecrets) {
|
|
44
51
|
debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);
|
|
45
|
-
const profile = await
|
|
52
|
+
const profile = await getConnectionProfileByHost(host);
|
|
46
53
|
if (profile) {
|
|
47
54
|
debugMessage(profile);
|
|
48
55
|
const present = '[present]';
|
|
@@ -86,7 +93,7 @@ export async function describeConnectionProfile(host, showSecrets) {
|
|
|
86
93
|
const table = createObjectTable(profile, keyMap);
|
|
87
94
|
printMessage(table.toString(), 'data');
|
|
88
95
|
if (showSecrets && jwk) {
|
|
89
|
-
printMessage(jwk, 'data');
|
|
96
|
+
printMessage(JSON.stringify(jwk), 'data');
|
|
90
97
|
}
|
|
91
98
|
} else {
|
|
92
99
|
printMessage(`No connection profile ${host} found`);
|
|
@@ -99,7 +106,7 @@ export async function addExistingServiceAccount(serviceAccountId, privateKeyFile
|
|
|
99
106
|
const jwk = JSON.parse(data.toString());
|
|
100
107
|
if (validate) {
|
|
101
108
|
showSpinner(`Validating service account ${serviceAccountId}...`);
|
|
102
|
-
const token = await
|
|
109
|
+
const token = await getAccessTokenForServiceAccount(serviceAccountId, jwk);
|
|
103
110
|
if (token === null) {
|
|
104
111
|
failSpinner(`Failed to validate service account ${serviceAccountId}.`);
|
|
105
112
|
return false;
|
|
@@ -115,4 +122,4 @@ export async function addExistingServiceAccount(serviceAccountId, privateKeyFile
|
|
|
115
122
|
}
|
|
116
123
|
return false;
|
|
117
124
|
}
|
|
118
|
-
//# sourceMappingURL=ConnectionProfileOps.js.map
|
|
125
|
+
//# sourceMappingURL=ConnectionProfileOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["frodo","state","fs","createObjectTable","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getAccessTokenForServiceAccount","login","getConnectionProfilesPath","getConnectionProfileByHost","conn","listConnectionProfiles","long","filename","data","readFileSync","connectionsData","JSON","parse","Object","keys","length","table","forEach","c","push","svcacctName","svcacctId","username","logApiKey","toString","e","message","describeConnectionProfile","host","showSecrets","profile","present","jwk","svcacctJwk","password","logApiSecret","authenticationService","keyMap","tenant","authenticationHeaderOverrides","stringify","addExistingServiceAccount","serviceAccountId","privateKeyFile","validate","token","setServiceAccountId","setServiceAccountJwk","err"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\nconst { getAccessTokenForServiceAccount } = frodo.login;\nconst { getConnectionProfilesPath, getConnectionProfileByHost } = frodo.conn;\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n * @param {State} state library state\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(JSON.stringify(jwk), 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\nexport async function addExistingServiceAccount(\n serviceAccountId: string,\n privateKeyFile: string,\n validate: boolean\n): Promise<boolean> {\n try {\n const data = fs.readFileSync(privateKeyFile);\n const jwk = JSON.parse(data.toString());\n if (validate) {\n showSpinner(`Validating service account ${serviceAccountId}...`);\n const token = await getAccessTokenForServiceAccount(\n serviceAccountId,\n jwk\n );\n if (token === null) {\n failSpinner(`Failed to validate service account ${serviceAccountId}.`);\n return false;\n } else {\n succeedSpinner(\n `Successfully validated service account ${serviceAccountId}.`\n );\n }\n }\n state.setServiceAccountId(serviceAccountId);\n state.setServiceAccountJwk(jwk);\n return true;\n } catch (err) {\n failSpinner(\n `Failed to validate service account ${serviceAccountId}: ${err}.`\n );\n }\n return false;\n}\n"],"mappings":"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"}
|