@rockcarver/frodo-cli 2.0.0-6 → 2.0.0-7
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 +5 -1
- package/esm/app.js +4 -1
- package/esm/app.js.map +1 -1
- package/esm/cli/_template/something-delete.js +4 -1
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +4 -1
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +4 -1
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +4 -1
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +4 -1
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +4 -1
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +4 -1
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-export.js +4 -1
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +4 -1
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +4 -1
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +4 -1
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +4 -1
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +4 -1
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +4 -1
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +4 -1
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -2
- 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 +10 -3
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +4 -1
- package/esm/cli/admin/admin-federation-export.js.map +1 -1
- package/esm/cli/admin/admin-federation-import.js +7 -4
- package/esm/cli/admin/admin-federation-import.js.map +1 -1
- package/esm/cli/admin/admin-federation-list.js +4 -1
- package/esm/cli/admin/admin-federation-list.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +8 -2
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +8 -2
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +8 -2
- 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 +8 -2
- 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 +8 -2
- 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 +8 -2
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +8 -2
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +8 -2
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +8 -2
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +8 -2
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +10 -3
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +4 -1
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +4 -1
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +10 -3
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +4 -1
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +4 -1
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +4 -1
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +4 -1
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-import.js +4 -1
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +10 -3
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +4 -1
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +4 -1
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +4 -1
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +4 -1
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-list.js +4 -1
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +10 -3
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +4 -1
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +4 -1
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +4 -1
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +4 -1
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/app/app-delete.js +4 -1
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +4 -1
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +6 -3
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +7 -4
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +4 -1
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/authz/authz-policy-delete.js +6 -3
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +4 -1
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +8 -5
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +7 -4
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +5 -2
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +5 -2
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +4 -1
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +6 -3
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +7 -4
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +4 -1
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +6 -3
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +5 -2
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +7 -4
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +8 -5
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +4 -1
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +18 -5
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/email/email-template-export.js +6 -3
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +7 -4
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +4 -1
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +15 -5
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +4 -1
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +5 -2
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +4 -1
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +4 -1
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +4 -1
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +4 -1
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +4 -1
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +4 -1
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +4 -1
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +4 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +5 -2
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +4 -1
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +4 -1
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +5 -2
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +4 -1
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +4 -1
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +4 -1
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +4 -1
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +5 -2
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/idm/idm-count.js +4 -1
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +6 -3
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +7 -4
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +4 -1
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idp/idp-export.js +4 -1
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +7 -4
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +4 -1
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/info/info.js +8 -2
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +5 -2
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +14 -6
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +8 -2
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +8 -2
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +6 -3
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +7 -4
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +4 -1
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +10 -3
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/log/log-fetch.js +16 -6
- package/esm/cli/log/log-fetch.js.map +1 -1
- package/esm/cli/log/log-key-delete.js +5 -2
- package/esm/cli/log/log-key-delete.js.map +1 -1
- package/esm/cli/log/log-key-describe.js +4 -1
- package/esm/cli/log/log-key-describe.js.map +1 -1
- package/esm/cli/log/log-key-list.js +4 -1
- package/esm/cli/log/log-key-list.js.map +1 -1
- package/esm/cli/log/log-list.js +14 -4
- package/esm/cli/log/log-list.js.map +1 -1
- package/esm/cli/log/log-tail.js +16 -6
- package/esm/cli/log/log-tail.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +4 -1
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +4 -1
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +4 -1
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +8 -2
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +6 -3
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +7 -4
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +4 -1
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +11 -4
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +4 -1
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +6 -3
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +7 -4
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +4 -1
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +5 -2
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/script/script-delete.js +4 -1
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +4 -1
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +4 -1
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +4 -1
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +4 -1
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/service/service-delete.js +5 -2
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +6 -3
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +7 -4
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +4 -1
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +6 -3
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +7 -4
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +8 -5
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +4 -1
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +17 -9
- package/esm/ops/AdminFederationOps.js.map +1 -1
- package/esm/ops/AgentOps.js +62 -36
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +22 -10
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +10 -3
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +23 -15
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +34 -21
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +17 -9
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +46 -30
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +21 -11
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +5 -2
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +25 -12
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +8 -2
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +36 -21
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +35 -18
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +11 -6
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +34 -18
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +43 -23
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +18 -10
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +28 -14
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +38 -17
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +35 -19
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +23 -12
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/utils/Config.js +6 -3
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +5 -2
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +6 -3
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +7 -3
- package/esm/utils/Version.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","listResourceTypes","long","outcome","resourceTypes","authz","resourceType","getResourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","getResourceType","error","_error$response","response","status","getRealm","_error$response2","_error$response2$data","data","describeResourceTypeByName","resourceTypeName","getResourceTypeByName","_error$response3","_error$response4","_error$response4$data","deleteResourceType","errors","length","errorMessages","map","_error$response5","_error$response5$data","join","deleteResourceTypeByName","_error$response6","_error$response6$data","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceType","exportResourceTypeByNameToFile","exportResourceTypeByName","exportResourceTypesToFile","helper","utils","getRealmName","exportResourceTypes","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceType","importResourceTypeByNameFromFile","importResourceTypeByName","importFirstResourceTypeFromFile","importFirstResourceType","importResourceTypesFromFile","importResourceTypes","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport { ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await frodo.authz.resourceType.getResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await frodo.authz.resourceType.getResourceType(\n resourceTypeUuid\n );\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await frodo.authz.resourceType.getResourceTypeByName(\n resourceTypeName\n );\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await frodo.authz.resourceType.deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await frodo.authz.resourceType.deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await frodo.authz.resourceType.getResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await frodo.authz.resourceType.deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceType(\n resourceTypeUuid\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceTypeByName(\n resourceTypeName\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.resourceType.exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] =\n await frodo.authz.resourceType.getResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await frodo.authz.resourceType.exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceTypeByName(\n resourceTypeName,\n fileData\n );\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.resourceType.importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await frodo.authz.resourceType.importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getResourceTypes","getResourceType","getResourceTypeByName","exportResourceType","exportResourceTypeByName","exportResourceTypes","importResourceType","importResourceTypeByName","importFirstResourceType","importResourceTypes","authz","resourceType","listResourceTypes","long","outcome","resourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","error","_error$response","response","status","getRealm","_error$response2","_error$response2$data","data","describeResourceTypeByName","resourceTypeName","_error$response3","_error$response4","_error$response4$data","deleteResourceType","errors","length","errorMessages","map","_error$response5","_error$response5$data","join","deleteResourceTypeByName","_error$response6","_error$response6$data","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceTypeByNameToFile","exportResourceTypesToFile","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceTypeByNameFromFile","importFirstResourceTypeFromFile","importResourceTypesFromFile","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport { ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\n\nconst { getRealmName } = frodo.helper.utils;\nconst {\n getResourceTypes,\n getResourceType,\n getResourceTypeByName,\n exportResourceType,\n exportResourceTypeByName,\n exportResourceTypes,\n importResourceType,\n importResourceTypeByName,\n importFirstResourceType,\n importResourceTypes,\n} = frodo.authz.resourceType;\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await getResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceType(resourceTypeUuid);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceTypeByName(resourceTypeName);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await getResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceType(resourceTypeUuid);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypeByName(resourceTypeName);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] = await getResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypeByName(resourceTypeName, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
package/esm/ops/Saml2Ops.js
CHANGED
|
@@ -2,6 +2,26 @@ import { frodo } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { createObjectTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { saveTextToFile } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
decode
|
|
7
|
+
} = frodo.helper.base64;
|
|
8
|
+
const {
|
|
9
|
+
getTypedFilename,
|
|
10
|
+
saveJsonToFile,
|
|
11
|
+
getRealmString,
|
|
12
|
+
validateImport
|
|
13
|
+
} = frodo.utils.impex;
|
|
14
|
+
const {
|
|
15
|
+
getSaml2ProviderStubs,
|
|
16
|
+
getProviderByLocationAndId,
|
|
17
|
+
getSaml2ProviderStub,
|
|
18
|
+
getProviderMetadataUrl,
|
|
19
|
+
getProviderMetadata,
|
|
20
|
+
exportSaml2Provider,
|
|
21
|
+
exportSaml2Providers,
|
|
22
|
+
importSaml2Provider,
|
|
23
|
+
importSaml2Providers
|
|
24
|
+
} = frodo.saml2.entityProvider;
|
|
5
25
|
const roleMap = {
|
|
6
26
|
identityProvider: 'IDP',
|
|
7
27
|
serviceProvider: 'SP',
|
|
@@ -57,7 +77,7 @@ export function getTableRowMd(saml2ProviderObj) {
|
|
|
57
77
|
* @param {boolean} long Long list format with details
|
|
58
78
|
*/
|
|
59
79
|
export async function listSaml2Providers(long = false) {
|
|
60
|
-
const providerList = await
|
|
80
|
+
const providerList = await getSaml2ProviderStubs();
|
|
61
81
|
providerList.sort((a, b) => a._id.localeCompare(b._id));
|
|
62
82
|
if (!long) {
|
|
63
83
|
for (const provider of providerList) {
|
|
@@ -78,19 +98,19 @@ export async function listSaml2Providers(long = false) {
|
|
|
78
98
|
*/
|
|
79
99
|
export async function describeSaml2Provider(entityId) {
|
|
80
100
|
try {
|
|
81
|
-
const stub = await
|
|
101
|
+
const stub = await getSaml2ProviderStub(entityId);
|
|
82
102
|
printMessage(stub);
|
|
83
103
|
const {
|
|
84
104
|
location
|
|
85
105
|
} = stub;
|
|
86
106
|
const id = stub._id;
|
|
87
107
|
const roles = stub.roles.map(role => roleMap[role]).join(', ');
|
|
88
|
-
const rawProviderData = await
|
|
108
|
+
const rawProviderData = await getProviderByLocationAndId(location, id);
|
|
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 = getProviderMetadataUrl(entityId);
|
|
94
114
|
const table = createObjectTable(rawProviderData);
|
|
95
115
|
printMessage(table.toString());
|
|
96
116
|
} catch (error) {
|
|
@@ -106,12 +126,12 @@ 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
|
}
|
|
111
131
|
createProgressBar(1, `Exporting metadata for: ${entityId}`);
|
|
112
132
|
try {
|
|
113
133
|
updateProgressBar(`Writing file ${fileName}`);
|
|
114
|
-
const metaData = await
|
|
134
|
+
const metaData = await getProviderMetadata(entityId);
|
|
115
135
|
saveTextToFile(metaData, fileName);
|
|
116
136
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
117
137
|
stopProgressBar(`Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`);
|
|
@@ -130,12 +150,12 @@ export async function exportSaml2ProviderToFile(entityId, file = null) {
|
|
|
130
150
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`);
|
|
131
151
|
let fileName = file;
|
|
132
152
|
if (!fileName) {
|
|
133
|
-
fileName =
|
|
153
|
+
fileName = getTypedFilename(entityId, 'saml');
|
|
134
154
|
}
|
|
135
155
|
try {
|
|
136
156
|
createProgressBar(1, `Exporting provider ${entityId}`);
|
|
137
|
-
const fileData = await
|
|
138
|
-
|
|
157
|
+
const fileData = await exportSaml2Provider(entityId);
|
|
158
|
+
saveJsonToFile(fileData, fileName);
|
|
139
159
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
140
160
|
stopProgressBar(`Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`);
|
|
141
161
|
} catch (err) {
|
|
@@ -153,11 +173,11 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
153
173
|
debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);
|
|
154
174
|
let fileName = file;
|
|
155
175
|
if (!fileName) {
|
|
156
|
-
fileName =
|
|
176
|
+
fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');
|
|
157
177
|
}
|
|
158
178
|
try {
|
|
159
|
-
const exportData = await
|
|
160
|
-
|
|
179
|
+
const exportData = await exportSaml2Providers();
|
|
180
|
+
saveJsonToFile(exportData, fileName);
|
|
161
181
|
} catch (error) {
|
|
162
182
|
var _error$response;
|
|
163
183
|
printMessage(error.message, 'error');
|
|
@@ -170,13 +190,13 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
170
190
|
* Export all entity providers to individual files
|
|
171
191
|
*/
|
|
172
192
|
export async function exportSaml2ProvidersToFiles() {
|
|
173
|
-
const stubs = await
|
|
193
|
+
const stubs = await getSaml2ProviderStubs();
|
|
174
194
|
if (stubs.length > 0) {
|
|
175
195
|
createProgressBar(stubs.length, 'Exporting providers');
|
|
176
196
|
for (const stub of stubs) {
|
|
177
|
-
const fileName =
|
|
178
|
-
const fileData = await
|
|
179
|
-
|
|
197
|
+
const fileName = getTypedFilename(stub.entityId, 'saml');
|
|
198
|
+
const fileData = await exportSaml2Provider(stub.entityId);
|
|
199
|
+
saveJsonToFile(fileData, fileName);
|
|
180
200
|
updateProgressBar(`Exported provider ${stub.entityId}`);
|
|
181
201
|
}
|
|
182
202
|
stopProgressBar(`${stubs.length} providers exported.`);
|
|
@@ -196,7 +216,7 @@ export async function importSaml2ProviderFromFile(entityId, file) {
|
|
|
196
216
|
const fileData = JSON.parse(data);
|
|
197
217
|
showSpinner(`Importing ${entityId}...`);
|
|
198
218
|
try {
|
|
199
|
-
await
|
|
219
|
+
await importSaml2Provider(entityId, fileData);
|
|
200
220
|
succeedSpinner(`Imported ${entityId}.`);
|
|
201
221
|
} catch (error) {
|
|
202
222
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -214,10 +234,10 @@ export async function importFirstSaml2ProviderFromFile(file) {
|
|
|
214
234
|
const fileData = JSON.parse(data);
|
|
215
235
|
// pick the first provider and run with it
|
|
216
236
|
const entityId64 = Object.keys(fileData.saml.remote)[0] || Object.keys(fileData.saml.hosted)[0];
|
|
217
|
-
const entityId =
|
|
237
|
+
const entityId = decode(entityId64);
|
|
218
238
|
showSpinner(`Importing ${entityId}...`);
|
|
219
239
|
try {
|
|
220
|
-
await
|
|
240
|
+
await importSaml2Provider(entityId, fileData);
|
|
221
241
|
succeedSpinner(`Imported ${entityId}.`);
|
|
222
242
|
} catch (error) {
|
|
223
243
|
failSpinner(`Error importing ${entityId}: ${error.message}`);
|
|
@@ -233,8 +253,8 @@ export async function importSaml2ProvidersFromFile(file) {
|
|
|
233
253
|
fs.readFile(file, 'utf8', async (err, data) => {
|
|
234
254
|
if (err) throw err;
|
|
235
255
|
const fileData = JSON.parse(data);
|
|
236
|
-
if (
|
|
237
|
-
await
|
|
256
|
+
if (validateImport(fileData.meta)) {
|
|
257
|
+
await importSaml2Providers(fileData);
|
|
238
258
|
} else {
|
|
239
259
|
printMessage('Import validation failed...', 'error');
|
|
240
260
|
}
|
|
@@ -257,8 +277,8 @@ export async function importSaml2ProvidersFromFiles() {
|
|
|
257
277
|
for (const file of jsonFiles) {
|
|
258
278
|
const data = fs.readFileSync(file, 'utf8');
|
|
259
279
|
const fileData = JSON.parse(data);
|
|
260
|
-
if (
|
|
261
|
-
const myStatus = await
|
|
280
|
+
if (validateImport(fileData.meta)) {
|
|
281
|
+
const myStatus = await importSaml2Providers(fileData);
|
|
262
282
|
totalStatus.total += myStatus.total;
|
|
263
283
|
totalStatus.successes += myStatus.successes;
|
|
264
284
|
totalStatus.warnings += myStatus.warnings;
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decode","helper","base64","getTypedFilename","saveJsonToFile","getRealmString","validateImport","utils","impex","getSaml2ProviderStubs","getProviderByLocationAndId","getSaml2ProviderStub","getProviderMetadataUrl","getProviderMetadata","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","id","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","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","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 { decode } = frodo.helper.base64;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils.impex;\nconst {\n getSaml2ProviderStubs,\n getProviderByLocationAndId,\n getSaml2ProviderStub,\n getProviderMetadataUrl,\n getProviderMetadata,\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 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 getSaml2ProviderStub(entityId);\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 = await getProviderByLocationAndId(location, id);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = 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 = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const metaData = await getProviderMetadata(entityId);\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 = getTypedFilename(entityId, 'saml');\n }\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n 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 = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n try {\n const exportData = await exportSaml2Providers();\n 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 getSaml2ProviderStubs();\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, 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 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 = decode(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(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('.');\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 (validateImport(fileData.meta)) {\n const myStatus = await importSaml2Providers(fileData);\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":"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"}
|
package/esm/ops/ScriptOps.js
CHANGED
|
@@ -4,6 +4,14 @@ 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
|
+
getScripts,
|
|
9
|
+
exportScript,
|
|
10
|
+
exportScriptByName,
|
|
11
|
+
exportScripts,
|
|
12
|
+
importScripts
|
|
13
|
+
} = frodo.script;
|
|
14
|
+
|
|
7
15
|
/**
|
|
8
16
|
* Get a one-line description of the script object
|
|
9
17
|
* @param {ScriptSkeleton} scriptObj script object to describe
|
|
@@ -48,7 +56,7 @@ export async function listScripts(long = false) {
|
|
|
48
56
|
let outcome = true;
|
|
49
57
|
debugMessage(`Cli.ScriptOps.listScripts: start`);
|
|
50
58
|
try {
|
|
51
|
-
const scripts = await
|
|
59
|
+
const scripts = await getScripts();
|
|
52
60
|
scripts.sort((a, b) => a.name.localeCompare(b.name));
|
|
53
61
|
if (long) {
|
|
54
62
|
const table = createTable(['Name', 'UUID', 'Language', 'Context', 'Description']);
|
|
@@ -89,7 +97,7 @@ export async function exportScriptToFile(scriptId, file) {
|
|
|
89
97
|
fileName = file;
|
|
90
98
|
}
|
|
91
99
|
spinSpinner(`Exporting script '${scriptId}' to '${fileName}'...`);
|
|
92
|
-
const scriptExport = await
|
|
100
|
+
const scriptExport = await exportScript(scriptId);
|
|
93
101
|
saveJsonToFile(scriptExport, fileName);
|
|
94
102
|
succeedSpinner(`Exported script '${scriptId}' to '${fileName}'.`);
|
|
95
103
|
debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);
|
|
@@ -117,7 +125,7 @@ export async function exportScriptByNameToFile(name, file) {
|
|
|
117
125
|
fileName = file;
|
|
118
126
|
}
|
|
119
127
|
spinSpinner(`Exporting script '${name}' to '${fileName}'...`);
|
|
120
|
-
const scriptExport = await
|
|
128
|
+
const scriptExport = await exportScriptByName(name);
|
|
121
129
|
saveJsonToFile(scriptExport, fileName);
|
|
122
130
|
succeedSpinner(`Exported script '${name}' to '${fileName}'.`);
|
|
123
131
|
debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);
|
|
@@ -142,7 +150,7 @@ export async function exportScriptsToFile(file) {
|
|
|
142
150
|
if (file) {
|
|
143
151
|
fileName = file;
|
|
144
152
|
}
|
|
145
|
-
const scriptExport = await
|
|
153
|
+
const scriptExport = await exportScripts();
|
|
146
154
|
saveJsonToFile(scriptExport, fileName);
|
|
147
155
|
debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);
|
|
148
156
|
return true;
|
|
@@ -161,13 +169,13 @@ export async function exportScriptsToFile(file) {
|
|
|
161
169
|
export async function exportScriptsToFiles() {
|
|
162
170
|
let outcome = true;
|
|
163
171
|
debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);
|
|
164
|
-
const scriptList = await
|
|
172
|
+
const scriptList = await getScripts();
|
|
165
173
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
166
174
|
for (const script of scriptList) {
|
|
167
175
|
try {
|
|
168
176
|
updateProgressBar(`Reading script ${script.name}`);
|
|
169
177
|
const fileName = getTypedFilename(script.name, 'script');
|
|
170
|
-
const scriptExport = await
|
|
178
|
+
const scriptExport = await exportScriptByName(script.name);
|
|
171
179
|
saveJsonToFile(scriptExport, fileName);
|
|
172
180
|
} catch (error) {
|
|
173
181
|
outcome = false;
|
|
@@ -182,7 +190,7 @@ export async function exportScriptsToFiles() {
|
|
|
182
190
|
export async function exportScriptsToFilesExtract() {
|
|
183
191
|
let outcome = true;
|
|
184
192
|
debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);
|
|
185
|
-
const scriptList = await
|
|
193
|
+
const scriptList = await getScripts();
|
|
186
194
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
187
195
|
for (const script of scriptList) {
|
|
188
196
|
try {
|
|
@@ -190,7 +198,7 @@ export async function exportScriptsToFilesExtract() {
|
|
|
190
198
|
const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';
|
|
191
199
|
const scriptFileName = getTypedFilename(script.name, 'script', fileExtension);
|
|
192
200
|
const fileName = getTypedFilename(script.name, 'script');
|
|
193
|
-
const scriptExport = await
|
|
201
|
+
const scriptExport = await exportScriptByName(script.name);
|
|
194
202
|
const scriptSkeleton = getScriptSkeleton(scriptExport);
|
|
195
203
|
const scriptText = Array.isArray(scriptSkeleton.script) ? scriptSkeleton.script.join('\n') : scriptSkeleton.script;
|
|
196
204
|
scriptSkeleton.script = `file://${scriptFileName}`;
|
|
@@ -221,7 +229,7 @@ export async function importScriptsFromFile(name, file, reUuid = false) {
|
|
|
221
229
|
try {
|
|
222
230
|
if (err) throw err;
|
|
223
231
|
const importData = JSON.parse(data);
|
|
224
|
-
outcome = await
|
|
232
|
+
outcome = await importScripts(name, importData, reUuid);
|
|
225
233
|
} catch (error) {
|
|
226
234
|
printMessage(`Error exporting script '${name}': ${error.message}`, 'error');
|
|
227
235
|
debugMessage(error);
|
|
@@ -279,7 +287,7 @@ async function handleScriptFileImport(file, reUuid, validateScripts) {
|
|
|
279
287
|
debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);
|
|
280
288
|
const scriptFile = getScriptFile(file);
|
|
281
289
|
const script = getScriptExportByScriptFile(scriptFile);
|
|
282
|
-
const success = await
|
|
290
|
+
const success = await importScripts('', script, reUuid, validateScripts);
|
|
283
291
|
if (success) {
|
|
284
292
|
printMessage(`Imported '${scriptFile}'`);
|
|
285
293
|
}
|