@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +275 -4
- package/esm/app.js +20 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +28 -6
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +7 -4
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +7 -4
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +7 -4
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +7 -4
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +7 -4
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +7 -4
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +7 -4
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +1 -1
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +7 -4
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +7 -4
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +7 -4
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +7 -4
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +7 -4
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +7 -4
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +7 -4
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +7 -4
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +1 -1
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +2 -2
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +45 -0
- package/esm/cli/admin/admin-federation-export.js.map +1 -0
- package/esm/cli/admin/admin-federation-import.js +49 -0
- package/esm/cli/admin/admin-federation-import.js.map +1 -0
- package/esm/cli/admin/admin-federation-list.js +29 -0
- package/esm/cli/admin/admin-federation-list.js.map +1 -0
- package/esm/cli/admin/admin-federation.js +13 -0
- package/esm/cli/admin/admin-federation.js.map +1 -0
- package/esm/cli/admin/admin-get-access-token.js +12 -6
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +11 -5
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
- package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
- package/esm/cli/admin/admin.js +6 -2
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +13 -6
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +7 -4
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -5
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +13 -6
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +7 -4
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -5
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -5
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +7 -4
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +1 -1
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -5
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +13 -6
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +7 -4
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -5
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -5
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +7 -4
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +1 -1
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +7 -4
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +13 -6
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +7 -4
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -5
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -5
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +7 -4
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +3 -3
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +2 -2
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +27 -8
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -5
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +17 -13
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +21 -17
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +12 -8
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -12
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authn/authn-describe.js +30 -0
- package/esm/cli/authn/authn-describe.js.map +1 -0
- package/esm/cli/authn/authn-export.js +26 -0
- package/esm/cli/authn/authn-export.js.map +1 -0
- package/esm/cli/authn/authn-import.js +26 -0
- package/esm/cli/authn/authn-import.js.map +1 -0
- package/esm/cli/authn/authn.js +12 -0
- package/esm/cli/authn/authn.js.map +1 -0
- package/esm/cli/authz/authz-policy-delete.js +11 -8
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +8 -5
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +12 -9
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +10 -7
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +9 -6
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-policy.js +1 -1
- package/esm/cli/authz/authz-policy.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +10 -7
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +8 -5
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +10 -7
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +10 -7
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +7 -4
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-set.js +1 -1
- package/esm/cli/authz/authz-set.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +12 -9
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +9 -6
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +11 -8
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +12 -9
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +8 -5
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz-type.js +1 -1
- package/esm/cli/authz/authz-type.js.map +1 -1
- package/esm/cli/authz/authz.js +2 -2
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +2 -2
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +2 -2
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +2 -2
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +31 -15
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +2 -2
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +10 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +11 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +8 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +1 -1
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +18 -8
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +8 -5
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +9 -6
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +8 -5
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +19 -5
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +7 -4
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +8 -5
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +8 -5
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +8 -5
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +9 -6
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +9 -6
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +8 -5
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +1 -1
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +2 -3
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -6
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +10 -7
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +10 -7
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +20 -6
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +7 -4
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +8 -5
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +8 -5
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +2 -3
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +2 -2
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +9 -6
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +21 -12
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +22 -13
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +7 -4
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +2 -2
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -8
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +15 -12
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +7 -4
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +2 -2
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +16 -10
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +8 -5
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +19 -10
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +12 -6
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +12 -6
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +21 -9
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +11 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +6 -3
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +23 -12
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +2 -2
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
- package/esm/cli/log/log-fetch.js.map +1 -0
- package/esm/cli/log/log-key-delete.js +35 -0
- package/esm/cli/log/log-key-delete.js.map +1 -0
- package/esm/cli/log/log-key-describe.js +22 -0
- package/esm/cli/log/log-key-describe.js.map +1 -0
- package/esm/cli/log/log-key-list.js +26 -0
- package/esm/cli/log/log-key-list.js.map +1 -0
- package/esm/cli/log/log-key.js +8 -0
- package/esm/cli/log/log-key.js.map +1 -0
- package/esm/cli/log/log-list.js +80 -0
- package/esm/cli/log/log-list.js.map +1 -0
- package/esm/cli/log/log-tail.js +77 -0
- package/esm/cli/log/log-tail.js.map +1 -0
- package/esm/cli/{logging/logs.js → log/log.js} +6 -3
- package/esm/cli/log/log.js.map +1 -0
- package/esm/cli/oauth/oauth-client-delete.js +22 -0
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
- package/esm/cli/oauth/oauth-client-describe.js +22 -0
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
- package/esm/cli/oauth/oauth-client-export.js +52 -0
- package/esm/cli/oauth/oauth-client-export.js.map +1 -0
- package/esm/cli/oauth/oauth-client-import.js +57 -0
- package/esm/cli/oauth/oauth-client-import.js.map +1 -0
- package/esm/cli/oauth/oauth-client-list.js +25 -0
- package/esm/cli/oauth/oauth-client-list.js.map +1 -0
- package/esm/cli/oauth/oauth-client.js +14 -0
- package/esm/cli/oauth/oauth-client.js.map +1 -0
- package/esm/cli/oauth/oauth.js +13 -0
- package/esm/cli/oauth/oauth.js.map +1 -0
- package/esm/cli/realm/realm-add-custom-domain.js +8 -5
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +8 -5
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +8 -5
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +2 -2
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +10 -7
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +15 -12
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +8 -5
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +1 -1
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +14 -7
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +8 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +10 -7
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +11 -8
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +8 -5
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +9 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +1 -1
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +2 -2
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +7 -4
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +7 -4
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +8 -5
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +9 -6
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +8 -5
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +2 -2
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +8 -5
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +9 -6
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +11 -9
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +7 -4
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +2 -2
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +57 -0
- package/esm/cli/shell/shell.js.map +1 -0
- package/esm/cli/theme/theme-delete.js +10 -7
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +11 -8
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +12 -9
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +7 -4
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +2 -2
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/help/SampleData.js +7 -0
- package/esm/help/SampleData.js.map +1 -0
- package/esm/launch.js +1 -1
- package/esm/launch.js.map +1 -1
- package/esm/loader.js +2 -2
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +225 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AgentOps.js +128 -87
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +315 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/AuthenticationSettingsOps.js +89 -0
- package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +72 -59
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +13 -6
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +76 -64
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +70 -84
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +74 -43
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +99 -67
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +92 -30
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +6 -3
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +51 -32
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +14 -22
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +84 -55
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +67 -43
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +18 -11
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +75 -66
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +76 -54
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +92 -31
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +106 -23
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +67 -41
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +62 -36
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +132 -41
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +1 -1
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/Wordwrap.js +1 -1
- package/esm/ops/utils/Wordwrap.js.map +1 -1
- package/esm/storage/StaticStorage.js +1 -1
- package/esm/storage/StaticStorage.js.map +1 -1
- package/esm/utils/Config.js +7 -4
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +9 -5
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +32 -66
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +19 -16
- package/esm/utils/Version.js.map +1 -1
- package/global-jest-setup.js +4 -0
- package/package.json +46 -35
- package/esm/cli/logging/logs-fetch.js.map +0 -1
- package/esm/cli/logging/logs-list.js +0 -49
- package/esm/cli/logging/logs-list.js.map +0 -1
- package/esm/cli/logging/logs-tail.js +0 -46
- package/esm/cli/logging/logs-tail.js.map +0 -1
- package/esm/cli/logging/logs.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
package/esm/ops/Saml2Ops.js
CHANGED
|
@@ -2,6 +2,28 @@ 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
|
+
getFilePath,
|
|
8
|
+
getWorkingDirectory
|
|
9
|
+
} = frodo.utils;
|
|
10
|
+
const {
|
|
11
|
+
getTypedFilename,
|
|
12
|
+
saveJsonToFile,
|
|
13
|
+
getRealmString,
|
|
14
|
+
validateImport
|
|
15
|
+
} = frodo.utils;
|
|
16
|
+
const {
|
|
17
|
+
readSaml2ProviderStubs,
|
|
18
|
+
readSaml2Provider,
|
|
19
|
+
readSaml2ProviderStub,
|
|
20
|
+
getSaml2ProviderMetadataUrl,
|
|
21
|
+
getSaml2ProviderMetadata,
|
|
22
|
+
exportSaml2Provider,
|
|
23
|
+
exportSaml2Providers,
|
|
24
|
+
importSaml2Provider,
|
|
25
|
+
importSaml2Providers
|
|
26
|
+
} = frodo.saml2.entityProvider;
|
|
5
27
|
const roleMap = {
|
|
6
28
|
identityProvider: 'IDP',
|
|
7
29
|
serviceProvider: 'SP',
|
|
@@ -57,7 +79,7 @@ export function getTableRowMd(saml2ProviderObj) {
|
|
|
57
79
|
* @param {boolean} long Long list format with details
|
|
58
80
|
*/
|
|
59
81
|
export async function listSaml2Providers(long = false) {
|
|
60
|
-
const providerList = await
|
|
82
|
+
const providerList = await readSaml2ProviderStubs();
|
|
61
83
|
providerList.sort((a, b) => a._id.localeCompare(b._id));
|
|
62
84
|
if (!long) {
|
|
63
85
|
for (const provider of providerList) {
|
|
@@ -68,7 +90,7 @@ export async function listSaml2Providers(long = false) {
|
|
|
68
90
|
for (const provider of providerList) {
|
|
69
91
|
table.push([provider.entityId, provider.location, provider.roles.map(role => roleMap[role]).join(', ')]);
|
|
70
92
|
}
|
|
71
|
-
printMessage(table.toString());
|
|
93
|
+
printMessage(table.toString(), 'data');
|
|
72
94
|
}
|
|
73
95
|
}
|
|
74
96
|
|
|
@@ -78,21 +100,19 @@ export async function listSaml2Providers(long = false) {
|
|
|
78
100
|
*/
|
|
79
101
|
export async function describeSaml2Provider(entityId) {
|
|
80
102
|
try {
|
|
81
|
-
const stub = await
|
|
82
|
-
printMessage(stub);
|
|
103
|
+
const stub = await readSaml2ProviderStub(entityId);
|
|
83
104
|
const {
|
|
84
105
|
location
|
|
85
106
|
} = stub;
|
|
86
|
-
const id = stub._id;
|
|
87
107
|
const roles = stub.roles.map(role => roleMap[role]).join(', ');
|
|
88
|
-
const rawProviderData = await
|
|
108
|
+
const rawProviderData = await readSaml2Provider(entityId);
|
|
89
109
|
delete rawProviderData._id;
|
|
90
110
|
delete rawProviderData._rev;
|
|
91
111
|
rawProviderData.location = location;
|
|
92
112
|
rawProviderData.roles = roles;
|
|
93
|
-
rawProviderData.metadataUrl =
|
|
113
|
+
rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);
|
|
94
114
|
const table = createObjectTable(rawProviderData);
|
|
95
|
-
printMessage(table.toString());
|
|
115
|
+
printMessage(table.toString(), 'data');
|
|
96
116
|
} catch (error) {
|
|
97
117
|
printMessage(error.message, 'error');
|
|
98
118
|
}
|
|
@@ -106,15 +126,18 @@ export async function describeSaml2Provider(entityId) {
|
|
|
106
126
|
export async function exportSaml2MetadataToFile(entityId, file = null) {
|
|
107
127
|
let fileName = file;
|
|
108
128
|
if (!fileName) {
|
|
109
|
-
fileName =
|
|
129
|
+
fileName = getTypedFilename(entityId, 'metadata', 'xml');
|
|
110
130
|
}
|
|
131
|
+
const filePath = getFilePath(fileName, true);
|
|
111
132
|
createProgressBar(1, `Exporting metadata for: ${entityId}`);
|
|
112
133
|
try {
|
|
113
|
-
updateProgressBar(`Writing file ${
|
|
114
|
-
const metaData = await
|
|
115
|
-
saveTextToFile(metaData,
|
|
134
|
+
updateProgressBar(`Writing file ${filePath}`);
|
|
135
|
+
const metaData = await getSaml2ProviderMetadata(entityId);
|
|
136
|
+
saveTextToFile(metaData, filePath);
|
|
116
137
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
117
|
-
stopProgressBar(
|
|
138
|
+
stopProgressBar(
|
|
139
|
+
// @ts-expect-error - brightCyan colors the string, even though it is not a property of string
|
|
140
|
+
`Exported ${entityId.brightCyan} metadata to ${filePath.brightCyan}.`);
|
|
118
141
|
} catch (error) {
|
|
119
142
|
stopProgressBar(`${error}`);
|
|
120
143
|
printMessage(error, 'error');
|
|
@@ -130,19 +153,22 @@ export async function exportSaml2ProviderToFile(entityId, file = null) {
|
|
|
130
153
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`);
|
|
131
154
|
let fileName = file;
|
|
132
155
|
if (!fileName) {
|
|
133
|
-
fileName =
|
|
156
|
+
fileName = getTypedFilename(entityId, 'saml');
|
|
134
157
|
}
|
|
158
|
+
const filePath = getFilePath(fileName, true);
|
|
135
159
|
try {
|
|
136
160
|
createProgressBar(1, `Exporting provider ${entityId}`);
|
|
137
|
-
const fileData = await
|
|
138
|
-
|
|
161
|
+
const fileData = await exportSaml2Provider(entityId);
|
|
162
|
+
saveJsonToFile(fileData, filePath);
|
|
139
163
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
140
|
-
stopProgressBar(
|
|
164
|
+
stopProgressBar(
|
|
165
|
+
// @ts-expect-error - brightCyan colors the string, even though it is not a property of string
|
|
166
|
+
`Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`);
|
|
141
167
|
} catch (err) {
|
|
142
168
|
stopProgressBar(`${err}`);
|
|
143
169
|
printMessage(err, 'error');
|
|
144
170
|
}
|
|
145
|
-
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${
|
|
171
|
+
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`);
|
|
146
172
|
}
|
|
147
173
|
|
|
148
174
|
/**
|
|
@@ -153,11 +179,11 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
153
179
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);
|
|
154
180
|
let fileName = file;
|
|
155
181
|
if (!fileName) {
|
|
156
|
-
fileName =
|
|
182
|
+
fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');
|
|
157
183
|
}
|
|
158
184
|
try {
|
|
159
|
-
const exportData = await
|
|
160
|
-
|
|
185
|
+
const exportData = await exportSaml2Providers();
|
|
186
|
+
saveJsonToFile(exportData, getFilePath(fileName, true));
|
|
161
187
|
} catch (error) {
|
|
162
188
|
var _error$response;
|
|
163
189
|
printMessage(error.message, 'error');
|
|
@@ -170,13 +196,13 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
170
196
|
* Export all entity providers to individual files
|
|
171
197
|
*/
|
|
172
198
|
export async function exportSaml2ProvidersToFiles() {
|
|
173
|
-
const stubs = await
|
|
199
|
+
const stubs = await readSaml2ProviderStubs();
|
|
174
200
|
if (stubs.length > 0) {
|
|
175
201
|
createProgressBar(stubs.length, 'Exporting providers');
|
|
176
202
|
for (const stub of stubs) {
|
|
177
|
-
const fileName =
|
|
178
|
-
const fileData = await
|
|
179
|
-
|
|
203
|
+
const fileName = getTypedFilename(stub.entityId, 'saml');
|
|
204
|
+
const fileData = await exportSaml2Provider(stub.entityId);
|
|
205
|
+
saveJsonToFile(fileData, getFilePath(fileName, true));
|
|
180
206
|
updateProgressBar(`Exported provider ${stub.entityId}`);
|
|
181
207
|
}
|
|
182
208
|
stopProgressBar(`${stubs.length} providers exported.`);
|
|
@@ -191,12 +217,12 @@ export async function exportSaml2ProvidersToFiles() {
|
|
|
191
217
|
* @param {String} file Import file name
|
|
192
218
|
*/
|
|
193
219
|
export async function importSaml2ProviderFromFile(entityId, file) {
|
|
194
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
220
|
+
fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
|
|
195
221
|
if (err) throw err;
|
|
196
222
|
const fileData = JSON.parse(data);
|
|
197
223
|
showSpinner(`Importing ${entityId}...`);
|
|
198
224
|
try {
|
|
199
|
-
await
|
|
225
|
+
await importSaml2Provider(entityId, fileData);
|
|
200
226
|
succeedSpinner(`Imported ${entityId}.`);
|
|
201
227
|
} catch (error) {
|
|
202
228
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -209,15 +235,15 @@ export async function importSaml2ProviderFromFile(entityId, file) {
|
|
|
209
235
|
* @param {String} file Import file name
|
|
210
236
|
*/
|
|
211
237
|
export async function importFirstSaml2ProviderFromFile(file) {
|
|
212
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
238
|
+
fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
|
|
213
239
|
if (err) throw err;
|
|
214
240
|
const fileData = JSON.parse(data);
|
|
215
241
|
// pick the first provider and run with it
|
|
216
242
|
const entityId64 = Object.keys(fileData.saml.remote)[0] || Object.keys(fileData.saml.hosted)[0];
|
|
217
|
-
const entityId =
|
|
243
|
+
const entityId = decodeBase64(entityId64);
|
|
218
244
|
showSpinner(`Importing ${entityId}...`);
|
|
219
245
|
try {
|
|
220
|
-
await
|
|
246
|
+
await importSaml2Provider(entityId, fileData);
|
|
221
247
|
succeedSpinner(`Imported ${entityId}.`);
|
|
222
248
|
} catch (error) {
|
|
223
249
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -230,11 +256,11 @@ export async function importFirstSaml2ProviderFromFile(file) {
|
|
|
230
256
|
* @param {String} file Import file name
|
|
231
257
|
*/
|
|
232
258
|
export async function importSaml2ProvidersFromFile(file) {
|
|
233
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
259
|
+
fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
|
|
234
260
|
if (err) throw err;
|
|
235
261
|
const fileData = JSON.parse(data);
|
|
236
|
-
if (
|
|
237
|
-
await
|
|
262
|
+
if (validateImport(fileData.meta)) {
|
|
263
|
+
await importSaml2Providers(fileData);
|
|
238
264
|
} else {
|
|
239
265
|
printMessage('Import validation failed...', 'error');
|
|
240
266
|
}
|
|
@@ -245,29 +271,25 @@ export async function importSaml2ProvidersFromFile(file) {
|
|
|
245
271
|
* Import all SAML entity providers from all *.saml.json files in the current directory
|
|
246
272
|
*/
|
|
247
273
|
export async function importSaml2ProvidersFromFiles() {
|
|
248
|
-
const names = fs.readdirSync(
|
|
249
|
-
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json'));
|
|
274
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
275
|
+
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json')).map(name => getFilePath(name));
|
|
250
276
|
createProgressBar(jsonFiles.length, 'Importing providers...');
|
|
251
|
-
|
|
252
|
-
total: 0,
|
|
253
|
-
successes: 0,
|
|
254
|
-
warnings: 0,
|
|
255
|
-
failures: 0
|
|
256
|
-
};
|
|
277
|
+
let total = 0;
|
|
257
278
|
for (const file of jsonFiles) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
279
|
+
try {
|
|
280
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
281
|
+
const fileData = JSON.parse(data);
|
|
282
|
+
if (validateImport(fileData.meta)) {
|
|
283
|
+
const result = await importSaml2Providers(fileData);
|
|
284
|
+
total += result.length;
|
|
285
|
+
updateProgressBar(`Imported ${result.length} provider(s) from ${file}.`);
|
|
286
|
+
} else {
|
|
287
|
+
printMessage(`Validation of ${file} failed!`, 'error');
|
|
288
|
+
}
|
|
289
|
+
} catch (error) {
|
|
290
|
+
printMessage(`Error importing providers from ${file}: ${error.message}`, 'error');
|
|
269
291
|
}
|
|
270
292
|
}
|
|
271
|
-
stopProgressBar(`Imported ${
|
|
293
|
+
stopProgressBar(`Imported ${total} provider(s) from ${jsonFiles.length} file(s).`);
|
|
272
294
|
}
|
|
273
|
-
//# sourceMappingURL=Saml2Ops.js.map
|
|
295
|
+
//# sourceMappingURL=Saml2Ops.js.map
|
package/esm/ops/Saml2Ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getOneLineDescription","saml2ProviderObj","roles","key","value","Object","entries","push","description","entityId","entityLocation","length","join","getTableHeaderMd","markdown","getTableRowMd","row","listSaml2Providers","long","providerList","saml2","entityProvider","getSaml2ProviderStubs","sort","a","b","_id","localeCompare","provider","table","location","map","role","toString","describeSaml2Provider","stub","getSaml2ProviderStub","id","rawProviderData","getProviderByLocationAndId","_rev","metadataUrl","getProviderMetadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","utils","impex","getTypedFilename","metaData","getProviderMetadata","brightCyan","exportSaml2ProviderToFile","fileData","exportSaml2Provider","saveJsonToFile","err","exportSaml2ProvidersToFile","getRealmString","exportData","exportSaml2Providers","_error$response","response","status","exportSaml2ProvidersToFiles","stubs","importSaml2ProviderFromFile","readFile","data","JSON","parse","importSaml2Provider","importFirstSaml2ProviderFromFile","entityId64","keys","saml","remote","hosted","helper","base64","decode","importSaml2ProvidersFromFile","validateImport","meta","importSaml2Providers","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","totalStatus","total","successes","warnings","failures","readFileSync","myStatus"],"sources":["ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\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 { saveTextToFile } from '../utils/ExportImportUtils';\nimport type {\n MultiOpStatusInterface,\n Saml2ExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport type { Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n/**\n * Get a one-line description of the saml2 provider object\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n saml2ProviderObj: Saml2ProviderSkeleton\n): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const description = `[${saml2ProviderObj.entityId['brightCyan']}]${\n ' (' + saml2ProviderObj.entityLocation\n }${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;\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 += '| Entity Id | Location | Role(s) |\\n';\n markdown += '| --------- | -------- | ------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the saml2 provider in markdown\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a table-row of the saml2 provider in markdown\n */\nexport function getTableRowMd(saml2ProviderObj: Saml2ProviderSkeleton): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const row = `| ${saml2ProviderObj.entityId} | ${\n saml2ProviderObj.entityLocation\n } | ${roles.length ? roles.join(', ') : ''} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listSaml2Providers(long = false) {\n const providerList = await frodo.saml2.entityProvider.getSaml2ProviderStubs();\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString());\n }\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeSaml2Provider(entityId) {\n try {\n const stub = await frodo.saml2.entityProvider.getSaml2ProviderStub(\n entityId\n );\n printMessage(stub);\n const { location } = stub;\n const id = stub._id;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData =\n await frodo.saml2.entityProvider.getProviderByLocationAndId(location, id);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl =\n frodo.saml2.entityProvider.getProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n } catch (error) {\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2MetadataToFile(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = frodo.utils.impex.getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const metaData = await frodo.saml2.entityProvider.getProviderMetadata(\n entityId\n );\n saveTextToFile(metaData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n } catch (error) {\n stopProgressBar(`${error}`);\n printMessage(error, 'error');\n }\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProviderToFile(entityId, file = null) {\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = frodo.utils.impex.getTypedFilename(entityId, 'saml');\n }\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await frodo.saml2.entityProvider.exportSaml2Provider(\n entityId\n );\n frodo.utils.impex.saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${fileName}]`\n );\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProvidersToFile(file = null) {\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.getRealmString()}Providers`,\n 'saml'\n );\n }\n try {\n const exportData = await frodo.saml2.entityProvider.exportSaml2Providers();\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(\n `exportSaml2ProvidersToFile: ${error.response?.status}`,\n 'error'\n );\n }\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportSaml2ProvidersToFiles() {\n const stubs = await frodo.saml2.entityProvider.getSaml2ProviderStubs();\n if (stubs.length > 0) {\n createProgressBar(stubs.length, 'Exporting providers');\n for (const stub of stubs) {\n const fileName = frodo.utils.impex.getTypedFilename(\n stub.entityId,\n 'saml'\n );\n const fileData = await frodo.saml2.entityProvider.exportSaml2Provider(\n stub.entityId\n );\n frodo.utils.impex.saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${stub.entityId}`);\n }\n stopProgressBar(`${stubs.length} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importSaml2ProviderFromFile(\n entityId: string,\n file: string\n) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n showSpinner(`Importing ${entityId}...`);\n try {\n await frodo.saml2.entityProvider.importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} file Import file name\n */\nexport async function importFirstSaml2ProviderFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data) as Saml2ExportInterface;\n // pick the first provider and run with it\n const entityId64 =\n Object.keys(fileData.saml.remote)[0] ||\n Object.keys(fileData.saml.hosted)[0];\n const entityId = frodo.helper.base64.decode(entityId64);\n showSpinner(`Importing ${entityId}...`);\n try {\n await frodo.saml2.entityProvider.importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importSaml2ProvidersFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(fileData.meta)) {\n await frodo.saml2.entityProvider.importSaml2Providers(fileData);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importSaml2ProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressBar(jsonFiles.length, 'Importing providers...');\n const totalStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(fileData.meta)) {\n const myStatus = await frodo.saml2.entityProvider.importSaml2Providers(\n fileData\n );\n totalStatus.total += myStatus.total;\n totalStatus.successes += myStatus.successes;\n totalStatus.warnings += myStatus.warnings;\n totalStatus.failures += myStatus.failures;\n updateProgressBar(\n `Imported ${myStatus.successes}/${myStatus.total} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressBar(\n `Imported ${totalStatus.successes} of ${totalStatus.total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,OAAOC,EAAE,MAAM,IAAI;AACnB,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,iBAAiB,QACZ,kBAAkB;AACzB,SAASC,cAAc,QAAQ,4BAA4B;AAO3D,MAAMC,OAAO,GAAG;EACdC,gBAAgB,EAAE,KAAK;EACvBC,eAAe,EAAE,IAAI;EACrBC,sBAAsB,EAAE,WAAW;EACnCC,2BAA2B,EAAE;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,gBAAuC,EAC/B;EACR,MAAMC,KAAe,GAAG,EAAE;EAC1B,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACX,OAAO,CAAC,EAAE;IAClD,IAAIM,gBAAgB,CAACE,GAAG,CAAC,EAAE;MACzBD,KAAK,CAACK,IAAI,CAACH,KAAK,CAAC;IACnB;EACF;EACA,MAAMI,WAAW,GAAI,IAAGP,gBAAgB,CAACQ,QAAQ,CAAC,YAAY,CAAE,IAC9D,IAAI,GAAGR,gBAAgB,CAACS,cACzB,GAAER,KAAK,CAACS,MAAM,GAAG,GAAG,GAAGT,KAAK,CAACU,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAI,EAAC;EACtD,OAAOJ,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,gBAAgBA,CAAA,EAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,sCAAsC;EAClDA,QAAQ,IAAI,oCAAoC;EAChD,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACd,gBAAuC,EAAU;EAC7E,MAAMC,KAAe,GAAG,EAAE;EAC1B,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACX,OAAO,CAAC,EAAE;IAClD,IAAIM,gBAAgB,CAACE,GAAG,CAAC,EAAE;MACzBD,KAAK,CAACK,IAAI,CAACH,KAAK,CAAC;IACnB;EACF;EACA,MAAMY,GAAG,GAAI,KAAIf,gBAAgB,CAACQ,QAAS,MACzCR,gBAAgB,CAACS,cAClB,MAAKR,KAAK,CAACS,MAAM,GAAGT,KAAK,CAACU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,IAAG;EAC9C,OAAOI,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeC,kBAAkBA,CAACC,IAAI,GAAG,KAAK,EAAE;EACrD,MAAMC,YAAY,GAAG,MAAMrC,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACC,qBAAqB,CAAC,CAAC;EAC7EH,YAAY,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,GAAG,CAACC,aAAa,CAACF,CAAC,CAACC,GAAG,CAAC,CAAC;EACvD,IAAI,CAACR,IAAI,EAAE;IACT,KAAK,MAAMU,QAAQ,IAAIT,YAAY,EAAE;MACnC9B,YAAY,CAAE,GAAEuC,QAAQ,CAACnB,QAAS,EAAC,EAAE,MAAM,CAAC;IAC9C;EACF,CAAC,MAAM;IACL,MAAMoB,KAAK,GAAG3C,WAAW,CAAC,CACxB,WAAW,CAAC,YAAY,CAAC,EACzB,UAAU,CAAC,YAAY,CAAC,EACxB,SAAS,CAAC,YAAY,CAAC,CACxB,CAAC;IACF,KAAK,MAAM0C,QAAQ,IAAIT,YAAY,EAAE;MACnCU,KAAK,CAACtB,IAAI,CAAC,CACTqB,QAAQ,CAACnB,QAAQ,EACjBmB,QAAQ,CAACE,QAAQ,EACjBF,QAAQ,CAAC1B,KAAK,CAAC6B,GAAG,CAAEC,IAAI,IAAKrC,OAAO,CAACqC,IAAI,CAAC,CAAC,CAACpB,IAAI,CAAC,IAAI,CAAC,CACvD,CAAC;IACJ;IACAvB,YAAY,CAACwC,KAAK,CAACI,QAAQ,CAAC,CAAC,CAAC;EAChC;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeC,qBAAqBA,CAACzB,QAAQ,EAAE;EACpD,IAAI;IACF,MAAM0B,IAAI,GAAG,MAAMrD,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACe,oBAAoB,CAChE3B,QACF,CAAC;IACDpB,YAAY,CAAC8C,IAAI,CAAC;IAClB,MAAM;MAAEL;IAAS,CAAC,GAAGK,IAAI;IACzB,MAAME,EAAE,GAAGF,IAAI,CAACT,GAAG;IACnB,MAAMxB,KAAK,GAAGiC,IAAI,CAACjC,KAAK,CAAC6B,GAAG,CAAEC,IAAY,IAAKrC,OAAO,CAACqC,IAAI,CAAC,CAAC,CAACpB,IAAI,CAAC,IAAI,CAAC;IACxE,MAAM0B,eAAe,GACnB,MAAMxD,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACkB,0BAA0B,CAACT,QAAQ,EAAEO,EAAE,CAAC;IAC3E,OAAOC,eAAe,CAACZ,GAAG;IAC1B,OAAOY,eAAe,CAACE,IAAI;IAC3BF,eAAe,CAACR,QAAQ,GAAGA,QAAQ;IACnCQ,eAAe,CAACpC,KAAK,GAAGA,KAAK;IAC7BoC,eAAe,CAACG,WAAW,GACzB3D,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACqB,sBAAsB,CAACjC,QAAQ,CAAC;IAC7D,MAAMoB,KAAK,GAAG7C,iBAAiB,CAACsD,eAAe,CAAC;IAChDjD,YAAY,CAACwC,KAAK,CAACI,QAAQ,CAAC,CAAC,CAAC;EAChC,CAAC,CAAC,OAAOU,KAAK,EAAE;IACdtD,YAAY,CAACsD,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC;EACtC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,yBAAyBA,CAACpC,QAAQ,EAAEqC,IAAI,GAAG,IAAI,EAAE;EACrE,IAAIC,QAAQ,GAAGD,IAAI;EACnB,IAAI,CAACC,QAAQ,EAAE;IACbA,QAAQ,GAAGjE,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACC,gBAAgB,CAACzC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;EAC5E;EACAxB,iBAAiB,CAAC,CAAC,EAAG,2BAA0BwB,QAAS,EAAC,CAAC;EAC3D,IAAI;IACFhB,iBAAiB,CAAE,gBAAesD,QAAS,EAAC,CAAC;IAC7C,MAAMI,QAAQ,GAAG,MAAMrE,KAAK,CAACsC,KAAK,CAACC,cAAc,CAAC+B,mBAAmB,CACnE3C,QACF,CAAC;IACDf,cAAc,CAACyD,QAAQ,EAAEJ,QAAQ,CAAC;IAClCtD,iBAAiB,CAAE,qBAAoBgB,QAAS,EAAC,CAAC;IAClDlB,eAAe,CACZ,YAAWkB,QAAQ,CAAC4C,UAAW,gBAAeN,QAAQ,CAACM,UAAW,GACrE,CAAC;EACH,CAAC,CAAC,OAAOV,KAAK,EAAE;IACdpD,eAAe,CAAE,GAAEoD,KAAM,EAAC,CAAC;IAC3BtD,YAAY,CAACsD,KAAK,EAAE,OAAO,CAAC;EAC9B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeW,yBAAyBA,CAAC7C,QAAQ,EAAEqC,IAAI,GAAG,IAAI,EAAE;EACrE3D,YAAY,CACT,2DAA0DsB,QAAS,UAASqC,IAAK,GACpF,CAAC;EACD,IAAIC,QAAQ,GAAGD,IAAI;EACnB,IAAI,CAACC,QAAQ,EAAE;IACbA,QAAQ,GAAGjE,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACC,gBAAgB,CAACzC,QAAQ,EAAE,MAAM,CAAC;EACjE;EACA,IAAI;IACFxB,iBAAiB,CAAC,CAAC,EAAG,sBAAqBwB,QAAS,EAAC,CAAC;IACtD,MAAM8C,QAAQ,GAAG,MAAMzE,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACmC,mBAAmB,CACnE/C,QACF,CAAC;IACD3B,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACQ,cAAc,CAACF,QAAQ,EAAER,QAAQ,CAAC;IACpDtD,iBAAiB,CAAE,qBAAoBgB,QAAS,EAAC,CAAC;IAClDlB,eAAe,CACZ,YAAWkB,QAAQ,CAAC4C,UAAW,OAAMN,QAAQ,CAACM,UAAW,GAC5D,CAAC;EACH,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZnE,eAAe,CAAE,GAAEmE,GAAI,EAAC,CAAC;IACzBrE,YAAY,CAACqE,GAAG,EAAE,OAAO,CAAC;EAC5B;EACAvE,YAAY,CACT,yDAAwDsB,QAAS,UAASsC,QAAS,GACtF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeY,0BAA0BA,CAACb,IAAI,GAAG,IAAI,EAAE;EAC5D3D,YAAY,CAAE,uDAAsD2D,IAAK,GAAE,CAAC;EAC5E,IAAIC,QAAQ,GAAGD,IAAI;EACnB,IAAI,CAACC,QAAQ,EAAE;IACbA,QAAQ,GAAGjE,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACC,gBAAgB,CAC1C,MAAKpE,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACW,cAAc,CAAC,CAAE,WAAU,EACnD,MACF,CAAC;EACH;EACA,IAAI;IACF,MAAMC,UAAU,GAAG,MAAM/E,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACyC,oBAAoB,CAAC,CAAC;IAC1EhF,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACQ,cAAc,CAACI,UAAU,EAAEd,QAAQ,CAAC;EACxD,CAAC,CAAC,OAAOJ,KAAK,EAAE;IAAA,IAAAoB,eAAA;IACd1E,YAAY,CAACsD,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC;IACpCvD,YAAY,CACT,+BAA4B,CAAA0E,eAAA,GAAEpB,KAAK,CAACqB,QAAQ,cAAAD,eAAA,uBAAdA,eAAA,CAAgBE,MAAO,EAAC,EACvD,OACF,CAAC;EACH;EACA9E,YAAY,CAAE,qDAAoD2D,IAAK,GAAE,CAAC;AAC5E;;AAEA;AACA;AACA;AACA,OAAO,eAAeoB,2BAA2BA,CAAA,EAAG;EAClD,MAAMC,KAAK,GAAG,MAAMrF,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACC,qBAAqB,CAAC,CAAC;EACtE,IAAI6C,KAAK,CAACxD,MAAM,GAAG,CAAC,EAAE;IACpB1B,iBAAiB,CAACkF,KAAK,CAACxD,MAAM,EAAE,qBAAqB,CAAC;IACtD,KAAK,MAAMwB,IAAI,IAAIgC,KAAK,EAAE;MACxB,MAAMpB,QAAQ,GAAGjE,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACC,gBAAgB,CACjDf,IAAI,CAAC1B,QAAQ,EACb,MACF,CAAC;MACD,MAAM8C,QAAQ,GAAG,MAAMzE,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACmC,mBAAmB,CACnErB,IAAI,CAAC1B,QACP,CAAC;MACD3B,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACQ,cAAc,CAACF,QAAQ,EAAER,QAAQ,CAAC;MACpDtD,iBAAiB,CAAE,qBAAoB0C,IAAI,CAAC1B,QAAS,EAAC,CAAC;IACzD;IACAlB,eAAe,CAAE,GAAE4E,KAAK,CAACxD,MAAO,sBAAqB,CAAC;EACxD,CAAC,MAAM;IACLtB,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC;EACpD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe+E,2BAA2BA,CAC/C3D,QAAgB,EAChBqC,IAAY,EACZ;EACA/D,EAAE,CAACsF,QAAQ,CAACvB,IAAI,EAAE,MAAM,EAAE,OAAOY,GAAG,EAAEY,IAAI,KAAK;IAC7C,IAAIZ,GAAG,EAAE,MAAMA,GAAG;IAClB,MAAMH,QAAQ,GAAGgB,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;IACjChF,WAAW,CAAE,aAAYmB,QAAS,KAAI,CAAC;IACvC,IAAI;MACF,MAAM3B,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACoD,mBAAmB,CAAChE,QAAQ,EAAE8C,QAAQ,CAAC;MACxE/D,cAAc,CAAE,YAAWiB,QAAS,GAAE,CAAC;IACzC,CAAC,CAAC,OAAOkC,KAAK,EAAE;MACdvD,WAAW,CAAE,mBAAkBqB,QAAS,KAAIkC,KAAK,CAACC,OAAQ,EAAC,CAAC;IAC9D;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe8B,gCAAgCA,CAAC5B,IAAY,EAAE;EACnE/D,EAAE,CAACsF,QAAQ,CAACvB,IAAI,EAAE,MAAM,EAAE,OAAOY,GAAG,EAAEY,IAAI,KAAK;IAC7C,IAAIZ,GAAG,EAAE,MAAMA,GAAG;IAClB,MAAMH,QAAQ,GAAGgB,IAAI,CAACC,KAAK,CAACF,IAAI,CAAyB;IACzD;IACA,MAAMK,UAAU,GACdtE,MAAM,CAACuE,IAAI,CAACrB,QAAQ,CAACsB,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,IACpCzE,MAAM,CAACuE,IAAI,CAACrB,QAAQ,CAACsB,IAAI,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,MAAMtE,QAAQ,GAAG3B,KAAK,CAACkG,MAAM,CAACC,MAAM,CAACC,MAAM,CAACP,UAAU,CAAC;IACvDrF,WAAW,CAAE,aAAYmB,QAAS,KAAI,CAAC;IACvC,IAAI;MACF,MAAM3B,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACoD,mBAAmB,CAAChE,QAAQ,EAAE8C,QAAQ,CAAC;MACxE/D,cAAc,CAAE,YAAWiB,QAAS,GAAE,CAAC;IACzC,CAAC,CAAC,OAAOkC,KAAK,EAAE;MACdvD,WAAW,CAAE,mBAAkBqB,QAAS,KAAIkC,KAAK,CAACC,OAAQ,EAAC,CAAC;IAC9D;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeuC,4BAA4BA,CAACrC,IAAY,EAAE;EAC/D/D,EAAE,CAACsF,QAAQ,CAACvB,IAAI,EAAE,MAAM,EAAE,OAAOY,GAAG,EAAEY,IAAI,KAAK;IAC7C,IAAIZ,GAAG,EAAE,MAAMA,GAAG;IAClB,MAAMH,QAAQ,GAAGgB,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;IACjC,IAAIxF,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACmC,cAAc,CAAC7B,QAAQ,CAAC8B,IAAI,CAAC,EAAE;MACnD,MAAMvG,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACiE,oBAAoB,CAAC/B,QAAQ,CAAC;IACjE,CAAC,MAAM;MACLlE,YAAY,CAAC,6BAA6B,EAAE,OAAO,CAAC;IACtD;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,OAAO,eAAekG,6BAA6BA,CAAA,EAAG;EACpD,MAAMC,KAAK,GAAGzG,EAAE,CAAC0G,WAAW,CAAC,GAAG,CAAC;EACjC,MAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,CAAEC,IAAI,IAClCA,IAAI,CAACC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,YAAY,CAC1C,CAAC;EACD7G,iBAAiB,CAACyG,SAAS,CAAC/E,MAAM,EAAE,wBAAwB,CAAC;EAC7D,MAAMoF,WAAmC,GAAG;IAC1CC,KAAK,EAAE,CAAC;IACRC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,CAAC;IACXC,QAAQ,EAAE;EACZ,CAAC;EACD,KAAK,MAAMrD,IAAI,IAAI4C,SAAS,EAAE;IAC5B,MAAMpB,IAAI,GAAGvF,EAAE,CAACqH,YAAY,CAACtD,IAAI,EAAE,MAAM,CAAC;IAC1C,MAAMS,QAAQ,GAAGgB,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;IACjC,IAAIxF,KAAK,CAACkE,KAAK,CAACC,KAAK,CAACmC,cAAc,CAAC7B,QAAQ,CAAC8B,IAAI,CAAC,EAAE;MACnD,MAAMgB,QAAQ,GAAG,MAAMvH,KAAK,CAACsC,KAAK,CAACC,cAAc,CAACiE,oBAAoB,CACpE/B,QACF,CAAC;MACDwC,WAAW,CAACC,KAAK,IAAIK,QAAQ,CAACL,KAAK;MACnCD,WAAW,CAACE,SAAS,IAAII,QAAQ,CAACJ,SAAS;MAC3CF,WAAW,CAACG,QAAQ,IAAIG,QAAQ,CAACH,QAAQ;MACzCH,WAAW,CAACI,QAAQ,IAAIE,QAAQ,CAACF,QAAQ;MACzC1G,iBAAiB,CACd,YAAW4G,QAAQ,CAACJ,SAAU,IAAGI,QAAQ,CAACL,KAAM,qBAAoBlD,IAAK,GAC5E,CAAC;IACH,CAAC,MAAM;MACLzD,YAAY,CAAE,iBAAgByD,IAAK,UAAS,EAAE,OAAO,CAAC;IACxD;EACF;EACAvD,eAAe,CACZ,YAAWwG,WAAW,CAACE,SAAU,OAAMF,WAAW,CAACC,KAAM,qBAAoBN,SAAS,CAAC/E,MAAO,WACjG,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decodeBase64","getFilePath","getWorkingDirectory","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","readSaml2ProviderStubs","readSaml2Provider","readSaml2ProviderStub","getSaml2ProviderMetadataUrl","getSaml2ProviderMetadata","exportSaml2Provider","exportSaml2Providers","importSaml2Provider","importSaml2Providers","saml2","entityProvider","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getOneLineDescription","saml2ProviderObj","roles","key","value","Object","entries","push","description","entityId","entityLocation","length","join","getTableHeaderMd","markdown","getTableRowMd","row","listSaml2Providers","long","providerList","sort","a","b","_id","localeCompare","provider","table","location","map","role","toString","describeSaml2Provider","stub","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","filePath","metaData","brightCyan","exportSaml2ProviderToFile","fileData","err","exportSaml2ProvidersToFile","exportData","_error$response","response","status","exportSaml2ProvidersToFiles","stubs","importSaml2ProviderFromFile","readFile","data","JSON","parse","importFirstSaml2ProviderFromFile","entityId64","keys","saml","remote","hosted","importSaml2ProvidersFromFile","meta","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","readFileSync","result"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { type Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\nimport { type Saml2ExportInterface } from '@rockcarver/frodo-lib/types/ops/Saml2Ops';\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 { saveTextToFile } from '../utils/ExportImportUtils';\n\nconst { decodeBase64, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\nconst {\n readSaml2ProviderStubs,\n readSaml2Provider,\n readSaml2ProviderStub,\n getSaml2ProviderMetadataUrl,\n getSaml2ProviderMetadata,\n exportSaml2Provider,\n exportSaml2Providers,\n importSaml2Provider,\n importSaml2Providers,\n} = frodo.saml2.entityProvider;\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n/**\n * Get a one-line description of the saml2 provider object\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n saml2ProviderObj: Saml2ProviderSkeleton\n): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const description = `[${saml2ProviderObj.entityId['brightCyan']}]${\n ' (' + saml2ProviderObj.entityLocation\n }${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;\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 += '| Entity Id | Location | Role(s) |\\n';\n markdown += '| --------- | -------- | ------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the saml2 provider in markdown\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a table-row of the saml2 provider in markdown\n */\nexport function getTableRowMd(saml2ProviderObj: Saml2ProviderSkeleton): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const row = `| ${saml2ProviderObj.entityId} | ${\n saml2ProviderObj.entityLocation\n } | ${roles.length ? roles.join(', ') : ''} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listSaml2Providers(long = false) {\n const providerList = await readSaml2ProviderStubs();\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString(), 'data');\n }\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeSaml2Provider(entityId) {\n try {\n const stub = await readSaml2ProviderStub(entityId);\n const { location } = stub;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await readSaml2Provider(entityId);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString(), 'data');\n } catch (error) {\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2MetadataToFile(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n const filePath = getFilePath(fileName, true);\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${filePath}`);\n const metaData = await getSaml2ProviderMetadata(entityId);\n saveTextToFile(metaData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} metadata to ${filePath.brightCyan}.`\n );\n } catch (error) {\n stopProgressBar(`${error}`);\n printMessage(error, 'error');\n }\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProviderToFile(entityId, file = null) {\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`\n );\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProvidersToFile(file = null) {\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n try {\n const exportData = await exportSaml2Providers();\n saveJsonToFile(exportData, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(\n `exportSaml2ProvidersToFile: ${error.response?.status}`,\n 'error'\n );\n }\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportSaml2ProvidersToFiles() {\n const stubs = await readSaml2ProviderStubs();\n if (stubs.length > 0) {\n createProgressBar(stubs.length, 'Exporting providers');\n for (const stub of stubs) {\n const fileName = getTypedFilename(stub.entityId, 'saml');\n const fileData = await exportSaml2Provider(stub.entityId);\n saveJsonToFile(fileData, getFilePath(fileName, true));\n updateProgressBar(`Exported provider ${stub.entityId}`);\n }\n stopProgressBar(`${stubs.length} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importSaml2ProviderFromFile(\n entityId: string,\n file: string\n) {\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} file Import file name\n */\nexport async function importFirstSaml2ProviderFromFile(file: string) {\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data) as Saml2ExportInterface;\n // pick the first provider and run with it\n const entityId64 =\n Object.keys(fileData.saml.remote)[0] ||\n Object.keys(fileData.saml.hosted)[0];\n const entityId = decodeBase64(entityId64);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importSaml2ProvidersFromFile(file: string) {\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n await importSaml2Providers(fileData);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importSaml2ProvidersFromFiles() {\n const names = fs.readdirSync(getWorkingDirectory());\n const jsonFiles = names\n .filter((name) => name.toLowerCase().endsWith('.saml.json'))\n .map((name) => getFilePath(name));\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const result = await importSaml2Providers(fileData);\n total += result.length;\n updateProgressBar(\n `Imported ${result.length} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n } catch (error) {\n printMessage(\n `Error importing providers from ${file}: ${error.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(\n `Imported ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Ops.test_.js","names":["Saml2","describe","test","expect","listSaml2Providers","toBeDefined","exportSaml2ProviderToFile","exportSaml2MetadataToFile","describeSaml2Provider","exportSaml2ProvidersToFile","exportSaml2ProvidersToFiles","importSaml2ProviderFromFile","importFirstSaml2ProviderFromFile","importSaml2ProvidersFromFile","importSaml2ProvidersFromFiles","exportRawSaml2ProviderToFile","exportRawSaml2ProvidersToFile","exportRawSaml2ProvidersToFiles","importRawSaml2ProvidersFromFile","importRawSaml2ProvidersFromFiles","importRawSaml2ProviderFromFile"],"sources":["ops/Saml2Ops.test_.ts"],"sourcesContent":["import * as Saml2 from './Saml2Ops';\n\ndescribe('Saml2Ops - listSaml2Providers()', () => {\n test('listSaml2Providers() 0: Method is implemented', async () => {\n expect(Saml2.listSaml2Providers).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProviderToFile()', () => {\n test('exportSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2MetadataToFile()', () => {\n test('exportSaml2MetadataToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2MetadataToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - describeSaml2Provider()', () => {\n test('describeSaml2Provider() 0: Method is implemented', async () => {\n expect(Saml2.describeSaml2Provider).toBeDefined();\n });\n\n // test('describeSaml2Provider() 1: Describe saml2 entity provider', async () => {\n // mockFindSaml2Providers(mock);\n // mockGetSaml2ProviderByLocationAndId(mock);\n // mockGetSaml2ProviderMetadata(mock);\n // expect.assertions(2);\n // await Saml2.describeSaml2Provider('iSPAzure');\n // expect(true).toBeTruthy();\n // });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFile()', () => {\n test('exportSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFiles()', () => {\n test('exportSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProviderFromFile()', () => {\n test('importSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importFirstSaml2ProviderFromFile()', () => {\n test('importFirstSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importFirstSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFile()', () => {\n test('importSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFiles()', () => {\n test('importSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProviderToFile()', () => {\n test('exportRawSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFile()', () => {\n test('exportRawSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFiles()', () => {\n test('exportRawSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFile()', () => {\n test('importRawSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFiles()', () => {\n test('importRawSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProviderFromFile()', () => {\n test('importRawSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProviderFromFile).toBeDefined();\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.test_.js","names":["Saml2","describe","test","expect","listSaml2Providers","toBeDefined","exportSaml2ProviderToFile","exportSaml2MetadataToFile","describeSaml2Provider","exportSaml2ProvidersToFile","exportSaml2ProvidersToFiles","importSaml2ProviderFromFile","importFirstSaml2ProviderFromFile","importSaml2ProvidersFromFile","importSaml2ProvidersFromFiles","exportRawSaml2ProviderToFile","exportRawSaml2ProvidersToFile","exportRawSaml2ProvidersToFiles","importRawSaml2ProvidersFromFile","importRawSaml2ProvidersFromFiles","importRawSaml2ProviderFromFile"],"sources":["../../src/ops/Saml2Ops.test_.ts"],"sourcesContent":["import * as Saml2 from './Saml2Ops';\n\ndescribe('Saml2Ops - listSaml2Providers()', () => {\n test('listSaml2Providers() 0: Method is implemented', async () => {\n expect(Saml2.listSaml2Providers).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProviderToFile()', () => {\n test('exportSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2MetadataToFile()', () => {\n test('exportSaml2MetadataToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2MetadataToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - describeSaml2Provider()', () => {\n test('describeSaml2Provider() 0: Method is implemented', async () => {\n expect(Saml2.describeSaml2Provider).toBeDefined();\n });\n\n // test('describeSaml2Provider() 1: Describe saml2 entity provider', async () => {\n // mockFindSaml2Providers(mock);\n // mockGetSaml2ProviderByLocationAndId(mock);\n // mockGetSaml2ProviderMetadata(mock);\n // expect.assertions(2);\n // await Saml2.describeSaml2Provider('iSPAzure');\n // expect(true).toBeTruthy();\n // });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFile()', () => {\n test('exportSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFiles()', () => {\n test('exportSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProviderFromFile()', () => {\n test('importSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importFirstSaml2ProviderFromFile()', () => {\n test('importFirstSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importFirstSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFile()', () => {\n test('importSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFiles()', () => {\n test('importSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProviderToFile()', () => {\n test('exportRawSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFile()', () => {\n test('exportRawSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFiles()', () => {\n test('exportRawSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFile()', () => {\n test('importRawSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFiles()', () => {\n test('importRawSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProviderFromFile()', () => {\n test('importRawSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProviderFromFile).toBeDefined();\n });\n});\n"],"mappings":"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"}
|
package/esm/ops/ScriptOps.js
CHANGED
|
@@ -4,6 +4,19 @@ import fs from 'fs';
|
|
|
4
4
|
import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, spinSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
5
5
|
import { getTypedFilename, saveJsonToFile, saveTextToFile, titleCase } from '../utils/ExportImportUtils';
|
|
6
6
|
import wordwrap from './utils/Wordwrap';
|
|
7
|
+
const {
|
|
8
|
+
readScripts,
|
|
9
|
+
exportScript,
|
|
10
|
+
exportScriptByName,
|
|
11
|
+
exportScripts,
|
|
12
|
+
importScripts
|
|
13
|
+
} = frodo.script;
|
|
14
|
+
const {
|
|
15
|
+
isBase64Encoded,
|
|
16
|
+
getFilePath,
|
|
17
|
+
getWorkingDirectory
|
|
18
|
+
} = frodo.utils;
|
|
19
|
+
|
|
7
20
|
/**
|
|
8
21
|
* Get a one-line description of the script object
|
|
9
22
|
* @param {ScriptSkeleton} scriptObj script object to describe
|
|
@@ -48,7 +61,7 @@ export async function listScripts(long = false) {
|
|
|
48
61
|
let outcome = true;
|
|
49
62
|
debugMessage(`Cli.ScriptOps.listScripts: start`);
|
|
50
63
|
try {
|
|
51
|
-
const scripts = await
|
|
64
|
+
const scripts = await readScripts();
|
|
52
65
|
scripts.sort((a, b) => a.name.localeCompare(b.name));
|
|
53
66
|
if (long) {
|
|
54
67
|
const table = createTable(['Name', 'UUID', 'Language', 'Context', 'Description']);
|
|
@@ -88,10 +101,11 @@ export async function exportScriptToFile(scriptId, file) {
|
|
|
88
101
|
if (file) {
|
|
89
102
|
fileName = file;
|
|
90
103
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
104
|
+
const filePath = getFilePath(fileName, true);
|
|
105
|
+
spinSpinner(`Exporting script '${scriptId}' to '${filePath}'...`);
|
|
106
|
+
const scriptExport = await exportScript(scriptId);
|
|
107
|
+
saveJsonToFile(scriptExport, filePath);
|
|
108
|
+
succeedSpinner(`Exported script '${scriptId}' to '${filePath}'.`);
|
|
95
109
|
debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);
|
|
96
110
|
return true;
|
|
97
111
|
} catch (error) {
|
|
@@ -116,10 +130,11 @@ export async function exportScriptByNameToFile(name, file) {
|
|
|
116
130
|
if (file) {
|
|
117
131
|
fileName = file;
|
|
118
132
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
133
|
+
const filePath = getFilePath(fileName, true);
|
|
134
|
+
spinSpinner(`Exporting script '${name}' to '${filePath}'...`);
|
|
135
|
+
const scriptExport = await exportScriptByName(name);
|
|
136
|
+
saveJsonToFile(scriptExport, filePath);
|
|
137
|
+
succeedSpinner(`Exported script '${name}' to '${filePath}'.`);
|
|
123
138
|
debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);
|
|
124
139
|
return true;
|
|
125
140
|
} catch (error) {
|
|
@@ -142,8 +157,8 @@ export async function exportScriptsToFile(file) {
|
|
|
142
157
|
if (file) {
|
|
143
158
|
fileName = file;
|
|
144
159
|
}
|
|
145
|
-
const scriptExport = await
|
|
146
|
-
saveJsonToFile(scriptExport, fileName);
|
|
160
|
+
const scriptExport = await exportScripts();
|
|
161
|
+
saveJsonToFile(scriptExport, getFilePath(fileName, true));
|
|
147
162
|
debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);
|
|
148
163
|
return true;
|
|
149
164
|
} catch (error) {
|
|
@@ -161,14 +176,14 @@ export async function exportScriptsToFile(file) {
|
|
|
161
176
|
export async function exportScriptsToFiles() {
|
|
162
177
|
let outcome = true;
|
|
163
178
|
debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);
|
|
164
|
-
const scriptList = await
|
|
179
|
+
const scriptList = await readScripts();
|
|
165
180
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
166
181
|
for (const script of scriptList) {
|
|
167
182
|
try {
|
|
168
183
|
updateProgressBar(`Reading script ${script.name}`);
|
|
169
184
|
const fileName = getTypedFilename(script.name, 'script');
|
|
170
|
-
const scriptExport = await
|
|
171
|
-
saveJsonToFile(scriptExport, fileName);
|
|
185
|
+
const scriptExport = await exportScriptByName(script.name);
|
|
186
|
+
saveJsonToFile(scriptExport, getFilePath(fileName, true));
|
|
172
187
|
} catch (error) {
|
|
173
188
|
outcome = false;
|
|
174
189
|
printMessage(`Error exporting script '${script.name}': ${error.message}`, 'error');
|
|
@@ -182,20 +197,22 @@ export async function exportScriptsToFiles() {
|
|
|
182
197
|
export async function exportScriptsToFilesExtract() {
|
|
183
198
|
let outcome = true;
|
|
184
199
|
debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);
|
|
185
|
-
const scriptList = await
|
|
200
|
+
const scriptList = await readScripts();
|
|
186
201
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
187
202
|
for (const script of scriptList) {
|
|
188
203
|
try {
|
|
189
204
|
updateProgressBar(`Reading script ${script.name}`);
|
|
190
205
|
const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';
|
|
191
206
|
const scriptFileName = getTypedFilename(script.name, 'script', fileExtension);
|
|
207
|
+
const scriptFilePath = getFilePath(scriptFileName, true);
|
|
192
208
|
const fileName = getTypedFilename(script.name, 'script');
|
|
193
|
-
const
|
|
209
|
+
const filePath = getFilePath(fileName, true);
|
|
210
|
+
const scriptExport = await exportScriptByName(script.name);
|
|
194
211
|
const scriptSkeleton = getScriptSkeleton(scriptExport);
|
|
195
212
|
const scriptText = Array.isArray(scriptSkeleton.script) ? scriptSkeleton.script.join('\n') : scriptSkeleton.script;
|
|
196
|
-
scriptSkeleton.script = `file://${
|
|
197
|
-
saveTextToFile(scriptText,
|
|
198
|
-
saveJsonToFile(scriptExport,
|
|
213
|
+
scriptSkeleton.script = `file://${scriptFilePath}`;
|
|
214
|
+
saveTextToFile(scriptText, scriptFilePath);
|
|
215
|
+
saveJsonToFile(scriptExport, filePath);
|
|
199
216
|
} catch (error) {
|
|
200
217
|
outcome = false;
|
|
201
218
|
printMessage(`Error exporting script '${script.name}': ${error.message}`, 'error');
|
|
@@ -207,6 +224,44 @@ export async function exportScriptsToFilesExtract() {
|
|
|
207
224
|
return outcome;
|
|
208
225
|
}
|
|
209
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Check if a string is a valid URL
|
|
229
|
+
* @param {string} urlString input string to be evaluated
|
|
230
|
+
* @returns {boolean} true if a valid URL, false otherwise
|
|
231
|
+
*/
|
|
232
|
+
function isValidUrl(urlString) {
|
|
233
|
+
try {
|
|
234
|
+
return Boolean(new URL(urlString));
|
|
235
|
+
} catch (error) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function isScriptExtracted(importData) {
|
|
240
|
+
debugMessage(`Cli.ScriptOps.isScriptExtracted: start`);
|
|
241
|
+
let extracted = true;
|
|
242
|
+
for (const scriptId of Object.keys(importData.script)) {
|
|
243
|
+
const script = importData.script[scriptId].script;
|
|
244
|
+
if (Array.isArray(script)) {
|
|
245
|
+
debugMessage(`Cli.ScriptOps.isScriptExtracted: script is string array`);
|
|
246
|
+
extracted = false;
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
if (isValidUrl(script)) {
|
|
250
|
+
debugMessage(`Cli.ScriptOps.isScriptExtracted: script is extracted`);
|
|
251
|
+
extracted = true;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
if (isBase64Encoded) {
|
|
255
|
+
debugMessage(`Cli.ScriptOps.isScriptExtracted: script is base64-encoded`);
|
|
256
|
+
extracted = false;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
debugMessage(`Cli.ScriptOps.isScriptExtracted: end [extracted=${extracted}]`);
|
|
262
|
+
return extracted;
|
|
263
|
+
}
|
|
264
|
+
|
|
210
265
|
/**
|
|
211
266
|
* Import script(s) from file
|
|
212
267
|
* @param {string} name Optional name of script. If supplied, only the script of that name is imported
|
|
@@ -216,12 +271,18 @@ export async function exportScriptsToFilesExtract() {
|
|
|
216
271
|
*/
|
|
217
272
|
export async function importScriptsFromFile(name, file, reUuid = false) {
|
|
218
273
|
let outcome = false;
|
|
274
|
+
const filePath = getFilePath(file);
|
|
219
275
|
debugMessage(`Cli.ScriptOps.importScriptsFromFile: start`);
|
|
220
|
-
fs.readFile(
|
|
276
|
+
fs.readFile(filePath, 'utf8', async (err, data) => {
|
|
221
277
|
try {
|
|
222
278
|
if (err) throw err;
|
|
223
279
|
const importData = JSON.parse(data);
|
|
224
|
-
|
|
280
|
+
if (isScriptExtracted(importData)) {
|
|
281
|
+
await handleScriptFileImport(filePath, reUuid, false);
|
|
282
|
+
} else {
|
|
283
|
+
await importScripts(name, importData, reUuid);
|
|
284
|
+
}
|
|
285
|
+
outcome = true;
|
|
225
286
|
} catch (error) {
|
|
226
287
|
printMessage(`Error exporting script '${name}': ${error.message}`, 'error');
|
|
227
288
|
debugMessage(error);
|
|
@@ -244,16 +305,16 @@ export async function importScriptsFromFiles(watch, reUuid, validateScripts) {
|
|
|
244
305
|
* Run on file change detection, as well as on initial run.
|
|
245
306
|
*/
|
|
246
307
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
247
|
-
function onChange(path, _stats) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
308
|
+
async function onChange(path, _stats) {
|
|
309
|
+
try {
|
|
310
|
+
await handleScriptFileImport(path, reUuid, validateScripts);
|
|
311
|
+
} catch (error) {
|
|
312
|
+
printMessage(`${path}: ${error.message}`, 'error');
|
|
313
|
+
}
|
|
253
314
|
}
|
|
254
315
|
|
|
255
316
|
// We watch json files and script files.
|
|
256
|
-
const watcher = chokidar.watch([
|
|
317
|
+
const watcher = chokidar.watch([`${getWorkingDirectory()}/**/*.script.json`, `${getWorkingDirectory()}/**/*.script.js`, `${getWorkingDirectory()}/**/*.script.groovy`], {
|
|
257
318
|
persistent: watch
|
|
258
319
|
});
|
|
259
320
|
watcher.on('add', onChange).on('change', onChange).on('error', error => {
|
|
@@ -279,8 +340,8 @@ async function handleScriptFileImport(file, reUuid, validateScripts) {
|
|
|
279
340
|
debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);
|
|
280
341
|
const scriptFile = getScriptFile(file);
|
|
281
342
|
const script = getScriptExportByScriptFile(scriptFile);
|
|
282
|
-
const
|
|
283
|
-
if (
|
|
343
|
+
const imported = await importScripts('', script, reUuid, validateScripts);
|
|
344
|
+
if (imported) {
|
|
284
345
|
printMessage(`Imported '${scriptFile}'`);
|
|
285
346
|
}
|
|
286
347
|
debugMessage(`Cli.ScriptOps.handleScriptFileImport: end`);
|
|
@@ -372,4 +433,4 @@ function getScriptId(script) {
|
|
|
372
433
|
}
|
|
373
434
|
return scriptIds[0];
|
|
374
435
|
}
|
|
375
|
-
//# sourceMappingURL=ScriptOps.js.map
|
|
436
|
+
//# sourceMappingURL=ScriptOps.js.map
|