@rockcarver/frodo-cli 2.0.0-13 → 2.0.0-14
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 +9 -1
- package/esm/app.js +1 -1
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +3 -3
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +2 -2
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +2 -2
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +2 -2
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +2 -2
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +2 -2
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +2 -2
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +2 -2
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-export.js +2 -2
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +2 -2
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +2 -2
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +2 -2
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +2 -2
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +2 -2
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +2 -2
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +2 -2
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something.js +1 -1
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +1 -1
- 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 +3 -3
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +2 -2
- package/esm/cli/admin/admin-federation-export.js.map +1 -1
- package/esm/cli/admin/admin-federation-import.js +2 -2
- package/esm/cli/admin/admin-federation-import.js.map +1 -1
- package/esm/cli/admin/admin-federation-list.js +2 -2
- package/esm/cli/admin/admin-federation-list.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +2 -2
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +2 -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 +2 -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 +1 -1
- 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 +1 -1
- 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 +2 -2
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +2 -2
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +2 -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 +2 -2
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin.js +1 -1
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +2 -2
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +2 -2
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +3 -3
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +2 -2
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +2 -2
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +3 -3
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +3 -3
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +2 -2
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-import.js +3 -3
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +2 -2
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +2 -2
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +3 -3
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +3 -3
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +2 -2
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-list.js +2 -2
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +2 -2
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +2 -2
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +3 -3
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +3 -3
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +2 -2
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent.js +1 -1
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +2 -2
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +2 -2
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +3 -3
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +3 -3
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +3 -3
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +1 -1
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authz/authz-policy-delete.js +3 -3
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +3 -3
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +3 -3
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +2 -2
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +3 -3
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +3 -3
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +3 -3
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +3 -3
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +2 -2
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +2 -2
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +3 -3
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +3 -3
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +3 -3
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +3 -3
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +3 -3
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz.js +1 -1
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +1 -1
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +1 -1
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +1 -1
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +4 -4
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +1 -1
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +3 -3
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +3 -3
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +3 -3
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email.js +1 -1
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +2 -2
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +3 -3
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +3 -3
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +3 -3
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +2 -2
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +2 -2
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +3 -3
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +3 -3
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +3 -3
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +4 -4
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +3 -3
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +3 -3
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +3 -3
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +3 -3
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +3 -3
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +3 -3
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +2 -2
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +2 -2
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +3 -3
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +2 -2
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv.js +1 -1
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +3 -3
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +3 -3
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +3 -3
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +2 -2
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +1 -1
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +6 -6
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +7 -7
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +2 -2
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +1 -1
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +3 -3
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +2 -2
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +5 -5
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +3 -3
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +3 -3
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +3 -3
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +3 -3
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +1 -1
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +15 -11
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +1 -1
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/log/log-fetch.js +4 -4
- package/esm/cli/log/log-fetch.js.map +1 -1
- package/esm/cli/log/log-key-delete.js +3 -3
- package/esm/cli/log/log-key-delete.js.map +1 -1
- package/esm/cli/log/log-key-describe.js +2 -2
- package/esm/cli/log/log-key-describe.js.map +1 -1
- package/esm/cli/log/log-key-list.js +2 -2
- package/esm/cli/log/log-key-list.js.map +1 -1
- package/esm/cli/log/log-list.js +2 -2
- package/esm/cli/log/log-list.js.map +1 -1
- package/esm/cli/log/log-tail.js +4 -4
- package/esm/cli/log/log-tail.js.map +1 -1
- package/esm/cli/log/log.js +1 -1
- package/esm/cli/log/log.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +3 -3
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +2 -2
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +3 -3
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +2 -2
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +1 -1
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +3 -3
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +3 -3
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +3 -3
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +2 -2
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +3 -3
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +3 -3
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +3 -3
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +3 -3
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +3 -3
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml.js +1 -1
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +2 -2
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +2 -2
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +3 -3
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +3 -3
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +3 -3
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +1 -1
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +2 -2
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +2 -2
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +2 -2
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +2 -2
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +1 -1
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +7 -7
- package/esm/cli/shell/shell.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +3 -3
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +3 -3
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +3 -3
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +2 -2
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +1 -1
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/loader.js +1 -1
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +3 -3
- package/esm/ops/AdminFederationOps.js.map +1 -1
- package/esm/ops/AgentOps.js +13 -13
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +4 -4
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +1 -1
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +42 -44
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +40 -56
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +29 -26
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +42 -17
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +3 -3
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +9 -23
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +10 -10
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +9 -9
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +9 -9
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +8 -8
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +25 -30
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +6 -5
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +18 -17
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +1 -1
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +18 -18
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +9 -12
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +3 -2
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +2 -2
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +3 -3
- package/esm/utils/Version.js.map +1 -1
- package/package.json +5 -3
|
@@ -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","getRealmName","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":["../../src/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.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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"}
|
|
1
|
+
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","utils","readResourceTypes","readResourceType","readResourceTypeByName","exportResourceType","exportResourceTypeByName","exportResourceTypes","importResourceType","importResourceTypeByName","importFirstResourceType","importResourceTypes","authz","resourceType","listResourceTypes","long","outcome","resourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","error","_error$response","response","status","getRealm","_error$response2","_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":["../../src/ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ResourceTypesApi';\nimport { type ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.utils;\nconst {\n readResourceTypes,\n readResourceType,\n readResourceTypeByName,\n exportResourceType,\n exportResourceTypeByName,\n exportResourceTypes,\n importResourceType,\n importResourceTypeByName,\n importFirstResourceType,\n importResourceTypes,\n} = frodo.authz.resourceType;\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await readResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await readResourceType(resourceTypeUuid);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await readResourceTypeByName(resourceTypeName);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await readResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceType(resourceTypeUuid);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypeByName(resourceTypeName);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] = await readResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypeByName(resourceTypeName, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
package/esm/ops/Saml2Ops.js
CHANGED
|
@@ -12,11 +12,11 @@ const {
|
|
|
12
12
|
validateImport
|
|
13
13
|
} = frodo.utils;
|
|
14
14
|
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
readSaml2ProviderStubs,
|
|
16
|
+
readSaml2Provider,
|
|
17
|
+
readSaml2ProviderStub,
|
|
18
|
+
getSaml2ProviderMetadataUrl,
|
|
19
|
+
getSaml2ProviderMetadata,
|
|
20
20
|
exportSaml2Provider,
|
|
21
21
|
exportSaml2Providers,
|
|
22
22
|
importSaml2Provider,
|
|
@@ -77,7 +77,7 @@ export function getTableRowMd(saml2ProviderObj) {
|
|
|
77
77
|
* @param {boolean} long Long list format with details
|
|
78
78
|
*/
|
|
79
79
|
export async function listSaml2Providers(long = false) {
|
|
80
|
-
const providerList = await
|
|
80
|
+
const providerList = await readSaml2ProviderStubs();
|
|
81
81
|
providerList.sort((a, b) => a._id.localeCompare(b._id));
|
|
82
82
|
if (!long) {
|
|
83
83
|
for (const provider of providerList) {
|
|
@@ -98,18 +98,17 @@ export async function listSaml2Providers(long = false) {
|
|
|
98
98
|
*/
|
|
99
99
|
export async function describeSaml2Provider(entityId) {
|
|
100
100
|
try {
|
|
101
|
-
const stub = await
|
|
101
|
+
const stub = await readSaml2ProviderStub(entityId);
|
|
102
102
|
const {
|
|
103
103
|
location
|
|
104
104
|
} = stub;
|
|
105
|
-
const id = stub._id;
|
|
106
105
|
const roles = stub.roles.map(role => roleMap[role]).join(', ');
|
|
107
|
-
const rawProviderData = await
|
|
106
|
+
const rawProviderData = await readSaml2Provider(entityId);
|
|
108
107
|
delete rawProviderData._id;
|
|
109
108
|
delete rawProviderData._rev;
|
|
110
109
|
rawProviderData.location = location;
|
|
111
110
|
rawProviderData.roles = roles;
|
|
112
|
-
rawProviderData.metadataUrl =
|
|
111
|
+
rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);
|
|
113
112
|
const table = createObjectTable(rawProviderData);
|
|
114
113
|
printMessage(table.toString());
|
|
115
114
|
} catch (error) {
|
|
@@ -130,7 +129,7 @@ export async function exportSaml2MetadataToFile(entityId, file = null) {
|
|
|
130
129
|
createProgressBar(1, `Exporting metadata for: ${entityId}`);
|
|
131
130
|
try {
|
|
132
131
|
updateProgressBar(`Writing file ${fileName}`);
|
|
133
|
-
const metaData = await
|
|
132
|
+
const metaData = await getSaml2ProviderMetadata(entityId);
|
|
134
133
|
saveTextToFile(metaData, fileName);
|
|
135
134
|
updateProgressBar(`Exported provider ${entityId}`);
|
|
136
135
|
stopProgressBar(`Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`);
|
|
@@ -189,7 +188,7 @@ export async function exportSaml2ProvidersToFile(file = null) {
|
|
|
189
188
|
* Export all entity providers to individual files
|
|
190
189
|
*/
|
|
191
190
|
export async function exportSaml2ProvidersToFiles() {
|
|
192
|
-
const stubs = await
|
|
191
|
+
const stubs = await readSaml2ProviderStubs();
|
|
193
192
|
if (stubs.length > 0) {
|
|
194
193
|
createProgressBar(stubs.length, 'Exporting providers');
|
|
195
194
|
for (const stub of stubs) {
|
|
@@ -267,26 +266,22 @@ export async function importSaml2ProvidersFromFiles() {
|
|
|
267
266
|
const names = fs.readdirSync('.');
|
|
268
267
|
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json'));
|
|
269
268
|
createProgressBar(jsonFiles.length, 'Importing providers...');
|
|
270
|
-
|
|
271
|
-
total: 0,
|
|
272
|
-
successes: 0,
|
|
273
|
-
warnings: 0,
|
|
274
|
-
failures: 0
|
|
275
|
-
};
|
|
269
|
+
let total = 0;
|
|
276
270
|
for (const file of jsonFiles) {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
271
|
+
try {
|
|
272
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
273
|
+
const fileData = JSON.parse(data);
|
|
274
|
+
if (validateImport(fileData.meta)) {
|
|
275
|
+
const result = await importSaml2Providers(fileData);
|
|
276
|
+
total += result.length;
|
|
277
|
+
updateProgressBar(`Imported ${result.length} provider(s) from ${file}.`);
|
|
278
|
+
} else {
|
|
279
|
+
printMessage(`Validation of ${file} failed!`, 'error');
|
|
280
|
+
}
|
|
281
|
+
} catch (error) {
|
|
282
|
+
printMessage(`Error importing providers from ${file}: ${error.message}`, 'error');
|
|
288
283
|
}
|
|
289
284
|
}
|
|
290
|
-
stopProgressBar(`Imported ${
|
|
285
|
+
stopProgressBar(`Imported ${total} provider(s) from ${jsonFiles.length} file(s).`);
|
|
291
286
|
}
|
|
292
287
|
//# 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","decodeBase64","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","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":["../../src/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/Saml2Api';\n\nconst { decodeBase64 } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\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 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 = 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(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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"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decodeBase64","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","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 } = 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());\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());\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 getSaml2ProviderMetadata(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 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, 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 = 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(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 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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"}
|
package/esm/ops/ScriptOps.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createProgressBar, createTable, debugMessage, failSpinner, printMessage
|
|
|
5
5
|
import { getTypedFilename, saveJsonToFile, saveTextToFile, titleCase } from '../utils/ExportImportUtils';
|
|
6
6
|
import wordwrap from './utils/Wordwrap';
|
|
7
7
|
const {
|
|
8
|
-
|
|
8
|
+
readScripts,
|
|
9
9
|
exportScript,
|
|
10
10
|
exportScriptByName,
|
|
11
11
|
exportScripts,
|
|
@@ -56,7 +56,7 @@ export async function listScripts(long = false) {
|
|
|
56
56
|
let outcome = true;
|
|
57
57
|
debugMessage(`Cli.ScriptOps.listScripts: start`);
|
|
58
58
|
try {
|
|
59
|
-
const scripts = await
|
|
59
|
+
const scripts = await readScripts();
|
|
60
60
|
scripts.sort((a, b) => a.name.localeCompare(b.name));
|
|
61
61
|
if (long) {
|
|
62
62
|
const table = createTable(['Name', 'UUID', 'Language', 'Context', 'Description']);
|
|
@@ -169,7 +169,7 @@ export async function exportScriptsToFile(file) {
|
|
|
169
169
|
export async function exportScriptsToFiles() {
|
|
170
170
|
let outcome = true;
|
|
171
171
|
debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);
|
|
172
|
-
const scriptList = await
|
|
172
|
+
const scriptList = await readScripts();
|
|
173
173
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
174
174
|
for (const script of scriptList) {
|
|
175
175
|
try {
|
|
@@ -190,7 +190,7 @@ export async function exportScriptsToFiles() {
|
|
|
190
190
|
export async function exportScriptsToFilesExtract() {
|
|
191
191
|
let outcome = true;
|
|
192
192
|
debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);
|
|
193
|
-
const scriptList = await
|
|
193
|
+
const scriptList = await readScripts();
|
|
194
194
|
createProgressBar(scriptList.length, 'Exporting scripts to individual files...');
|
|
195
195
|
for (const script of scriptList) {
|
|
196
196
|
try {
|
|
@@ -229,7 +229,8 @@ export async function importScriptsFromFile(name, file, reUuid = false) {
|
|
|
229
229
|
try {
|
|
230
230
|
if (err) throw err;
|
|
231
231
|
const importData = JSON.parse(data);
|
|
232
|
-
|
|
232
|
+
await importScripts(name, importData, reUuid);
|
|
233
|
+
outcome = true;
|
|
233
234
|
} catch (error) {
|
|
234
235
|
printMessage(`Error exporting script '${name}': ${error.message}`, 'error');
|
|
235
236
|
debugMessage(error);
|
package/esm/ops/ScriptOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.js","names":["frodo","state","chokidar","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","spinSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveTextToFile","titleCase","wordwrap","getScripts","exportScript","exportScriptByName","exportScripts","importScripts","script","getOneLineDescription","scriptObj","description","_id","context","name","getTableHeaderMd","markdown","getTableRowMd","langMap","JAVASCRIPT","GROOVY","language","split","join","listScripts","long","outcome","scripts","sort","a","b","localeCompare","table","forEach","push","toString","error","message","exportScriptToFile","scriptId","file","fileName","scriptExport","exportScriptByNameToFile","exportScriptsToFile","getRealm","exportScriptsToFiles","scriptList","length","exportScriptsToFilesExtract","fileExtension","scriptFileName","scriptSkeleton","getScriptSkeleton","scriptText","Array","isArray","importScriptsFromFile","reUuid","readFile","err","data","importData","JSON","parse","importScriptsFromFiles","watch","validateScripts","onChange","path","_stats","handleScriptFileImport","catch","process","exit","watcher","persistent","on","close","scriptFile","getScriptFile","getScriptExportByScriptFile","success","endsWith","replace","getScriptExport","extractFile","getExtractFile","scriptRaw","readFileSync","startsWith","scriptExportRaw","getScriptId","scriptIds","Object","keys","Error"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport chokidar from 'chokidar';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n spinSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\nimport type { ScriptSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type { ScriptExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\nconst {\n getScripts,\n exportScript,\n exportScriptByName,\n exportScripts,\n importScripts,\n} = frodo.script;\n\n/**\n * Get a one-line description of the script object\n * @param {ScriptSkeleton} scriptObj script object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(scriptObj: ScriptSkeleton): string {\n const description = `[${scriptObj._id['brightCyan']}] ${scriptObj.context} - ${scriptObj.name}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Language | Type | Id |\\n';\n markdown += '| ---- | -------- | ---- | ---|';\n return markdown;\n}\n\n/**\n * Get a one-line description of the script object in markdown\n * @param {TypesRaw.ScriptSkeleton} scriptObj script object to describe\n * @returns {string} markdown table row\n */\nexport function getTableRowMd(scriptObj: ScriptSkeleton): string {\n const langMap = { JAVASCRIPT: 'JavaSscript', GROOVY: 'Groovy' };\n const description = `| ${scriptObj.name} | ${\n langMap[scriptObj.language]\n } | ${titleCase(scriptObj.context.split('_').join(' '))} | \\`${\n scriptObj._id\n }\\` |`;\n return description;\n}\n\n/**\n * List scripts\n * @param {boolean} long detail list\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function listScripts(long = false): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.listScripts: start`);\n try {\n const scripts = await getScripts();\n scripts.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'UUID',\n 'Language',\n 'Context',\n 'Description',\n ]);\n const langMap = { JAVASCRIPT: 'JS', GROOVY: 'Groovy' };\n scripts.forEach((script) => {\n table.push([\n wordwrap(script.name, 25, ' '),\n script._id,\n langMap[script.language],\n wordwrap(titleCase(script.context.split('_').join(' ')), 25),\n wordwrap(script.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n scripts.forEach((script) => {\n printMessage(`${script.name}`, 'data');\n });\n }\n } catch (error) {\n outcome = false;\n printMessage(`Error listing scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.listScripts: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export script by id to file\n * @param {string} scriptId script uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptToFile(\n scriptId: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptToFile: start`);\n try {\n showSpinner(`Exporting script '${scriptId}'...`);\n let fileName = getTypedFilename(scriptId, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${scriptId}' to '${fileName}'...`);\n const scriptExport = await exportScript(scriptId);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${scriptId}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${scriptId}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [false]`);\n return false;\n}\n\n/**\n * Export script by name to file\n * @param {string} name script name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptByNameToFile(\n name: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: start`);\n try {\n showSpinner(`Exporting script '${name}'...`);\n let fileName = getTypedFilename(name, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${name}' to '${fileName}'...`);\n const scriptExport = await exportScriptByName(name);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${name}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${name}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to single file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFile(file: string): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: start`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Scripts`,\n 'script'\n );\n if (file) {\n fileName = file;\n }\n const scriptExport = await exportScripts();\n saveJsonToFile(scriptExport, fileName);\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);\n return true;\n } catch (error) {\n printMessage(`Error exporting scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to individual files\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFiles(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);\n const scriptList = await getScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileName = getTypedFilename(script.name, 'script');\n const scriptExport = await exportScriptByName(script.name);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: end [${outcome}]`);\n return outcome;\n}\n\nexport async function exportScriptsToFilesExtract(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);\n const scriptList = await getScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';\n const scriptFileName = getTypedFilename(\n script.name,\n 'script',\n fileExtension\n );\n const fileName = getTypedFilename(script.name, 'script');\n\n const scriptExport = await exportScriptByName(script.name);\n\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const scriptText = Array.isArray(scriptSkeleton.script)\n ? scriptSkeleton.script.join('\\n')\n : scriptSkeleton.script;\n\n scriptSkeleton.script = `file://${scriptFileName}`;\n\n saveTextToFile(scriptText, scriptFileName);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import script(s) from file\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {string} file file name\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScriptsFromFile(\n name: string,\n file: string,\n reUuid = false\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n try {\n if (err) throw err;\n const importData = JSON.parse(data);\n outcome = await importScripts(name, importData, reUuid);\n } catch (error) {\n printMessage(\n `Error exporting script '${name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n });\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import extracted scripts.\n *\n * @param watch whether or not to watch for file changes\n */\nexport async function importScriptsFromFiles(\n watch: boolean,\n reUuid: boolean,\n validateScripts: boolean\n) {\n // If watch is true, it doesn't make sense to reUuid.\n reUuid = watch ? false : reUuid;\n\n /**\n * Run on file change detection, as well as on initial run.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onChange(path: string, _stats?: fs.Stats): void {\n handleScriptFileImport(path, reUuid, validateScripts).catch((error) => {\n printMessage(`Error importing script: ${error.message}`, 'error');\n debugMessage(error);\n process.exit(1);\n });\n }\n\n // We watch json files and script files.\n const watcher = chokidar.watch(\n [`./**/*.script.json`, `./**/*.script.js`, `./**/*.script.groovy`],\n {\n persistent: watch,\n }\n );\n\n watcher\n .on('add', onChange)\n .on('change', onChange)\n .on('error', (error) => {\n printMessage(`Watcher error: ${error}`, 'error');\n watcher.close();\n })\n .on('ready', () => {\n if (watch) {\n printMessage('Watching for changes...');\n } else {\n watcher.close();\n printMessage('Done.');\n }\n });\n}\n\n/**\n * Handle a script file import.\n *\n * @param file Either a script file or an extract file\n * @param reUuid whether or not to generate a new uuid for each script on import\n */\nasync function handleScriptFileImport(\n file: string,\n reUuid: boolean,\n validateScripts: boolean\n) {\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);\n const scriptFile = getScriptFile(file);\n const script = getScriptExportByScriptFile(scriptFile);\n\n const success = await importScripts('', script, reUuid, validateScripts);\n if (success) {\n printMessage(`Imported '${scriptFile}'`);\n }\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: end`);\n}\n\n/**\n * Get a script file from a file.\n *\n * @param file Either a script file or an extract file\n * @returns The script file\n */\nfunction getScriptFile(file: string) {\n if (file.endsWith('.script.json')) {\n return file;\n }\n return file.replace(/\\.script\\.(js|groovy)/, '.script.json');\n}\n\n/**\n * Get a script export from a script file.\n *\n * @param scriptFile The path to the script file\n * @returns The script export\n */\nfunction getScriptExportByScriptFile(\n scriptFile: string\n): ScriptExportInterface {\n const scriptExport = getScriptExport(scriptFile);\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const extractFile = getExtractFile(scriptSkeleton);\n if (!extractFile) {\n return scriptExport;\n }\n\n const scriptRaw = fs.readFileSync(extractFile, 'utf8');\n scriptSkeleton.script = scriptRaw.split('\\n');\n\n return scriptExport;\n}\n\n/**\n * Get an extract file from a script skeleton.\n *\n * @param scriptSkeleton The script skeleton\n * @returns The extract file or null if there is no extract file\n */\nfunction getExtractFile(scriptSkeleton: ScriptSkeleton): string | null {\n const extractFile = scriptSkeleton.script;\n if (Array.isArray(extractFile)) {\n return null;\n }\n if (\n extractFile.startsWith('file://') &&\n (extractFile.endsWith('.js') || extractFile.endsWith('.groovy'))\n ) {\n return extractFile.replace('file://', '');\n }\n return null;\n}\n\n/**\n * Get a script export from a file.\n *\n * @param file The path to a script export file\n * @returns The script export\n */\nfunction getScriptExport(file: string): ScriptExportInterface {\n const scriptExportRaw = fs.readFileSync(file, 'utf8');\n const scriptExport = JSON.parse(scriptExportRaw) as ScriptExportInterface;\n\n return scriptExport;\n}\n\n/**\n * Get the main script skeleton from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script Get the main script skeleton from a script export\n * @returns The main script skeleton\n */\nfunction getScriptSkeleton(script: ScriptExportInterface): ScriptSkeleton {\n const scriptId = getScriptId(script);\n return script.script[scriptId];\n}\n\n/**\n * Get the main script ID from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script The script export\n * @returns The main script ID\n */\nfunction getScriptId(script: ScriptExportInterface): string {\n const scriptIds = Object.keys(script.script);\n if (scriptIds.length !== 1) {\n throw new Error(`Expected 1 script, found ${scriptIds.length}`);\n }\n return scriptIds[0];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.js","names":["frodo","state","chokidar","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","spinSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveTextToFile","titleCase","wordwrap","readScripts","exportScript","exportScriptByName","exportScripts","importScripts","script","getOneLineDescription","scriptObj","description","_id","context","name","getTableHeaderMd","markdown","getTableRowMd","langMap","JAVASCRIPT","GROOVY","language","split","join","listScripts","long","outcome","scripts","sort","a","b","localeCompare","table","forEach","push","toString","error","message","exportScriptToFile","scriptId","file","fileName","scriptExport","exportScriptByNameToFile","exportScriptsToFile","getRealm","exportScriptsToFiles","scriptList","length","exportScriptsToFilesExtract","fileExtension","scriptFileName","scriptSkeleton","getScriptSkeleton","scriptText","Array","isArray","importScriptsFromFile","reUuid","readFile","err","data","importData","JSON","parse","importScriptsFromFiles","watch","validateScripts","onChange","path","_stats","handleScriptFileImport","catch","process","exit","watcher","persistent","on","close","scriptFile","getScriptFile","getScriptExportByScriptFile","success","endsWith","replace","getScriptExport","extractFile","getExtractFile","scriptRaw","readFileSync","startsWith","scriptExportRaw","getScriptId","scriptIds","Object","keys","Error"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type ScriptSkeleton } from '@rockcarver/frodo-lib/types/api/ScriptApi';\nimport { type ScriptExportInterface } from '@rockcarver/frodo-lib/types/ops/ScriptOps';\nimport chokidar from 'chokidar';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n spinSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst {\n readScripts,\n exportScript,\n exportScriptByName,\n exportScripts,\n importScripts,\n} = frodo.script;\n\n/**\n * Get a one-line description of the script object\n * @param {ScriptSkeleton} scriptObj script object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(scriptObj: ScriptSkeleton): string {\n const description = `[${scriptObj._id['brightCyan']}] ${scriptObj.context} - ${scriptObj.name}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Language | Type | Id |\\n';\n markdown += '| ---- | -------- | ---- | ---|';\n return markdown;\n}\n\n/**\n * Get a one-line description of the script object in markdown\n * @param {TypesRaw.ScriptSkeleton} scriptObj script object to describe\n * @returns {string} markdown table row\n */\nexport function getTableRowMd(scriptObj: ScriptSkeleton): string {\n const langMap = { JAVASCRIPT: 'JavaSscript', GROOVY: 'Groovy' };\n const description = `| ${scriptObj.name} | ${\n langMap[scriptObj.language]\n } | ${titleCase(scriptObj.context.split('_').join(' '))} | \\`${\n scriptObj._id\n }\\` |`;\n return description;\n}\n\n/**\n * List scripts\n * @param {boolean} long detail list\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function listScripts(long = false): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.listScripts: start`);\n try {\n const scripts = await readScripts();\n scripts.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'UUID',\n 'Language',\n 'Context',\n 'Description',\n ]);\n const langMap = { JAVASCRIPT: 'JS', GROOVY: 'Groovy' };\n scripts.forEach((script) => {\n table.push([\n wordwrap(script.name, 25, ' '),\n script._id,\n langMap[script.language],\n wordwrap(titleCase(script.context.split('_').join(' ')), 25),\n wordwrap(script.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n scripts.forEach((script) => {\n printMessage(`${script.name}`, 'data');\n });\n }\n } catch (error) {\n outcome = false;\n printMessage(`Error listing scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.listScripts: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export script by id to file\n * @param {string} scriptId script uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptToFile(\n scriptId: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptToFile: start`);\n try {\n showSpinner(`Exporting script '${scriptId}'...`);\n let fileName = getTypedFilename(scriptId, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${scriptId}' to '${fileName}'...`);\n const scriptExport = await exportScript(scriptId);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${scriptId}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${scriptId}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [false]`);\n return false;\n}\n\n/**\n * Export script by name to file\n * @param {string} name script name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptByNameToFile(\n name: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: start`);\n try {\n showSpinner(`Exporting script '${name}'...`);\n let fileName = getTypedFilename(name, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${name}' to '${fileName}'...`);\n const scriptExport = await exportScriptByName(name);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${name}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${name}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to single file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFile(file: string): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: start`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Scripts`,\n 'script'\n );\n if (file) {\n fileName = file;\n }\n const scriptExport = await exportScripts();\n saveJsonToFile(scriptExport, fileName);\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);\n return true;\n } catch (error) {\n printMessage(`Error exporting scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to individual files\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFiles(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);\n const scriptList = await readScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileName = getTypedFilename(script.name, 'script');\n const scriptExport = await exportScriptByName(script.name);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: end [${outcome}]`);\n return outcome;\n}\n\nexport async function exportScriptsToFilesExtract(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);\n const scriptList = await readScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';\n const scriptFileName = getTypedFilename(\n script.name,\n 'script',\n fileExtension\n );\n const fileName = getTypedFilename(script.name, 'script');\n\n const scriptExport = await exportScriptByName(script.name);\n\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const scriptText = Array.isArray(scriptSkeleton.script)\n ? scriptSkeleton.script.join('\\n')\n : scriptSkeleton.script;\n\n scriptSkeleton.script = `file://${scriptFileName}`;\n\n saveTextToFile(scriptText, scriptFileName);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import script(s) from file\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {string} file file name\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScriptsFromFile(\n name: string,\n file: string,\n reUuid = false\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n try {\n if (err) throw err;\n const importData = JSON.parse(data);\n await importScripts(name, importData, reUuid);\n outcome = true;\n } catch (error) {\n printMessage(\n `Error exporting script '${name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n });\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import extracted scripts.\n *\n * @param watch whether or not to watch for file changes\n */\nexport async function importScriptsFromFiles(\n watch: boolean,\n reUuid: boolean,\n validateScripts: boolean\n) {\n // If watch is true, it doesn't make sense to reUuid.\n reUuid = watch ? false : reUuid;\n\n /**\n * Run on file change detection, as well as on initial run.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onChange(path: string, _stats?: fs.Stats): void {\n handleScriptFileImport(path, reUuid, validateScripts).catch((error) => {\n printMessage(`Error importing script: ${error.message}`, 'error');\n debugMessage(error);\n process.exit(1);\n });\n }\n\n // We watch json files and script files.\n const watcher = chokidar.watch(\n [`./**/*.script.json`, `./**/*.script.js`, `./**/*.script.groovy`],\n {\n persistent: watch,\n }\n );\n\n watcher\n .on('add', onChange)\n .on('change', onChange)\n .on('error', (error) => {\n printMessage(`Watcher error: ${error}`, 'error');\n watcher.close();\n })\n .on('ready', () => {\n if (watch) {\n printMessage('Watching for changes...');\n } else {\n watcher.close();\n printMessage('Done.');\n }\n });\n}\n\n/**\n * Handle a script file import.\n *\n * @param file Either a script file or an extract file\n * @param reUuid whether or not to generate a new uuid for each script on import\n */\nasync function handleScriptFileImport(\n file: string,\n reUuid: boolean,\n validateScripts: boolean\n) {\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);\n const scriptFile = getScriptFile(file);\n const script = getScriptExportByScriptFile(scriptFile);\n\n const success = await importScripts('', script, reUuid, validateScripts);\n if (success) {\n printMessage(`Imported '${scriptFile}'`);\n }\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: end`);\n}\n\n/**\n * Get a script file from a file.\n *\n * @param file Either a script file or an extract file\n * @returns The script file\n */\nfunction getScriptFile(file: string) {\n if (file.endsWith('.script.json')) {\n return file;\n }\n return file.replace(/\\.script\\.(js|groovy)/, '.script.json');\n}\n\n/**\n * Get a script export from a script file.\n *\n * @param scriptFile The path to the script file\n * @returns The script export\n */\nfunction getScriptExportByScriptFile(\n scriptFile: string\n): ScriptExportInterface {\n const scriptExport = getScriptExport(scriptFile);\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const extractFile = getExtractFile(scriptSkeleton);\n if (!extractFile) {\n return scriptExport;\n }\n\n const scriptRaw = fs.readFileSync(extractFile, 'utf8');\n scriptSkeleton.script = scriptRaw.split('\\n');\n\n return scriptExport;\n}\n\n/**\n * Get an extract file from a script skeleton.\n *\n * @param scriptSkeleton The script skeleton\n * @returns The extract file or null if there is no extract file\n */\nfunction getExtractFile(scriptSkeleton: ScriptSkeleton): string | null {\n const extractFile = scriptSkeleton.script;\n if (Array.isArray(extractFile)) {\n return null;\n }\n if (\n extractFile.startsWith('file://') &&\n (extractFile.endsWith('.js') || extractFile.endsWith('.groovy'))\n ) {\n return extractFile.replace('file://', '');\n }\n return null;\n}\n\n/**\n * Get a script export from a file.\n *\n * @param file The path to a script export file\n * @returns The script export\n */\nfunction getScriptExport(file: string): ScriptExportInterface {\n const scriptExportRaw = fs.readFileSync(file, 'utf8');\n const scriptExport = JSON.parse(scriptExportRaw) as ScriptExportInterface;\n\n return scriptExport;\n}\n\n/**\n * Get the main script skeleton from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script Get the main script skeleton from a script export\n * @returns The main script skeleton\n */\nfunction getScriptSkeleton(script: ScriptExportInterface): ScriptSkeleton {\n const scriptId = getScriptId(script);\n return script.script[scriptId];\n}\n\n/**\n * Get the main script ID from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script The script export\n * @returns The main script ID\n */\nfunction getScriptId(script: ScriptExportInterface): string {\n const scriptIds = Object.keys(script.script);\n if (scriptIds.length !== 1) {\n throw new Error(`Expected 1 script, found ${scriptIds.length}`);\n }\n return scriptIds[0];\n}\n"],"mappings":"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"}
|