@rockcarver/frodo-cli 2.0.0-4 → 2.0.0-41
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 +312 -5
- package/esm/app.js +22 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +33 -7
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +7 -5
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +7 -5
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +7 -5
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +7 -5
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +8 -6
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +7 -5
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +7 -5
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +1 -1
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +8 -6
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +7 -5
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +7 -5
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +7 -5
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +7 -5
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +8 -6
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +7 -5
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +7 -5
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +1 -1
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +2 -2
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -5
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -8
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +41 -0
- package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
- package/esm/cli/admin/admin-federation-export.js +44 -0
- package/esm/cli/admin/admin-federation-export.js.map +1 -0
- package/esm/cli/admin/admin-federation-import.js +48 -0
- package/esm/cli/admin/admin-federation-import.js.map +1 -0
- package/esm/cli/admin/admin-federation-list.js +28 -0
- package/esm/cli/admin/admin-federation-list.js.map +1 -0
- package/esm/cli/admin/admin-federation.js +13 -0
- package/esm/cli/admin/admin-federation.js.map +1 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +43 -0
- package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -0
- package/esm/cli/admin/admin-get-access-token.js +12 -7
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -8
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -6
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -6
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -6
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +12 -7
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -6
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +11 -6
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -7
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -6
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-train-auto-access-model.js +32 -0
- package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
- package/esm/cli/admin/admin.js +8 -2
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +13 -7
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +7 -5
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +12 -10
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +13 -7
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +7 -5
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +12 -10
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -6
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +7 -5
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +1 -1
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -6
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +13 -7
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +7 -5
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +12 -10
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -6
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +7 -5
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +1 -1
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +7 -5
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +13 -7
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +7 -5
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +12 -10
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -6
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +7 -5
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +3 -3
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +2 -2
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +27 -9
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -6
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +17 -14
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +21 -18
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +12 -9
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -12
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authn/authn-describe.js +29 -0
- package/esm/cli/authn/authn-describe.js.map +1 -0
- package/esm/cli/authn/authn-export.js +25 -0
- package/esm/cli/authn/authn-export.js.map +1 -0
- package/esm/cli/authn/authn-import.js +25 -0
- package/esm/cli/authn/authn-import.js.map +1 -0
- package/esm/cli/authn/authn.js +12 -0
- package/esm/cli/authn/authn.js.map +1 -0
- package/esm/cli/authz/authz-policy-delete.js +11 -9
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +8 -6
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +18 -16
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +11 -9
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +11 -9
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-policy.js +1 -1
- package/esm/cli/authz/authz-policy.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +11 -9
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +8 -6
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +14 -12
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +11 -9
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +8 -6
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-set.js +1 -1
- package/esm/cli/authz/authz-set.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +13 -11
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +9 -7
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +16 -14
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +14 -12
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +9 -7
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz-type.js +1 -1
- package/esm/cli/authz/authz-type.js.map +1 -1
- package/esm/cli/authz/authz.js +2 -2
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/config/config-delete.js +21 -0
- package/esm/cli/config/config-delete.js.map +1 -0
- package/esm/cli/config/config-describe.js +21 -0
- package/esm/cli/config/config-describe.js.map +1 -0
- package/esm/cli/config/config-export.js +43 -0
- package/esm/cli/config/config-export.js.map +1 -0
- package/esm/cli/config/config-import.js +54 -0
- package/esm/cli/config/config-import.js.map +1 -0
- package/esm/cli/config/config-list.js +21 -0
- package/esm/cli/config/config-list.js.map +1 -0
- package/esm/cli/config/config.js +19 -0
- package/esm/cli/config/config.js.map +1 -0
- package/esm/cli/conn/conn-delete.js +2 -3
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +2 -3
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +2 -3
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +31 -16
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +2 -2
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +14 -12
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +15 -13
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +9 -7
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +1 -1
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +18 -9
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +10 -7
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +13 -10
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +10 -7
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +22 -7
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +7 -5
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +11 -8
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +10 -7
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +10 -8
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +10 -7
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +10 -8
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +13 -10
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +10 -7
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +1 -1
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +2 -3
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +11 -7
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +13 -9
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +11 -8
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +23 -7
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +7 -5
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +11 -8
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +12 -8
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +2 -3
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +2 -2
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +10 -8
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +24 -16
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +22 -14
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +9 -7
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +2 -2
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +12 -10
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +24 -14
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +8 -6
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +2 -2
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +13 -8
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +14 -8
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +22 -12
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +11 -12
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +11 -12
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +24 -13
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +15 -13
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +7 -5
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +23 -13
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +2 -2
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
- package/esm/cli/log/log-fetch.js.map +1 -0
- package/esm/cli/log/log-key-delete.js +34 -0
- package/esm/cli/log/log-key-delete.js.map +1 -0
- package/esm/cli/log/log-key-describe.js +21 -0
- package/esm/cli/log/log-key-describe.js.map +1 -0
- package/esm/cli/log/log-key-list.js +25 -0
- package/esm/cli/log/log-key-list.js.map +1 -0
- package/esm/cli/log/log-key.js +8 -0
- package/esm/cli/log/log-key.js.map +1 -0
- package/esm/cli/log/log-list.js +80 -0
- package/esm/cli/log/log-list.js.map +1 -0
- package/esm/cli/log/log-tail.js +77 -0
- package/esm/cli/log/log-tail.js.map +1 -0
- package/esm/cli/{logging/logs.js → log/log.js} +6 -3
- package/esm/cli/log/log.js.map +1 -0
- package/esm/cli/oauth/oauth-client-delete.js +21 -0
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
- package/esm/cli/oauth/oauth-client-describe.js +21 -0
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
- package/esm/cli/oauth/oauth-client-export.js +51 -0
- package/esm/cli/oauth/oauth-client-export.js.map +1 -0
- package/esm/cli/oauth/oauth-client-import.js +56 -0
- package/esm/cli/oauth/oauth-client-import.js.map +1 -0
- package/esm/cli/oauth/oauth-client-list.js +24 -0
- package/esm/cli/oauth/oauth-client-list.js.map +1 -0
- package/esm/cli/oauth/oauth-client.js +14 -0
- package/esm/cli/oauth/oauth-client.js.map +1 -0
- package/esm/cli/oauth/oauth.js +13 -0
- package/esm/cli/oauth/oauth.js.map +1 -0
- package/esm/cli/realm/realm-add-custom-domain.js +8 -6
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +8 -6
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +8 -6
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -6
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +2 -2
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +14 -12
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +15 -13
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +9 -7
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +1 -1
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +14 -8
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +9 -7
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +14 -12
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +24 -14
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +9 -7
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +10 -8
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +1 -1
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +2 -2
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +21 -8
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +7 -5
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +12 -14
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +9 -7
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +10 -8
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +3 -5
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +8 -5
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +13 -11
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +32 -14
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +7 -4
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +2 -2
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +57 -0
- package/esm/cli/shell/shell.js.map +1 -0
- package/esm/cli/theme/theme-delete.js +13 -11
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +16 -14
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +16 -14
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +8 -6
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +2 -2
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/help/SampleData.js +7 -0
- package/esm/help/SampleData.js.map +1 -0
- package/esm/launch.js +1 -1
- package/esm/launch.js.map +1 -1
- package/esm/loader.js +2 -2
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +231 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AdminOps.js +151 -0
- package/esm/ops/AdminOps.js.map +1 -0
- package/esm/ops/AgentOps.js +213 -150
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +324 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/AuthenticationSettingsOps.js +90 -0
- package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +98 -78
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConfigOps.js +162 -0
- package/esm/ops/ConfigOps.js.map +1 -0
- package/esm/ops/ConnectionProfileOps.js +12 -6
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +122 -127
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +101 -182
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +118 -73
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +176 -114
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +92 -30
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +6 -3
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +71 -49
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +14 -22
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +127 -86
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +108 -76
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +18 -11
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +105 -87
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +132 -91
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +205 -82
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +289 -79
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +97 -54
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +164 -158
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +252 -65
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +1 -1
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/Wordwrap.js +1 -1
- package/esm/ops/utils/Wordwrap.js.map +1 -1
- package/esm/storage/StaticStorage.js +1 -1
- package/esm/storage/StaticStorage.js.map +1 -1
- package/esm/utils/Config.js +162 -4
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +78 -35
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/Version.js +19 -16
- package/esm/utils/Version.js.map +1 -1
- package/global-jest-setup.js +4 -0
- package/package.json +55 -37
- package/esm/cli/logging/logs-fetch.js.map +0 -1
- package/esm/cli/logging/logs-list.js +0 -49
- package/esm/cli/logging/logs-list.js.map +0 -1
- package/esm/cli/logging/logs-tail.js +0 -46
- package/esm/cli/logging/logs-tail.js.map +0 -1
- package/esm/cli/logging/logs.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
- package/esm/utils/ExportImportUtils.js +0 -90
- package/esm/utils/ExportImportUtils.js.map +0 -1
package/esm/ops/ThemeOps.js
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
import { frodo } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
|
|
5
|
+
const {
|
|
6
|
+
getRealmString,
|
|
7
|
+
validateImport,
|
|
8
|
+
getTypedFilename,
|
|
9
|
+
saveJsonToFile,
|
|
10
|
+
saveToFile,
|
|
11
|
+
getFilePath,
|
|
12
|
+
getWorkingDirectory
|
|
13
|
+
} = frodo.utils;
|
|
14
|
+
const {
|
|
15
|
+
readThemes,
|
|
16
|
+
readThemeByName,
|
|
17
|
+
readTheme,
|
|
18
|
+
updateThemeByName,
|
|
19
|
+
updateTheme,
|
|
20
|
+
importThemes,
|
|
21
|
+
exportThemes,
|
|
22
|
+
deleteTheme,
|
|
23
|
+
deleteThemeByName,
|
|
24
|
+
deleteThemes
|
|
25
|
+
} = frodo.theme;
|
|
26
|
+
|
|
5
27
|
/**
|
|
6
28
|
* Get a one-line description of the theme
|
|
7
29
|
* @param {ThemeSkeleton} themeObj theme object to describe
|
|
@@ -38,7 +60,7 @@ export function getTableRowMd(themeObj) {
|
|
|
38
60
|
* @param {boolean} long Long version, more fields
|
|
39
61
|
*/
|
|
40
62
|
export async function listThemes(long = false) {
|
|
41
|
-
const themeList = await
|
|
63
|
+
const themeList = await readThemes();
|
|
42
64
|
themeList.sort((a, b) => a.name.localeCompare(b.name));
|
|
43
65
|
if (!long) {
|
|
44
66
|
themeList.forEach(theme => {
|
|
@@ -57,20 +79,23 @@ export async function listThemes(long = false) {
|
|
|
57
79
|
* Export theme by name to file
|
|
58
80
|
* @param {String} name theme name
|
|
59
81
|
* @param {String} file optional export file name
|
|
82
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
60
83
|
*/
|
|
61
|
-
export async function exportThemeByName(name, file) {
|
|
84
|
+
export async function exportThemeByName(name, file, includeMeta = true) {
|
|
62
85
|
let fileName = getTypedFilename(name, 'theme');
|
|
63
86
|
if (file) {
|
|
64
87
|
fileName = file;
|
|
65
88
|
}
|
|
66
|
-
|
|
89
|
+
const filePath = getFilePath(fileName, true);
|
|
90
|
+
const indicatorId = createProgressIndicator('determinate', 1, `Exporting ${name}`);
|
|
67
91
|
try {
|
|
68
|
-
const themeData = await
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
const themeData = await readThemeByName(name);
|
|
93
|
+
if (!themeData._id) themeData._id = uuidv4();
|
|
94
|
+
updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);
|
|
95
|
+
saveToFile('theme', [themeData], '_id', filePath, includeMeta);
|
|
96
|
+
stopProgressIndicator(indicatorId, `Successfully exported theme ${name}.`);
|
|
72
97
|
} catch (error) {
|
|
73
|
-
stopProgressIndicator(`${error.message}`);
|
|
98
|
+
stopProgressIndicator(indicatorId, `${error.message}`);
|
|
74
99
|
printMessage(`${error.message}`, 'error');
|
|
75
100
|
}
|
|
76
101
|
}
|
|
@@ -79,20 +104,22 @@ export async function exportThemeByName(name, file) {
|
|
|
79
104
|
* Export theme by uuid to file
|
|
80
105
|
* @param {String} id theme uuid
|
|
81
106
|
* @param {String} file optional export file name
|
|
107
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
82
108
|
*/
|
|
83
|
-
export async function exportThemeById(id, file) {
|
|
109
|
+
export async function exportThemeById(id, file, includeMeta = true) {
|
|
84
110
|
let fileName = getTypedFilename(id, 'theme');
|
|
85
111
|
if (file) {
|
|
86
112
|
fileName = file;
|
|
87
113
|
}
|
|
88
|
-
|
|
114
|
+
const filePath = getFilePath(fileName, true);
|
|
115
|
+
const indicatorId = createProgressIndicator('determinate', 1, `Exporting ${id}`);
|
|
89
116
|
try {
|
|
90
|
-
const themeData = await
|
|
91
|
-
updateProgressIndicator(`Writing file ${
|
|
92
|
-
saveToFile('theme', [themeData], '_id',
|
|
93
|
-
stopProgressIndicator(`Successfully exported theme ${id}.`);
|
|
117
|
+
const themeData = await readTheme(id);
|
|
118
|
+
updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);
|
|
119
|
+
saveToFile('theme', [themeData], '_id', filePath, includeMeta);
|
|
120
|
+
stopProgressIndicator(indicatorId, `Successfully exported theme ${id}.`);
|
|
94
121
|
} catch (error) {
|
|
95
|
-
stopProgressIndicator(`${error.message}`);
|
|
122
|
+
stopProgressIndicator(indicatorId, `${error.message}`);
|
|
96
123
|
printMessage(`${error.message}`, 'error');
|
|
97
124
|
}
|
|
98
125
|
}
|
|
@@ -100,33 +127,35 @@ export async function exportThemeById(id, file) {
|
|
|
100
127
|
/**
|
|
101
128
|
* Export all themes to file
|
|
102
129
|
* @param {String} file optional export file name
|
|
130
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
103
131
|
*/
|
|
104
|
-
export async function exportThemesToFile(file) {
|
|
105
|
-
let fileName = getTypedFilename(`all${
|
|
132
|
+
export async function exportThemesToFile(file, includeMeta = true) {
|
|
133
|
+
let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');
|
|
106
134
|
if (file) {
|
|
107
135
|
fileName = file;
|
|
108
136
|
}
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
updateProgressIndicator(`Exporting theme ${themeData.name}`);
|
|
113
|
-
}
|
|
114
|
-
saveToFile('theme', allThemesData, '_id', fileName);
|
|
115
|
-
stopProgressIndicator(`${allThemesData.length} themes exported to ${fileName}.`);
|
|
137
|
+
const filePath = getFilePath(fileName, true);
|
|
138
|
+
const exportData = await exportThemes();
|
|
139
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
116
140
|
}
|
|
117
141
|
|
|
118
142
|
/**
|
|
119
143
|
* Export all themes to separate files
|
|
144
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
120
145
|
*/
|
|
121
|
-
export async function exportThemesToFiles() {
|
|
122
|
-
const
|
|
123
|
-
createProgressIndicator('determinate',
|
|
124
|
-
for (const
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
146
|
+
export async function exportThemesToFiles(includeMeta = true) {
|
|
147
|
+
const themes = await readThemes();
|
|
148
|
+
const barId = createProgressIndicator('determinate', themes.length, 'Exporting themes');
|
|
149
|
+
for (const theme of themes) {
|
|
150
|
+
if (!theme._id) theme._id = uuidv4();
|
|
151
|
+
const fileBarId = createProgressIndicator('determinate', 1, `Exporting theme ${theme.name}...`);
|
|
152
|
+
updateProgressIndicator(barId, `Exporting theme ${theme.name}`);
|
|
153
|
+
const file = getFilePath(getTypedFilename(theme.name, 'theme'), true);
|
|
154
|
+
saveToFile('theme', theme, '_id', file, includeMeta);
|
|
155
|
+
updateProgressIndicator(fileBarId, `${theme.name} saved to ${file}`);
|
|
156
|
+
stopProgressIndicator(fileBarId, `${theme.name} saved to ${file}.`);
|
|
128
157
|
}
|
|
129
|
-
stopProgressIndicator(`${
|
|
158
|
+
stopProgressIndicator(barId, `${themes.length} themes exported.`);
|
|
130
159
|
}
|
|
131
160
|
|
|
132
161
|
/**
|
|
@@ -135,35 +164,31 @@ export async function exportThemesToFiles() {
|
|
|
135
164
|
* @param {String} file import file name
|
|
136
165
|
*/
|
|
137
166
|
export async function importThemeByName(name, file) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}: ${error.message}`);
|
|
154
|
-
printMessage(`Error importing theme ${themeData.theme[id].name}: ${error.message}`, 'error');
|
|
155
|
-
}
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
167
|
+
try {
|
|
168
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
169
|
+
const themeExport = JSON.parse(data);
|
|
170
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
171
|
+
let found = false;
|
|
172
|
+
for (const id of Object.keys(themeExport.theme)) {
|
|
173
|
+
if (themeExport.theme[id].name === name) {
|
|
174
|
+
found = true;
|
|
175
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[id].name}`);
|
|
176
|
+
try {
|
|
177
|
+
await updateThemeByName(name, themeExport.theme[id]);
|
|
178
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${name}.`);
|
|
179
|
+
} catch (error) {
|
|
180
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[id].name}: ${error.message}`);
|
|
181
|
+
printMessage(`Error importing theme ${themeExport.theme[id].name}: ${error.message}`, 'error');
|
|
158
182
|
}
|
|
183
|
+
break;
|
|
159
184
|
}
|
|
160
|
-
if (!found) {
|
|
161
|
-
stopProgressIndicator(`Theme ${name} not found!`);
|
|
162
|
-
}
|
|
163
|
-
} else {
|
|
164
|
-
printMessage('Import validation failed...', 'error');
|
|
165
185
|
}
|
|
166
|
-
|
|
186
|
+
if (!found) {
|
|
187
|
+
stopProgressIndicator(indicatorId, `Theme ${name} not found!`);
|
|
188
|
+
}
|
|
189
|
+
} catch (error) {
|
|
190
|
+
printMessage(`Error importing theme ${name}: ${error}`, 'error');
|
|
191
|
+
}
|
|
167
192
|
}
|
|
168
193
|
|
|
169
194
|
/**
|
|
@@ -172,35 +197,31 @@ export async function importThemeByName(name, file) {
|
|
|
172
197
|
* @param {String} file import file name
|
|
173
198
|
*/
|
|
174
199
|
export async function importThemeById(id, file) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
stopProgressIndicator(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`);
|
|
191
|
-
printMessage(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`, 'error');
|
|
192
|
-
}
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
200
|
+
try {
|
|
201
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
202
|
+
const themeExport = JSON.parse(data);
|
|
203
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
204
|
+
let found = false;
|
|
205
|
+
for (const themeId of Object.keys(themeExport.theme)) {
|
|
206
|
+
if (themeId === id) {
|
|
207
|
+
found = true;
|
|
208
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[themeId]._id}`);
|
|
209
|
+
try {
|
|
210
|
+
await updateTheme(themeId, themeExport.theme[themeId]);
|
|
211
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${id}.`);
|
|
212
|
+
} catch (error) {
|
|
213
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`);
|
|
214
|
+
printMessage(`Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`, 'error');
|
|
195
215
|
}
|
|
216
|
+
break;
|
|
196
217
|
}
|
|
197
|
-
if (!found) {
|
|
198
|
-
stopProgressIndicator(`Theme ${id} not found!`);
|
|
199
|
-
}
|
|
200
|
-
} else {
|
|
201
|
-
printMessage('Import validation failed...', 'error');
|
|
202
218
|
}
|
|
203
|
-
|
|
219
|
+
if (!found) {
|
|
220
|
+
stopProgressIndicator(indicatorId, `Theme ${id} not found!`);
|
|
221
|
+
}
|
|
222
|
+
} catch (error) {
|
|
223
|
+
printMessage(`Error importing theme ${id}: ${error}`, 'error');
|
|
224
|
+
}
|
|
204
225
|
}
|
|
205
226
|
|
|
206
227
|
/**
|
|
@@ -208,60 +229,49 @@ export async function importThemeById(id, file) {
|
|
|
208
229
|
* @param {String} file import file name
|
|
209
230
|
*/
|
|
210
231
|
export async function importThemesFromFile(file) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
frodo.theme.putThemes(fileData.theme).then(result => {
|
|
222
|
-
if (result == null) {
|
|
223
|
-
stopProgressIndicator(`Error importing ${Object.keys(fileData.theme).length} themes!`);
|
|
224
|
-
printMessage(`Error importing ${Object.keys(fileData.theme).length} themes from ${file}`, 'error');
|
|
225
|
-
} else {
|
|
226
|
-
stopProgressIndicator(`Successfully imported ${Object.keys(fileData.theme).length} themes.`);
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
} else {
|
|
230
|
-
printMessage('Import validation failed...', 'error');
|
|
231
|
-
}
|
|
232
|
-
});
|
|
232
|
+
const filePath = getFilePath(file);
|
|
233
|
+
try {
|
|
234
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
235
|
+
const themeExport = JSON.parse(data);
|
|
236
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing themes from ${filePath}...`);
|
|
237
|
+
await importThemes(themeExport);
|
|
238
|
+
stopProgressIndicator(indicatorId, `Successfully imported ${Object.keys(themeExport.theme).length} themes.`);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
printMessage(`Error importing themes: ${error}`, 'error');
|
|
241
|
+
}
|
|
233
242
|
}
|
|
234
243
|
|
|
235
244
|
/**
|
|
236
245
|
* Import themes from separate files
|
|
237
246
|
*/
|
|
238
247
|
export async function importThemesFromFiles() {
|
|
239
|
-
const names = fs.readdirSync(
|
|
240
|
-
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json'));
|
|
241
|
-
createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
|
|
248
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
249
|
+
const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json')).map(name => getFilePath(name));
|
|
250
|
+
const indicatorId = createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
|
|
242
251
|
let fileData = null;
|
|
243
252
|
let count = 0;
|
|
244
253
|
let total = 0;
|
|
245
254
|
let files = 0;
|
|
246
255
|
for (const file of jsonFiles) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
if (result == null) {
|
|
254
|
-
printMessage(`Error importing ${count} themes from ${file}`, 'error');
|
|
255
|
-
} else {
|
|
256
|
+
try {
|
|
257
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
258
|
+
fileData = JSON.parse(data);
|
|
259
|
+
if (validateImport(fileData.meta)) {
|
|
260
|
+
count = Object.keys(fileData.theme).length;
|
|
261
|
+
await importThemes(fileData);
|
|
256
262
|
files += 1;
|
|
257
263
|
total += count;
|
|
258
|
-
updateProgressIndicator(`Imported ${count} theme(s) from ${file}`);
|
|
264
|
+
updateProgressIndicator(indicatorId, `Imported ${count} theme(s) from ${file}`);
|
|
265
|
+
} else {
|
|
266
|
+
printMessage(`Validation of ${file} failed!`, 'error');
|
|
259
267
|
}
|
|
260
|
-
}
|
|
261
|
-
|
|
268
|
+
} catch (error) {
|
|
269
|
+
var _error$response;
|
|
270
|
+
updateProgressIndicator(indicatorId, `Error importing theme(s) from ${file}`);
|
|
271
|
+
printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
|
|
262
272
|
}
|
|
263
273
|
}
|
|
264
|
-
stopProgressIndicator(`Finished importing ${total} theme(s) from ${files} file(s).`);
|
|
274
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} theme(s) from ${files} file(s).`);
|
|
265
275
|
}
|
|
266
276
|
|
|
267
277
|
/**
|
|
@@ -269,29 +279,25 @@ export async function importThemesFromFiles() {
|
|
|
269
279
|
* @param {String} file import file name
|
|
270
280
|
*/
|
|
271
281
|
export async function importFirstThemeFromFile(file) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
} else {
|
|
285
|
-
stopProgressIndicator(`Successfully imported theme ${themeData.theme[id].name}`);
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
break;
|
|
282
|
+
try {
|
|
283
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
284
|
+
const themeExport = JSON.parse(data);
|
|
285
|
+
const indicatorId = createProgressIndicator('determinate', 1, 'Importing theme...');
|
|
286
|
+
for (const id of Object.keys(themeExport.theme)) {
|
|
287
|
+
updateProgressIndicator(indicatorId, `Importing ${themeExport.theme[id].name}`);
|
|
288
|
+
updateTheme(id, themeExport.theme[id]).then(result => {
|
|
289
|
+
if (result == null) {
|
|
290
|
+
stopProgressIndicator(indicatorId, `Error importing theme ${themeExport.theme[id].name}`);
|
|
291
|
+
printMessage(`Error importing theme ${themeExport.theme[id].name}`, 'error');
|
|
292
|
+
} else {
|
|
293
|
+
stopProgressIndicator(indicatorId, `Successfully imported theme ${themeExport.theme[id].name}`);
|
|
289
294
|
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
printMessage('Import validation failed...', 'error');
|
|
295
|
+
});
|
|
296
|
+
break;
|
|
293
297
|
}
|
|
294
|
-
})
|
|
298
|
+
} catch (error) {
|
|
299
|
+
printMessage(`Error importing themes: ${error}`, 'error');
|
|
300
|
+
}
|
|
295
301
|
}
|
|
296
302
|
|
|
297
303
|
/**
|
|
@@ -299,12 +305,12 @@ export async function importFirstThemeFromFile(file) {
|
|
|
299
305
|
* @param {String} id theme id
|
|
300
306
|
*/
|
|
301
307
|
export async function deleteThemeCmd(id) {
|
|
302
|
-
createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
|
|
308
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
|
|
303
309
|
try {
|
|
304
|
-
await
|
|
305
|
-
stopProgressIndicator(`Deleted ${id}.`, 'success');
|
|
310
|
+
await deleteTheme(id);
|
|
311
|
+
stopProgressIndicator(indicatorId, `Deleted ${id}.`, 'success');
|
|
306
312
|
} catch (error) {
|
|
307
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
313
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
308
314
|
}
|
|
309
315
|
}
|
|
310
316
|
|
|
@@ -313,12 +319,12 @@ export async function deleteThemeCmd(id) {
|
|
|
313
319
|
* @param {String} name theme name
|
|
314
320
|
*/
|
|
315
321
|
export async function deleteThemeByNameCmd(name) {
|
|
316
|
-
createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
|
|
322
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
|
|
317
323
|
try {
|
|
318
|
-
await
|
|
319
|
-
stopProgressIndicator(`Deleted ${name}.`, 'success');
|
|
324
|
+
await deleteThemeByName(name);
|
|
325
|
+
stopProgressIndicator(indicatorId, `Deleted ${name}.`, 'success');
|
|
320
326
|
} catch (error) {
|
|
321
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
327
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
322
328
|
}
|
|
323
329
|
}
|
|
324
330
|
|
|
@@ -326,12 +332,12 @@ export async function deleteThemeByNameCmd(name) {
|
|
|
326
332
|
* Delete all themes
|
|
327
333
|
*/
|
|
328
334
|
export async function deleteAllThemes() {
|
|
329
|
-
createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
|
|
335
|
+
const indicatorId = createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
|
|
330
336
|
try {
|
|
331
|
-
await
|
|
332
|
-
stopProgressIndicator(`Deleted all realm themes.`, 'success');
|
|
337
|
+
await deleteThemes();
|
|
338
|
+
stopProgressIndicator(indicatorId, `Deleted all realm themes.`, 'success');
|
|
333
339
|
} catch (error) {
|
|
334
|
-
stopProgressIndicator(`Error: ${error.message}`, 'fail');
|
|
340
|
+
stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');
|
|
335
341
|
}
|
|
336
342
|
}
|
|
337
343
|
|
|
@@ -342,4 +348,4 @@ export async function deleteAllThemes() {
|
|
|
342
348
|
export async function deleteThemesCmd() {
|
|
343
349
|
return deleteAllThemes();
|
|
344
350
|
}
|
|
345
|
-
//# sourceMappingURL=ThemeOps.js.map
|
|
351
|
+
//# sourceMappingURL=ThemeOps.js.map
|
package/esm/ops/ThemeOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeOps.js","names":["frodo","fs","printMessage","createTable","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","saveToFile","getTypedFilename","getOneLineDescription","themeObj","description","_id","name","linkedTrees","join","getTableHeaderMd","markdown","getTableRowMd","row","listThemes","long","themeList","theme","getThemes","sort","a","b","localeCompare","forEach","isDefault","table","push","toString","exportThemeByName","file","fileName","themeData","getThemeByName","error","message","exportThemeById","id","getTheme","exportThemesToFile","utils","impex","getRealmString","allThemesData","length","exportThemesToFiles","importThemeByName","readFile","err","data","JSON","parse","validateImport","meta","found","hasOwnProperty","call","putThemeByName","importThemeById","themeId","putTheme","importThemesFromFile","fileData","Object","keys","putThemes","then","result","importThemesFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","count","total","files","readFileSync","importFirstThemeFromFile","deleteThemeCmd","undefined","deleteTheme","deleteThemeByNameCmd","deleteThemeByName","deleteAllThemes","deleteThemes","deleteThemesCmd"],"sources":["ops/ThemeOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { ThemeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n printMessage,\n createTable,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { saveToFile, getTypedFilename } from '../utils/ExportImportUtils';\n/**\n * Get a one-line description of the theme\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(themeObj: ThemeSkeleton): string {\n const description = `[${themeObj._id['brightCyan']}] ${themeObj.name}${\n themeObj.linkedTrees\n ? ' (' + themeObj.linkedTrees.join(', ')['brightCyan'] + ')'\n : ''\n }`;\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 | Linked Journey(s) | Id |\\n';\n markdown += '| ---- | ----------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the theme in markdown\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a table-row of the theme in markdown\n */\nexport function getTableRowMd(themeObj: ThemeSkeleton): string {\n const row = `| ${themeObj.name} | ${\n themeObj.linkedTrees ? themeObj.linkedTrees.join(', ') : ''\n } | \\`${themeObj._id}\\` |`;\n return row;\n}\n\n/**\n * List all the themes\n * @param {boolean} long Long version, more fields\n */\nexport async function listThemes(long = false) {\n const themeList = await frodo.theme.getThemes();\n themeList.sort((a, b) => a.name.localeCompare(b.name));\n if (!long) {\n themeList.forEach((theme) => {\n printMessage(\n `${theme.isDefault ? theme.name['brightCyan'] : theme.name}`,\n 'data'\n );\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Id'['brightCyan'],\n 'Default'['brightCyan'],\n ]);\n themeList.forEach((theme) => {\n table.push([\n `${theme.name}`,\n `${theme._id}`,\n `${theme.isDefault ? 'Yes'['brightGreen'] : ''}`,\n ]);\n });\n printMessage(table.toString(), 'data');\n }\n}\n\n/**\n * Export theme by name to file\n * @param {String} name theme name\n * @param {String} file optional export file name\n */\nexport async function exportThemeByName(name, file) {\n let fileName = getTypedFilename(name, 'theme');\n if (file) {\n fileName = file;\n }\n createProgressIndicator('determinate', 1, `Exporting ${name}`);\n try {\n const themeData = await frodo.theme.getThemeByName(name);\n updateProgressIndicator(`Writing file ${fileName}`);\n saveToFile('theme', [themeData], '_id', fileName);\n stopProgressIndicator(`Successfully exported theme ${name}.`);\n } catch (error) {\n stopProgressIndicator(`${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export theme by uuid to file\n * @param {String} id theme uuid\n * @param {String} file optional export file name\n */\nexport async function exportThemeById(id, file) {\n let fileName = getTypedFilename(id, 'theme');\n if (file) {\n fileName = file;\n }\n createProgressIndicator('determinate', 1, `Exporting ${id}`);\n try {\n const themeData = await frodo.theme.getTheme(id);\n updateProgressIndicator(`Writing file ${fileName}`);\n saveToFile('theme', [themeData], '_id', fileName);\n stopProgressIndicator(`Successfully exported theme ${id}.`);\n } catch (error) {\n stopProgressIndicator(`${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export all themes to file\n * @param {String} file optional export file name\n */\nexport async function exportThemesToFile(file) {\n let fileName = getTypedFilename(\n `all${frodo.utils.impex.getRealmString()}Themes`,\n 'theme'\n );\n if (file) {\n fileName = file;\n }\n const allThemesData = await frodo.theme.getThemes();\n createProgressIndicator(\n 'determinate',\n allThemesData.length,\n 'Exporting themes'\n );\n for (const themeData of allThemesData) {\n updateProgressIndicator(`Exporting theme ${themeData.name}`);\n }\n saveToFile('theme', allThemesData, '_id', fileName);\n stopProgressIndicator(\n `${allThemesData.length} themes exported to ${fileName}.`\n );\n}\n\n/**\n * Export all themes to separate files\n */\nexport async function exportThemesToFiles() {\n const allThemesData = await frodo.theme.getThemes();\n createProgressIndicator(\n 'determinate',\n allThemesData.length,\n 'Exporting themes'\n );\n for (const themeData of allThemesData) {\n updateProgressIndicator(`Writing theme ${themeData.name}`);\n const fileName = getTypedFilename(themeData.name, 'theme');\n saveToFile('theme', themeData, '_id', fileName);\n }\n stopProgressIndicator(`${allThemesData.length} themes exported.`);\n}\n\n/**\n * Import theme by name from file\n * @param {String} name theme name\n * @param {String} file import file name\n */\nexport async function importThemeByName(name, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n let found = false;\n for (const id in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, id)) {\n if (themeData.theme[id].name === name) {\n found = true;\n updateProgressIndicator(`Importing ${themeData.theme[id].name}`);\n try {\n await frodo.theme.putThemeByName(name, themeData.theme[id]);\n stopProgressIndicator(`Successfully imported theme ${name}.`);\n } catch (error) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[id].name}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[id].name}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(`Theme ${name} not found!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import theme by uuid from file\n * @param {String} id theme uuid\n * @param {String} file import file name\n */\nexport async function importThemeById(id, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n let found = false;\n for (const themeId in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, themeId)) {\n if (themeId === id) {\n found = true;\n updateProgressIndicator(\n `Importing ${themeData.theme[themeId]._id}`\n );\n try {\n await frodo.theme.putTheme(themeId, themeData.theme[themeId]);\n stopProgressIndicator(`Successfully imported theme ${id}.`);\n } catch (error) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(`Theme ${id} not found!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all themes from single file\n * @param {String} file import file name\n */\nexport async function importThemesFromFile(file) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(fileData.meta)) {\n createProgressIndicator(\n 'determinate',\n Object.keys(fileData.theme).length,\n 'Importing themes...'\n );\n for (const id in fileData.theme) {\n if ({}.hasOwnProperty.call(fileData.theme, id)) {\n updateProgressIndicator(`Importing ${fileData.theme[id].name}`);\n }\n }\n frodo.theme.putThemes(fileData.theme).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing ${Object.keys(fileData.theme).length} themes!`\n );\n printMessage(\n `Error importing ${\n Object.keys(fileData.theme).length\n } themes from ${file}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported ${\n Object.keys(fileData.theme).length\n } themes.`\n );\n }\n });\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import themes from separate files\n */\nexport async function importThemesFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.theme.json')\n );\n\n createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing themes...'\n );\n let fileData = null;\n let count = 0;\n let total = 0;\n let files = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n fileData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(fileData.meta)) {\n count = Object.keys(fileData.theme).length;\n // eslint-disable-next-line no-await-in-loop\n const result = await frodo.theme.putThemes(fileData.theme);\n if (result == null) {\n printMessage(`Error importing ${count} themes from ${file}`, 'error');\n } else {\n files += 1;\n total += count;\n updateProgressIndicator(`Imported ${count} theme(s) from ${file}`);\n }\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Finished importing ${total} theme(s) from ${files} file(s).`\n );\n}\n\n/**\n * Import first theme from file\n * @param {String} file import file name\n */\nexport async function importFirstThemeFromFile(file) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (frodo.utils.impex.validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n for (const id in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, id)) {\n updateProgressIndicator(`Importing ${themeData.theme[id].name}`);\n frodo.theme.putTheme(id, themeData.theme[id]).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[id].name}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[id].name}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported theme ${themeData.theme[id].name}`\n );\n }\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Delete theme by id\n * @param {String} id theme id\n */\nexport async function deleteThemeCmd(id) {\n createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);\n try {\n await frodo.theme.deleteTheme(id);\n stopProgressIndicator(`Deleted ${id}.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete theme by name\n * @param {String} name theme name\n */\nexport async function deleteThemeByNameCmd(name) {\n createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);\n try {\n await frodo.theme.deleteThemeByName(name);\n stopProgressIndicator(`Deleted ${name}.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n */\nexport async function deleteAllThemes() {\n createProgressIndicator(\n 'indeterminate',\n undefined,\n `Deleting all realm themes...`\n );\n try {\n await frodo.theme.deleteThemes();\n stopProgressIndicator(`Deleted all realm themes.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n * @deprecated since version 0.14.0\n */\nexport async function deleteThemesCmd() {\n return deleteAllThemes();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeOps.js","names":["frodo","fs","v4","uuidv4","createProgressIndicator","createTable","printMessage","stopProgressIndicator","updateProgressIndicator","getRealmString","validateImport","getTypedFilename","saveJsonToFile","saveToFile","getFilePath","getWorkingDirectory","utils","readThemes","readThemeByName","readTheme","updateThemeByName","updateTheme","importThemes","exportThemes","deleteTheme","deleteThemeByName","deleteThemes","theme","getOneLineDescription","themeObj","description","_id","name","linkedTrees","join","getTableHeaderMd","markdown","getTableRowMd","row","listThemes","long","themeList","sort","a","b","localeCompare","forEach","isDefault","table","push","toString","exportThemeByName","file","includeMeta","fileName","filePath","indicatorId","themeData","error","message","exportThemeById","id","exportThemesToFile","exportData","exportThemesToFiles","themes","barId","length","fileBarId","importThemeByName","data","readFileSync","themeExport","JSON","parse","found","Object","keys","importThemeById","themeId","importThemesFromFile","importThemesFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","map","fileData","count","total","files","meta","_error$response","response","importFirstThemeFromFile","then","result","deleteThemeCmd","undefined","deleteThemeByNameCmd","deleteAllThemes","deleteThemesCmd"],"sources":["../../src/ops/ThemeOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n ThemeExportInterface,\n type ThemeSkeleton,\n} from '@rockcarver/frodo-lib/types/ops/ThemeOps';\nimport fs from 'fs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n createProgressIndicator,\n createTable,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getRealmString,\n validateImport,\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readThemes,\n readThemeByName,\n readTheme,\n updateThemeByName,\n updateTheme,\n importThemes,\n exportThemes,\n deleteTheme,\n deleteThemeByName,\n deleteThemes,\n} = frodo.theme;\n\n/**\n * Get a one-line description of the theme\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(themeObj: ThemeSkeleton): string {\n const description = `[${themeObj._id['brightCyan']}] ${themeObj.name}${\n themeObj.linkedTrees\n ? ' (' + themeObj.linkedTrees.join(', ')['brightCyan'] + ')'\n : ''\n }`;\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 | Linked Journey(s) | Id |\\n';\n markdown += '| ---- | ----------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the theme in markdown\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a table-row of the theme in markdown\n */\nexport function getTableRowMd(themeObj: ThemeSkeleton): string {\n const row = `| ${themeObj.name} | ${\n themeObj.linkedTrees ? themeObj.linkedTrees.join(', ') : ''\n } | \\`${themeObj._id}\\` |`;\n return row;\n}\n\n/**\n * List all the themes\n * @param {boolean} long Long version, more fields\n */\nexport async function listThemes(long = false) {\n const themeList = await readThemes();\n themeList.sort((a, b) => a.name.localeCompare(b.name));\n if (!long) {\n themeList.forEach((theme) => {\n printMessage(\n `${theme.isDefault ? theme.name['brightCyan'] : theme.name}`,\n 'data'\n );\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Id'['brightCyan'],\n 'Default'['brightCyan'],\n ]);\n themeList.forEach((theme) => {\n table.push([\n `${theme.name}`,\n `${theme._id}`,\n `${theme.isDefault ? 'Yes'['brightGreen'] : ''}`,\n ]);\n });\n printMessage(table.toString(), 'data');\n }\n}\n\n/**\n * Export theme by name to file\n * @param {String} name theme name\n * @param {String} file optional export file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportThemeByName(name, file, includeMeta = true) {\n let fileName = getTypedFilename(name, 'theme');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting ${name}`\n );\n try {\n const themeData = await readThemeByName(name);\n if (!themeData._id) themeData._id = uuidv4();\n updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);\n saveToFile('theme', [themeData], '_id', filePath, includeMeta);\n stopProgressIndicator(indicatorId, `Successfully exported theme ${name}.`);\n } catch (error) {\n stopProgressIndicator(indicatorId, `${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export theme by uuid to file\n * @param {String} id theme uuid\n * @param {String} file optional export file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportThemeById(id, file, includeMeta = true) {\n let fileName = getTypedFilename(id, 'theme');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting ${id}`\n );\n try {\n const themeData = await readTheme(id);\n updateProgressIndicator(indicatorId, `Writing file to ${filePath}`);\n saveToFile('theme', [themeData], '_id', filePath, includeMeta);\n stopProgressIndicator(indicatorId, `Successfully exported theme ${id}.`);\n } catch (error) {\n stopProgressIndicator(indicatorId, `${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export all themes to file\n * @param {String} file optional export file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportThemesToFile(file, includeMeta = true) {\n let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportThemes();\n saveJsonToFile(exportData, filePath, includeMeta);\n}\n\n/**\n * Export all themes to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportThemesToFiles(includeMeta = true) {\n const themes = await readThemes();\n const barId = createProgressIndicator(\n 'determinate',\n themes.length,\n 'Exporting themes'\n );\n for (const theme of themes) {\n if (!theme._id) theme._id = uuidv4();\n const fileBarId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting theme ${theme.name}...`\n );\n updateProgressIndicator(barId, `Exporting theme ${theme.name}`);\n const file = getFilePath(getTypedFilename(theme.name, 'theme'), true);\n saveToFile('theme', theme, '_id', file, includeMeta);\n updateProgressIndicator(fileBarId, `${theme.name} saved to ${file}`);\n stopProgressIndicator(fileBarId, `${theme.name} saved to ${file}.`);\n }\n stopProgressIndicator(barId, `${themes.length} themes exported.`);\n}\n\n/**\n * Import theme by name from file\n * @param {String} name theme name\n * @param {String} file import file name\n */\nexport async function importThemeByName(name, file) {\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const themeExport: ThemeExportInterface = JSON.parse(data);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n 'Importing theme...'\n );\n let found = false;\n for (const id of Object.keys(themeExport.theme)) {\n if (themeExport.theme[id].name === name) {\n found = true;\n updateProgressIndicator(\n indicatorId,\n `Importing ${themeExport.theme[id].name}`\n );\n try {\n await updateThemeByName(name, themeExport.theme[id]);\n stopProgressIndicator(\n indicatorId,\n `Successfully imported theme ${name}.`\n );\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing theme ${themeExport.theme[id].name}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeExport.theme[id].name}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n if (!found) {\n stopProgressIndicator(indicatorId, `Theme ${name} not found!`);\n }\n } catch (error) {\n printMessage(`Error importing theme ${name}: ${error}`, 'error');\n }\n}\n\n/**\n * Import theme by uuid from file\n * @param {String} id theme uuid\n * @param {String} file import file name\n */\nexport async function importThemeById(id, file) {\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const themeExport: ThemeExportInterface = JSON.parse(data);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n 'Importing theme...'\n );\n let found = false;\n for (const themeId of Object.keys(themeExport.theme)) {\n if (themeId === id) {\n found = true;\n updateProgressIndicator(\n indicatorId,\n `Importing ${themeExport.theme[themeId]._id}`\n );\n try {\n await updateTheme(themeId, themeExport.theme[themeId]);\n stopProgressIndicator(\n indicatorId,\n `Successfully imported theme ${id}.`\n );\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeExport.theme[themeId]._id}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n if (!found) {\n stopProgressIndicator(indicatorId, `Theme ${id} not found!`);\n }\n } catch (error) {\n printMessage(`Error importing theme ${id}: ${error}`, 'error');\n }\n}\n\n/**\n * Import all themes from single file\n * @param {String} file import file name\n */\nexport async function importThemesFromFile(file) {\n const filePath = getFilePath(file);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const themeExport: ThemeExportInterface = JSON.parse(data);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing themes from ${filePath}...`\n );\n await importThemes(themeExport);\n stopProgressIndicator(\n indicatorId,\n `Successfully imported ${Object.keys(themeExport.theme).length} themes.`\n );\n } catch (error) {\n printMessage(`Error importing themes: ${error}`, 'error');\n }\n}\n\n/**\n * Import themes from separate files\n */\nexport async function importThemesFromFiles() {\n const names = fs.readdirSync(getWorkingDirectory());\n const jsonFiles = names\n .filter((name) => name.toLowerCase().endsWith('.theme.json'))\n .map((name) => getFilePath(name));\n\n const indicatorId = createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing themes...'\n );\n let fileData = null;\n let count = 0;\n let total = 0;\n let files = 0;\n for (const file of jsonFiles) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n count = Object.keys(fileData.theme).length;\n await importThemes(fileData);\n files += 1;\n total += count;\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} theme(s) from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n } catch (error) {\n updateProgressIndicator(\n indicatorId,\n `Error importing theme(s) from ${file}`\n );\n printMessage(error.response?.data || error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} theme(s) from ${files} file(s).`\n );\n}\n\n/**\n * Import first theme from file\n * @param {String} file import file name\n */\nexport async function importFirstThemeFromFile(file) {\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const themeExport = JSON.parse(data);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n 'Importing theme...'\n );\n for (const id of Object.keys(themeExport.theme)) {\n updateProgressIndicator(\n indicatorId,\n `Importing ${themeExport.theme[id].name}`\n );\n updateTheme(id, themeExport.theme[id]).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n indicatorId,\n `Error importing theme ${themeExport.theme[id].name}`\n );\n printMessage(\n `Error importing theme ${themeExport.theme[id].name}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n indicatorId,\n `Successfully imported theme ${themeExport.theme[id].name}`\n );\n }\n });\n break;\n }\n } catch (error) {\n printMessage(`Error importing themes: ${error}`, 'error');\n }\n}\n\n/**\n * Delete theme by id\n * @param {String} id theme id\n */\nexport async function deleteThemeCmd(id) {\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n undefined,\n `Deleting ${id}...`\n );\n try {\n await deleteTheme(id);\n stopProgressIndicator(indicatorId, `Deleted ${id}.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete theme by name\n * @param {String} name theme name\n */\nexport async function deleteThemeByNameCmd(name) {\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n undefined,\n `Deleting ${name}...`\n );\n try {\n await deleteThemeByName(name);\n stopProgressIndicator(indicatorId, `Deleted ${name}.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n */\nexport async function deleteAllThemes() {\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n undefined,\n `Deleting all realm themes...`\n );\n try {\n await deleteThemes();\n stopProgressIndicator(indicatorId, `Deleted all realm themes.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n * @deprecated since version 0.14.0\n */\nexport async function deleteThemesCmd() {\n return deleteAllThemes();\n}\n"],"mappings":"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"}
|