@rockcarver/frodo-cli 2.0.0-9 → 2.0.0
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/.vscode/launch.json +1 -0
- package/CHANGELOG.md +1178 -701
- package/README.md +2 -2
- package/dist/app.cjs +187758 -0
- package/dist/app.cjs.map +1 -0
- package/dist/app.d.cts +2 -0
- package/dist/chunk-MPPKDFVI.cjs +56 -0
- package/dist/chunk-MPPKDFVI.cjs.map +1 -0
- package/dist/launch.cjs +27 -0
- package/dist/launch.cjs.map +1 -0
- package/dist/launch.d.cts +1 -0
- package/dist/loader.cjs +836 -0
- package/dist/loader.cjs.map +1 -0
- package/dist/loader.d.cts +3 -0
- package/global-jest-setup.js +5 -0
- package/package.json +68 -57
- package/tsup.config.ts +40 -0
- package/esm/app.js +0 -63
- package/esm/app.js.map +0 -1
- package/esm/cli/FrodoCommand.js +0 -147
- package/esm/cli/FrodoCommand.js.map +0 -1
- package/esm/cli/_template/something-delete.js +0 -22
- package/esm/cli/_template/something-delete.js.map +0 -1
- package/esm/cli/_template/something-describe.js +0 -22
- package/esm/cli/_template/something-describe.js.map +0 -1
- package/esm/cli/_template/something-else-delete.js +0 -22
- package/esm/cli/_template/something-else-delete.js.map +0 -1
- package/esm/cli/_template/something-else-describe.js +0 -22
- package/esm/cli/_template/something-else-describe.js.map +0 -1
- package/esm/cli/_template/something-else-export.js +0 -22
- package/esm/cli/_template/something-else-export.js.map +0 -1
- package/esm/cli/_template/something-else-import.js +0 -22
- package/esm/cli/_template/something-else-import.js.map +0 -1
- package/esm/cli/_template/something-else-list.js +0 -22
- package/esm/cli/_template/something-else-list.js.map +0 -1
- package/esm/cli/_template/something-else.js +0 -10
- package/esm/cli/_template/something-else.js.map +0 -1
- package/esm/cli/_template/something-export.js +0 -22
- package/esm/cli/_template/something-export.js.map +0 -1
- package/esm/cli/_template/something-import.js +0 -22
- package/esm/cli/_template/something-import.js.map +0 -1
- package/esm/cli/_template/something-list.js +0 -22
- package/esm/cli/_template/something-list.js.map +0 -1
- package/esm/cli/_template/something-other-delete.js +0 -22
- package/esm/cli/_template/something-other-delete.js.map +0 -1
- package/esm/cli/_template/something-other-describe.js +0 -22
- package/esm/cli/_template/something-other-describe.js.map +0 -1
- package/esm/cli/_template/something-other-export.js +0 -22
- package/esm/cli/_template/something-other-export.js.map +0 -1
- package/esm/cli/_template/something-other-import.js +0 -22
- package/esm/cli/_template/something-other-import.js.map +0 -1
- package/esm/cli/_template/something-other-list.js +0 -22
- package/esm/cli/_template/something-other-list.js.map +0 -1
- package/esm/cli/_template/something-other.js +0 -10
- package/esm/cli/_template/something-other.js.map +0 -1
- package/esm/cli/_template/something.js +0 -16
- package/esm/cli/_template/something.js.map +0 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +0 -27
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +0 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +0 -86
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-federation-export.js +0 -45
- package/esm/cli/admin/admin-federation-export.js.map +0 -1
- package/esm/cli/admin/admin-federation-import.js +0 -49
- package/esm/cli/admin/admin-federation-import.js.map +0 -1
- package/esm/cli/admin/admin-federation-list.js +0 -29
- package/esm/cli/admin/admin-federation-list.js.map +0 -1
- package/esm/cli/admin/admin-federation.js +0 -13
- package/esm/cli/admin/admin-federation.js.map +0 -1
- package/esm/cli/admin/admin-get-access-token.js +0 -28
- package/esm/cli/admin/admin-get-access-token.js.map +0 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +0 -28
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +0 -28
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +0 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +0 -30
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +0 -30
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +0 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +0 -31
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +0 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +0 -27
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +0 -1
- package/esm/cli/admin/admin-repair-org-model.js +0 -28
- package/esm/cli/admin/admin-repair-org-model.js.map +0 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +0 -28
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +0 -28
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +0 -1
- package/esm/cli/admin/admin.js +0 -22
- package/esm/cli/admin/admin.js.map +0 -1
- package/esm/cli/agent/agent-delete.js +0 -52
- package/esm/cli/agent/agent-delete.js.map +0 -1
- package/esm/cli/agent/agent-describe.js +0 -22
- package/esm/cli/agent/agent-describe.js.map +0 -1
- package/esm/cli/agent/agent-export.js +0 -42
- package/esm/cli/agent/agent-export.js.map +0 -1
- package/esm/cli/agent/agent-gateway-delete.js +0 -52
- package/esm/cli/agent/agent-gateway-delete.js.map +0 -1
- package/esm/cli/agent/agent-gateway-describe.js +0 -22
- package/esm/cli/agent/agent-gateway-describe.js.map +0 -1
- package/esm/cli/agent/agent-gateway-export.js +0 -42
- package/esm/cli/agent/agent-gateway-export.js.map +0 -1
- package/esm/cli/agent/agent-gateway-import.js +0 -47
- package/esm/cli/agent/agent-gateway-import.js.map +0 -1
- package/esm/cli/agent/agent-gateway-list.js +0 -23
- package/esm/cli/agent/agent-gateway-list.js.map +0 -1
- package/esm/cli/agent/agent-gateway.js +0 -10
- package/esm/cli/agent/agent-gateway.js.map +0 -1
- package/esm/cli/agent/agent-import.js +0 -47
- package/esm/cli/agent/agent-import.js.map +0 -1
- package/esm/cli/agent/agent-java-delete.js +0 -52
- package/esm/cli/agent/agent-java-delete.js.map +0 -1
- package/esm/cli/agent/agent-java-describe.js +0 -22
- package/esm/cli/agent/agent-java-describe.js.map +0 -1
- package/esm/cli/agent/agent-java-export.js +0 -42
- package/esm/cli/agent/agent-java-export.js.map +0 -1
- package/esm/cli/agent/agent-java-import.js +0 -47
- package/esm/cli/agent/agent-java-import.js.map +0 -1
- package/esm/cli/agent/agent-java-list.js +0 -23
- package/esm/cli/agent/agent-java-list.js.map +0 -1
- package/esm/cli/agent/agent-java.js +0 -10
- package/esm/cli/agent/agent-java.js.map +0 -1
- package/esm/cli/agent/agent-list.js +0 -23
- package/esm/cli/agent/agent-list.js.map +0 -1
- package/esm/cli/agent/agent-web-delete.js +0 -52
- package/esm/cli/agent/agent-web-delete.js.map +0 -1
- package/esm/cli/agent/agent-web-describe.js +0 -22
- package/esm/cli/agent/agent-web-describe.js.map +0 -1
- package/esm/cli/agent/agent-web-export.js +0 -42
- package/esm/cli/agent/agent-web-export.js.map +0 -1
- package/esm/cli/agent/agent-web-import.js +0 -47
- package/esm/cli/agent/agent-web-import.js.map +0 -1
- package/esm/cli/agent/agent-web-list.js +0 -23
- package/esm/cli/agent/agent-web-list.js.map +0 -1
- package/esm/cli/agent/agent-web.js +0 -10
- package/esm/cli/agent/agent-web.js.map +0 -1
- package/esm/cli/agent/agent.js +0 -17
- package/esm/cli/agent/agent.js.map +0 -1
- package/esm/cli/app/app-delete.js +0 -22
- package/esm/cli/app/app-delete.js.map +0 -1
- package/esm/cli/app/app-describe.js +0 -22
- package/esm/cli/app/app-describe.js.map +0 -1
- package/esm/cli/app/app-export.js +0 -52
- package/esm/cli/app/app-export.js.map +0 -1
- package/esm/cli/app/app-import.js +0 -57
- package/esm/cli/app/app-import.js.map +0 -1
- package/esm/cli/app/app-list.js +0 -25
- package/esm/cli/app/app-list.js.map +0 -1
- package/esm/cli/app/app.js +0 -21
- package/esm/cli/app/app.js.map +0 -1
- package/esm/cli/authz/authz-policy-delete.js +0 -43
- package/esm/cli/authz/authz-policy-delete.js.map +0 -1
- package/esm/cli/authz/authz-policy-describe.js +0 -30
- package/esm/cli/authz/authz-policy-describe.js.map +0 -1
- package/esm/cli/authz/authz-policy-export.js +0 -75
- package/esm/cli/authz/authz-policy-export.js.map +0 -1
- package/esm/cli/authz/authz-policy-import.js +0 -65
- package/esm/cli/authz/authz-policy-import.js.map +0 -1
- package/esm/cli/authz/authz-policy-list.js +0 -37
- package/esm/cli/authz/authz-policy-list.js.map +0 -1
- package/esm/cli/authz/authz-policy.js +0 -10
- package/esm/cli/authz/authz-policy.js.map +0 -1
- package/esm/cli/authz/authz-set-delete.js +0 -37
- package/esm/cli/authz/authz-set-delete.js.map +0 -1
- package/esm/cli/authz/authz-set-describe.js +0 -30
- package/esm/cli/authz/authz-set-describe.js.map +0 -1
- package/esm/cli/authz/authz-set-export.js +0 -55
- package/esm/cli/authz/authz-set-export.js.map +0 -1
- package/esm/cli/authz/authz-set-import.js +0 -61
- package/esm/cli/authz/authz-set-import.js.map +0 -1
- package/esm/cli/authz/authz-set-list.js +0 -25
- package/esm/cli/authz/authz-set-list.js.map +0 -1
- package/esm/cli/authz/authz-set.js +0 -10
- package/esm/cli/authz/authz-set.js.map +0 -1
- package/esm/cli/authz/authz-type-delete.js +0 -43
- package/esm/cli/authz/authz-type-delete.js.map +0 -1
- package/esm/cli/authz/authz-type-describe.js +0 -34
- package/esm/cli/authz/authz-type-describe.js.map +0 -1
- package/esm/cli/authz/authz-type-export.js +0 -49
- package/esm/cli/authz/authz-type-export.js.map +0 -1
- package/esm/cli/authz/authz-type-import.js +0 -55
- package/esm/cli/authz/authz-type-import.js.map +0 -1
- package/esm/cli/authz/authz-type-list.js +0 -26
- package/esm/cli/authz/authz-type-list.js.map +0 -1
- package/esm/cli/authz/authz-type.js +0 -10
- package/esm/cli/authz/authz-type.js.map +0 -1
- package/esm/cli/authz/authz.js +0 -12
- package/esm/cli/authz/authz.js.map +0 -1
- package/esm/cli/conn/conn-delete.js +0 -14
- package/esm/cli/conn/conn-delete.js.map +0 -1
- package/esm/cli/conn/conn-describe.js +0 -15
- package/esm/cli/conn/conn-describe.js.map +0 -1
- package/esm/cli/conn/conn-list.js +0 -15
- package/esm/cli/conn/conn-list.js.map +0 -1
- package/esm/cli/conn/conn-save.js +0 -107
- package/esm/cli/conn/conn-save.js.map +0 -1
- package/esm/cli/conn/conn.js +0 -15
- package/esm/cli/conn/conn.js.map +0 -1
- package/esm/cli/email/email-template-export.js +0 -40
- package/esm/cli/email/email-template-export.js.map +0 -1
- package/esm/cli/email/email-template-import.js +0 -45
- package/esm/cli/email/email-template-import.js.map +0 -1
- package/esm/cli/email/email-template-list.js +0 -25
- package/esm/cli/email/email-template-list.js.map +0 -1
- package/esm/cli/email/email-template.js +0 -8
- package/esm/cli/email/email-template.js.map +0 -1
- package/esm/cli/email/email.js +0 -11
- package/esm/cli/email/email.js.map +0 -1
- package/esm/cli/esv/esv-apply.js +0 -62
- package/esm/cli/esv/esv-apply.js.map +0 -1
- package/esm/cli/esv/esv-secret-create.js +0 -25
- package/esm/cli/esv/esv-secret-create.js.map +0 -1
- package/esm/cli/esv/esv-secret-delete.js +0 -35
- package/esm/cli/esv/esv-secret-delete.js.map +0 -1
- package/esm/cli/esv/esv-secret-describe.js +0 -25
- package/esm/cli/esv/esv-secret-describe.js.map +0 -1
- package/esm/cli/esv/esv-secret-export.js +0 -22
- package/esm/cli/esv/esv-secret-export.js.map +0 -1
- package/esm/cli/esv/esv-secret-import.js +0 -22
- package/esm/cli/esv/esv-secret-import.js.map +0 -1
- package/esm/cli/esv/esv-secret-list.js +0 -25
- package/esm/cli/esv/esv-secret-list.js.map +0 -1
- package/esm/cli/esv/esv-secret-set.js +0 -25
- package/esm/cli/esv/esv-secret-set.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-activate.js +0 -30
- package/esm/cli/esv/esv-secret-version-activate.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-create.js +0 -25
- package/esm/cli/esv/esv-secret-version-create.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +0 -30
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-delete.js +0 -35
- package/esm/cli/esv/esv-secret-version-delete.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-list.js +0 -25
- package/esm/cli/esv/esv-secret-version-list.js.map +0 -1
- package/esm/cli/esv/esv-secret-version.js +0 -10
- package/esm/cli/esv/esv-secret-version.js.map +0 -1
- package/esm/cli/esv/esv-secret.js +0 -16
- package/esm/cli/esv/esv-secret.js.map +0 -1
- package/esm/cli/esv/esv-variable-create.js +0 -24
- package/esm/cli/esv/esv-variable-create.js.map +0 -1
- package/esm/cli/esv/esv-variable-delete.js +0 -35
- package/esm/cli/esv/esv-variable-delete.js.map +0 -1
- package/esm/cli/esv/esv-variable-describe.js +0 -25
- package/esm/cli/esv/esv-variable-describe.js.map +0 -1
- package/esm/cli/esv/esv-variable-export.js +0 -22
- package/esm/cli/esv/esv-variable-export.js.map +0 -1
- package/esm/cli/esv/esv-variable-import.js +0 -22
- package/esm/cli/esv/esv-variable-import.js.map +0 -1
- package/esm/cli/esv/esv-variable-list.js +0 -25
- package/esm/cli/esv/esv-variable-list.js.map +0 -1
- package/esm/cli/esv/esv-variable-set.js +0 -31
- package/esm/cli/esv/esv-variable-set.js.map +0 -1
- package/esm/cli/esv/esv-variable.js +0 -15
- package/esm/cli/esv/esv-variable.js.map +0 -1
- package/esm/cli/esv/esv.js +0 -12
- package/esm/cli/esv/esv.js.map +0 -1
- package/esm/cli/idm/idm-count.js +0 -25
- package/esm/cli/idm/idm-count.js.map +0 -1
- package/esm/cli/idm/idm-export.js +0 -42
- package/esm/cli/idm/idm-export.js.map +0 -1
- package/esm/cli/idm/idm-import.js +0 -45
- package/esm/cli/idm/idm-import.js.map +0 -1
- package/esm/cli/idm/idm-list.js +0 -29
- package/esm/cli/idm/idm-list.js.map +0 -1
- package/esm/cli/idm/idm.js +0 -13
- package/esm/cli/idm/idm.js.map +0 -1
- package/esm/cli/idp/idp-export.js +0 -42
- package/esm/cli/idp/idp-export.js.map +0 -1
- package/esm/cli/idp/idp-import.js +0 -45
- package/esm/cli/idp/idp-import.js.map +0 -1
- package/esm/cli/idp/idp-list.js +0 -28
- package/esm/cli/idp/idp-list.js.map +0 -1
- package/esm/cli/idp/idp.js +0 -12
- package/esm/cli/idp/idp.js.map +0 -1
- package/esm/cli/info/info.js +0 -54
- package/esm/cli/info/info.js.map +0 -1
- package/esm/cli/journey/journey-delete.js +0 -34
- package/esm/cli/journey/journey-delete.js.map +0 -1
- package/esm/cli/journey/journey-describe.js +0 -125
- package/esm/cli/journey/journey-describe.js.map +0 -1
- package/esm/cli/journey/journey-disable.js +0 -43
- package/esm/cli/journey/journey-disable.js.map +0 -1
- package/esm/cli/journey/journey-enable.js +0 -43
- package/esm/cli/journey/journey-enable.js.map +0 -1
- package/esm/cli/journey/journey-export.js +0 -50
- package/esm/cli/journey/journey-export.js.map +0 -1
- package/esm/cli/journey/journey-import.js +0 -57
- package/esm/cli/journey/journey-import.js.map +0 -1
- package/esm/cli/journey/journey-list.js +0 -25
- package/esm/cli/journey/journey-list.js.map +0 -1
- package/esm/cli/journey/journey-prune.js +0 -38
- package/esm/cli/journey/journey-prune.js.map +0 -1
- package/esm/cli/journey/journey.js +0 -17
- package/esm/cli/journey/journey.js.map +0 -1
- package/esm/cli/log/log-fetch.js +0 -101
- package/esm/cli/log/log-fetch.js.map +0 -1
- package/esm/cli/log/log-key-delete.js +0 -35
- package/esm/cli/log/log-key-delete.js.map +0 -1
- package/esm/cli/log/log-key-describe.js +0 -22
- package/esm/cli/log/log-key-describe.js.map +0 -1
- package/esm/cli/log/log-key-list.js +0 -26
- package/esm/cli/log/log-key-list.js.map +0 -1
- package/esm/cli/log/log-key.js +0 -8
- package/esm/cli/log/log-key.js.map +0 -1
- package/esm/cli/log/log-list.js +0 -59
- package/esm/cli/log/log-list.js.map +0 -1
- package/esm/cli/log/log-tail.js +0 -56
- package/esm/cli/log/log-tail.js.map +0 -1
- package/esm/cli/log/log.js +0 -17
- package/esm/cli/log/log.js.map +0 -1
- package/esm/cli/realm/realm-add-custom-domain.js +0 -25
- package/esm/cli/realm/realm-add-custom-domain.js.map +0 -1
- package/esm/cli/realm/realm-describe.js +0 -24
- package/esm/cli/realm/realm-describe.js.map +0 -1
- package/esm/cli/realm/realm-list.js +0 -25
- package/esm/cli/realm/realm-list.js.map +0 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +0 -27
- package/esm/cli/realm/realm-remove-custom-domain.js.map +0 -1
- package/esm/cli/realm/realm.js +0 -18
- package/esm/cli/realm/realm.js.map +0 -1
- package/esm/cli/saml/saml-cot-export.js +0 -43
- package/esm/cli/saml/saml-cot-export.js.map +0 -1
- package/esm/cli/saml/saml-cot-import.js +0 -49
- package/esm/cli/saml/saml-cot-import.js.map +0 -1
- package/esm/cli/saml/saml-cot-list.js +0 -26
- package/esm/cli/saml/saml-cot-list.js.map +0 -1
- package/esm/cli/saml/saml-cot.js +0 -8
- package/esm/cli/saml/saml-cot.js.map +0 -1
- package/esm/cli/saml/saml-delete.js +0 -38
- package/esm/cli/saml/saml-delete.js.map +0 -1
- package/esm/cli/saml/saml-describe.js +0 -25
- package/esm/cli/saml/saml-describe.js.map +0 -1
- package/esm/cli/saml/saml-export.js +0 -40
- package/esm/cli/saml/saml-export.js.map +0 -1
- package/esm/cli/saml/saml-import.js +0 -45
- package/esm/cli/saml/saml-import.js.map +0 -1
- package/esm/cli/saml/saml-list.js +0 -25
- package/esm/cli/saml/saml-list.js.map +0 -1
- package/esm/cli/saml/saml-metadata-export.js +0 -35
- package/esm/cli/saml/saml-metadata-export.js.map +0 -1
- package/esm/cli/saml/saml-metadata.js +0 -6
- package/esm/cli/saml/saml-metadata.js.map +0 -1
- package/esm/cli/saml/saml.js +0 -16
- package/esm/cli/saml/saml.js.map +0 -1
- package/esm/cli/script/script-delete.js +0 -22
- package/esm/cli/script/script-delete.js.map +0 -1
- package/esm/cli/script/script-describe.js +0 -22
- package/esm/cli/script/script-describe.js.map +0 -1
- package/esm/cli/script/script-export.js +0 -62
- package/esm/cli/script/script-export.js.map +0 -1
- package/esm/cli/script/script-import.js +0 -35
- package/esm/cli/script/script-import.js.map +0 -1
- package/esm/cli/script/script-list.js +0 -26
- package/esm/cli/script/script-list.js.map +0 -1
- package/esm/cli/script/script.js +0 -18
- package/esm/cli/script/script.js.map +0 -1
- package/esm/cli/service/service-delete.js +0 -22
- package/esm/cli/service/service-delete.js.map +0 -1
- package/esm/cli/service/service-export.js +0 -40
- package/esm/cli/service/service-export.js.map +0 -1
- package/esm/cli/service/service-import.js +0 -47
- package/esm/cli/service/service-import.js.map +0 -1
- package/esm/cli/service/service-list.js +0 -20
- package/esm/cli/service/service-list.js.map +0 -1
- package/esm/cli/service/service.js +0 -13
- package/esm/cli/service/service.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-delete.js +0 -40
- package/esm/cli/theme/theme-delete.js.map +0 -1
- package/esm/cli/theme/theme-export.js +0 -45
- package/esm/cli/theme/theme-export.js.map +0 -1
- package/esm/cli/theme/theme-import.js +0 -50
- package/esm/cli/theme/theme-import.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.js +0 -25
- package/esm/cli/theme/theme-list.js.map +0 -1
- package/esm/cli/theme/theme.js +0 -13
- package/esm/cli/theme/theme.js.map +0 -1
- package/esm/help/SampleData.js +0 -7
- package/esm/help/SampleData.js.map +0 -1
- package/esm/launch.js +0 -15
- package/esm/launch.js.map +0 -1
- package/esm/loader.js +0 -40
- package/esm/loader.js.map +0 -1
- package/esm/ops/AdminFederationOps.js +0 -216
- package/esm/ops/AdminFederationOps.js.map +0 -1
- package/esm/ops/AgentOps.js +0 -691
- package/esm/ops/AgentOps.js.map +0 -1
- package/esm/ops/CirclesOfTrustOps.js +0 -260
- package/esm/ops/CirclesOfTrustOps.js.map +0 -1
- package/esm/ops/ConnectionProfileOps.js +0 -125
- package/esm/ops/ConnectionProfileOps.js.map +0 -1
- package/esm/ops/EmailTemplateOps.js +0 -361
- package/esm/ops/EmailTemplateOps.js.map +0 -1
- package/esm/ops/IdmOps.js +0 -360
- package/esm/ops/IdmOps.js.map +0 -1
- package/esm/ops/IdpOps.js +0 -212
- package/esm/ops/IdpOps.js.map +0 -1
- package/esm/ops/JourneyOps.js +0 -669
- package/esm/ops/JourneyOps.js.map +0 -1
- package/esm/ops/LogOps.js +0 -149
- package/esm/ops/LogOps.js.map +0 -1
- package/esm/ops/NodeOps.js +0 -89
- package/esm/ops/NodeOps.js.map +0 -1
- package/esm/ops/OAuth2ClientOps.js +0 -271
- package/esm/ops/OAuth2ClientOps.js.map +0 -1
- package/esm/ops/OrganizationOps.js +0 -34
- package/esm/ops/OrganizationOps.js.map +0 -1
- package/esm/ops/PolicyOps.js +0 -493
- package/esm/ops/PolicyOps.js.map +0 -1
- package/esm/ops/PolicySetOps.js +0 -379
- package/esm/ops/PolicySetOps.js.map +0 -1
- package/esm/ops/RealmOps.js +0 -116
- package/esm/ops/RealmOps.js.map +0 -1
- package/esm/ops/ResourceTypeOps.js +0 -452
- package/esm/ops/ResourceTypeOps.js.map +0 -1
- package/esm/ops/Saml2Ops.js +0 -293
- package/esm/ops/Saml2Ops.js.map +0 -1
- package/esm/ops/Saml2Ops.test_.js.map +0 -1
- package/esm/ops/ScriptOps.js +0 -383
- package/esm/ops/ScriptOps.js.map +0 -1
- package/esm/ops/SecretsOps.js +0 -237
- package/esm/ops/SecretsOps.js.map +0 -1
- package/esm/ops/ServiceOps.js +0 -213
- package/esm/ops/ServiceOps.js.map +0 -1
- package/esm/ops/ThemeOps.js +0 -361
- package/esm/ops/ThemeOps.js.map +0 -1
- package/esm/ops/VariablesOps.js +0 -144
- package/esm/ops/VariablesOps.js.map +0 -1
- package/esm/ops/utils/OpsUtils.js +0 -9
- package/esm/ops/utils/OpsUtils.js.map +0 -1
- package/esm/ops/utils/Wordwrap.js +0 -5
- package/esm/ops/utils/Wordwrap.js.map +0 -1
- package/esm/storage/StaticStorage.js +0 -12
- package/esm/storage/StaticStorage.js.map +0 -1
- package/esm/utils/Config.js +0 -43
- package/esm/utils/Config.js.map +0 -1
- package/esm/utils/Console.js +0 -537
- package/esm/utils/Console.js.map +0 -1
- package/esm/utils/ExportImportUtils.js +0 -93
- package/esm/utils/ExportImportUtils.js.map +0 -1
- package/esm/utils/Version.js +0 -138
- package/esm/utils/Version.js.map +0 -1
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import { createObjectTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
|
-
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
|
-
const {
|
|
6
|
-
getRealmName
|
|
7
|
-
} = frodo.helper.utils;
|
|
8
|
-
const {
|
|
9
|
-
getResourceTypes,
|
|
10
|
-
getResourceType,
|
|
11
|
-
getResourceTypeByName,
|
|
12
|
-
exportResourceType,
|
|
13
|
-
exportResourceTypeByName,
|
|
14
|
-
exportResourceTypes,
|
|
15
|
-
importResourceType,
|
|
16
|
-
importResourceTypeByName,
|
|
17
|
-
importFirstResourceType,
|
|
18
|
-
importResourceTypes
|
|
19
|
-
} = frodo.authz.resourceType;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* List resource types
|
|
23
|
-
* @param {boolean} long more fields
|
|
24
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
25
|
-
*/
|
|
26
|
-
export async function listResourceTypes(long = false) {
|
|
27
|
-
let outcome = false;
|
|
28
|
-
try {
|
|
29
|
-
const resourceTypes = await getResourceTypes();
|
|
30
|
-
resourceTypes.sort((a, b) => a.name.localeCompare(b.name));
|
|
31
|
-
if (long) {
|
|
32
|
-
const table = createTable(['Name', 'Description', 'Uuid']);
|
|
33
|
-
for (const resourceType of resourceTypes) {
|
|
34
|
-
table.push([`${resourceType.name}`, `${resourceType.description}`, `${resourceType.uuid}`]);
|
|
35
|
-
}
|
|
36
|
-
printMessage(table.toString(), 'data');
|
|
37
|
-
} else {
|
|
38
|
-
for (const resourceType of resourceTypes) {
|
|
39
|
-
printMessage(`${resourceType.name}`, 'data');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
outcome = true;
|
|
43
|
-
} catch (err) {
|
|
44
|
-
printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');
|
|
45
|
-
printMessage(err, 'error');
|
|
46
|
-
}
|
|
47
|
-
return outcome;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Describe resource type by uuid
|
|
52
|
-
* @param {string} resourceTypeUuid resource type uuid
|
|
53
|
-
* @param {boolean} json JSON output
|
|
54
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
55
|
-
*/
|
|
56
|
-
export async function describeResourceType(resourceTypeUuid, json = false) {
|
|
57
|
-
let outcome = false;
|
|
58
|
-
try {
|
|
59
|
-
const resourceType = await getResourceType(resourceTypeUuid);
|
|
60
|
-
if (json) {
|
|
61
|
-
printMessage(resourceType, 'data');
|
|
62
|
-
} else {
|
|
63
|
-
const table = createObjectTable(resourceType);
|
|
64
|
-
printMessage(table.toString(), 'data');
|
|
65
|
-
}
|
|
66
|
-
outcome = true;
|
|
67
|
-
} catch (error) {
|
|
68
|
-
var _error$response;
|
|
69
|
-
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404) {
|
|
70
|
-
printMessage(`Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`, 'error');
|
|
71
|
-
} else {
|
|
72
|
-
var _error$response2, _error$response2$data;
|
|
73
|
-
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || error.message, 'error');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return outcome;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Describe resource type by name
|
|
81
|
-
* @param {string} resourceTypeName resource type name
|
|
82
|
-
* @param {boolean} json JSON output
|
|
83
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
84
|
-
*/
|
|
85
|
-
export async function describeResourceTypeByName(resourceTypeName, json = false) {
|
|
86
|
-
let outcome = false;
|
|
87
|
-
try {
|
|
88
|
-
const resourceType = await getResourceTypeByName(resourceTypeName);
|
|
89
|
-
if (json) {
|
|
90
|
-
printMessage(resourceType, 'data');
|
|
91
|
-
} else {
|
|
92
|
-
const table = createObjectTable(resourceType);
|
|
93
|
-
printMessage(table.toString(), 'data');
|
|
94
|
-
}
|
|
95
|
-
outcome = true;
|
|
96
|
-
} catch (error) {
|
|
97
|
-
var _error$response3;
|
|
98
|
-
if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 404) {
|
|
99
|
-
printMessage(`Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`, 'error');
|
|
100
|
-
} else {
|
|
101
|
-
var _error$response4, _error$response4$data;
|
|
102
|
-
printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : (_error$response4$data = _error$response4.data) === null || _error$response4$data === void 0 ? void 0 : _error$response4$data.message) || error.message, 'error');
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return outcome;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Delete resource type by uuid
|
|
110
|
-
* @param {string} resourceTypeUuid resource type uuid
|
|
111
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
112
|
-
*/
|
|
113
|
-
export async function deleteResourceType(resourceTypeUuid) {
|
|
114
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);
|
|
115
|
-
showSpinner(`Deleting ${resourceTypeUuid}...`);
|
|
116
|
-
let outcome = false;
|
|
117
|
-
const errors = [];
|
|
118
|
-
try {
|
|
119
|
-
debugMessage(`Deleting resource type ${resourceTypeUuid}`);
|
|
120
|
-
await deleteResourceType(resourceTypeUuid);
|
|
121
|
-
} catch (error) {
|
|
122
|
-
errors.push(error);
|
|
123
|
-
}
|
|
124
|
-
if (errors.length) {
|
|
125
|
-
const errorMessages = errors.map(error => {
|
|
126
|
-
var _error$response5, _error$response5$data;
|
|
127
|
-
return ((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.message) || error.message;
|
|
128
|
-
}).join('\n');
|
|
129
|
-
failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);
|
|
130
|
-
} else {
|
|
131
|
-
succeedSpinner(`Deleted ${resourceTypeUuid}.`);
|
|
132
|
-
outcome = true;
|
|
133
|
-
}
|
|
134
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`);
|
|
135
|
-
return outcome;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Delete resource type by name
|
|
140
|
-
* @param {string} resourceTypeName resource type name
|
|
141
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
142
|
-
*/
|
|
143
|
-
export async function deleteResourceTypeByName(resourceTypeName) {
|
|
144
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);
|
|
145
|
-
showSpinner(`Deleting ${resourceTypeName}...`);
|
|
146
|
-
let outcome = false;
|
|
147
|
-
const errors = [];
|
|
148
|
-
try {
|
|
149
|
-
debugMessage(`Deleting resource type ${resourceTypeName}`);
|
|
150
|
-
await deleteResourceTypeByName(resourceTypeName);
|
|
151
|
-
} catch (error) {
|
|
152
|
-
errors.push(error);
|
|
153
|
-
}
|
|
154
|
-
if (errors.length) {
|
|
155
|
-
const errorMessages = errors.map(error => {
|
|
156
|
-
var _error$response6, _error$response6$data;
|
|
157
|
-
return ((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.message) || error.message;
|
|
158
|
-
}).join('\n');
|
|
159
|
-
failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);
|
|
160
|
-
} else {
|
|
161
|
-
succeedSpinner(`Deleted ${resourceTypeName}.`);
|
|
162
|
-
outcome = true;
|
|
163
|
-
}
|
|
164
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`);
|
|
165
|
-
return outcome;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Delete all resource types
|
|
170
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
171
|
-
*/
|
|
172
|
-
export async function deleteResourceTypes() {
|
|
173
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);
|
|
174
|
-
let outcome = false;
|
|
175
|
-
const errors = [];
|
|
176
|
-
let resourceTypes = [];
|
|
177
|
-
try {
|
|
178
|
-
showSpinner(`Retrieving all resource types...`);
|
|
179
|
-
try {
|
|
180
|
-
resourceTypes = await getResourceTypes();
|
|
181
|
-
succeedSpinner(`Found ${resourceTypes.length} resource types.`);
|
|
182
|
-
} catch (error) {
|
|
183
|
-
error.message = `Error retrieving all resource types: ${error.message}`;
|
|
184
|
-
failSpinner(error.message);
|
|
185
|
-
throw error;
|
|
186
|
-
}
|
|
187
|
-
if (resourceTypes.length) createProgressBar(resourceTypes.length, `Deleting ${resourceTypes.length} resource types...`);
|
|
188
|
-
for (const resourceType of resourceTypes) {
|
|
189
|
-
const resourceTypeId = resourceType.uuid;
|
|
190
|
-
try {
|
|
191
|
-
debugMessage(`Deleting resource type ${resourceTypeId}`);
|
|
192
|
-
await deleteResourceType(resourceTypeId);
|
|
193
|
-
updateProgressBar(`Deleted ${resourceTypeId}`);
|
|
194
|
-
} catch (error) {
|
|
195
|
-
error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;
|
|
196
|
-
updateProgressBar(error.message);
|
|
197
|
-
errors.push(error);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
} catch (error) {
|
|
201
|
-
error.message = `Error deleting resource types: ${error}`;
|
|
202
|
-
errors.push(error);
|
|
203
|
-
} finally {
|
|
204
|
-
if (errors.length) {
|
|
205
|
-
const errorMessages = errors.map(error => error.message).join('\n');
|
|
206
|
-
if (resourceTypes.length) stopProgressBar(`Error deleting all resource types: ${errorMessages}`);
|
|
207
|
-
} else {
|
|
208
|
-
if (resourceTypes.length) stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);
|
|
209
|
-
outcome = true;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`);
|
|
213
|
-
return outcome;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Export resource type to file
|
|
218
|
-
* @param {string} resourceTypeUuid resource type uuid
|
|
219
|
-
* @param {string} file file name
|
|
220
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
221
|
-
*/
|
|
222
|
-
export async function exportResourceTypeToFile(resourceTypeUuid, file) {
|
|
223
|
-
let outcome = false;
|
|
224
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);
|
|
225
|
-
showSpinner(`Exporting ${resourceTypeUuid}...`);
|
|
226
|
-
try {
|
|
227
|
-
let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');
|
|
228
|
-
if (file) {
|
|
229
|
-
fileName = file;
|
|
230
|
-
}
|
|
231
|
-
const exportData = await exportResourceType(resourceTypeUuid);
|
|
232
|
-
saveJsonToFile(exportData, fileName);
|
|
233
|
-
succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);
|
|
234
|
-
outcome = true;
|
|
235
|
-
} catch (error) {
|
|
236
|
-
failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);
|
|
237
|
-
}
|
|
238
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);
|
|
239
|
-
return outcome;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Export resource type by name to file
|
|
244
|
-
* @param {string} resourceTypeName resource type name
|
|
245
|
-
* @param {string} file file name
|
|
246
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
247
|
-
*/
|
|
248
|
-
export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
|
|
249
|
-
let outcome = false;
|
|
250
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);
|
|
251
|
-
showSpinner(`Exporting ${resourceTypeName}...`);
|
|
252
|
-
try {
|
|
253
|
-
let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');
|
|
254
|
-
if (file) {
|
|
255
|
-
fileName = file;
|
|
256
|
-
}
|
|
257
|
-
const exportData = await exportResourceTypeByName(resourceTypeName);
|
|
258
|
-
saveJsonToFile(exportData, fileName);
|
|
259
|
-
succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);
|
|
260
|
-
outcome = true;
|
|
261
|
-
} catch (error) {
|
|
262
|
-
failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);
|
|
263
|
-
}
|
|
264
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);
|
|
265
|
-
return outcome;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Export resource types to file
|
|
270
|
-
* @param {string} file file name
|
|
271
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
272
|
-
*/
|
|
273
|
-
export async function exportResourceTypesToFile(file) {
|
|
274
|
-
let outcome = false;
|
|
275
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);
|
|
276
|
-
showSpinner(`Exporting all resource types...`);
|
|
277
|
-
try {
|
|
278
|
-
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`, 'resourcetype.authz');
|
|
279
|
-
if (file) {
|
|
280
|
-
fileName = file;
|
|
281
|
-
}
|
|
282
|
-
const exportData = await exportResourceTypes();
|
|
283
|
-
saveJsonToFile(exportData, fileName);
|
|
284
|
-
succeedSpinner(`Exported all resource types to ${fileName}.`);
|
|
285
|
-
outcome = true;
|
|
286
|
-
} catch (error) {
|
|
287
|
-
failSpinner(`Error exporting resource types: ${error.message}`);
|
|
288
|
-
}
|
|
289
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);
|
|
290
|
-
return outcome;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Export all resource types to separate files
|
|
295
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
296
|
-
*/
|
|
297
|
-
export async function exportResourceTypesToFiles() {
|
|
298
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);
|
|
299
|
-
const errors = [];
|
|
300
|
-
try {
|
|
301
|
-
const resourceTypes = await getResourceTypes();
|
|
302
|
-
createProgressBar(resourceTypes.length, 'Exporting resource types...');
|
|
303
|
-
for (const resourceType of resourceTypes) {
|
|
304
|
-
const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
|
|
305
|
-
try {
|
|
306
|
-
const exportData = await exportResourceType(resourceType.uuid);
|
|
307
|
-
saveJsonToFile(exportData, file);
|
|
308
|
-
updateProgressBar(`Exported ${resourceType.name}.`);
|
|
309
|
-
} catch (error) {
|
|
310
|
-
errors.push(error);
|
|
311
|
-
updateProgressBar(`Error exporting ${resourceType.name}.`);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
stopProgressBar(`Export complete.`);
|
|
315
|
-
} catch (error) {
|
|
316
|
-
errors.push(error);
|
|
317
|
-
stopProgressBar(`Error exporting resource types to files`);
|
|
318
|
-
}
|
|
319
|
-
debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);
|
|
320
|
-
return 0 === errors.length;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* Import resource type from file
|
|
325
|
-
* @param {string} resourceTypeId resource type id
|
|
326
|
-
* @param {string} file file name
|
|
327
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
328
|
-
*/
|
|
329
|
-
export async function importResourceTypeFromFile(resourceTypeId, file) {
|
|
330
|
-
let outcome = false;
|
|
331
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);
|
|
332
|
-
showSpinner(`Importing ${resourceTypeId}...`);
|
|
333
|
-
try {
|
|
334
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
335
|
-
const fileData = JSON.parse(data);
|
|
336
|
-
await importResourceType(resourceTypeId, fileData);
|
|
337
|
-
outcome = true;
|
|
338
|
-
succeedSpinner(`Imported ${resourceTypeId}.`);
|
|
339
|
-
} catch (error) {
|
|
340
|
-
failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);
|
|
341
|
-
printMessage(error, 'error');
|
|
342
|
-
}
|
|
343
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);
|
|
344
|
-
return outcome;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Import resource type by name from file
|
|
349
|
-
* @param {string} resourceTypeName resource type name
|
|
350
|
-
* @param {string} file file name
|
|
351
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
352
|
-
*/
|
|
353
|
-
export async function importResourceTypeByNameFromFile(resourceTypeName, file) {
|
|
354
|
-
let outcome = false;
|
|
355
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);
|
|
356
|
-
showSpinner(`Importing ${resourceTypeName}...`);
|
|
357
|
-
try {
|
|
358
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
359
|
-
const fileData = JSON.parse(data);
|
|
360
|
-
await importResourceTypeByName(resourceTypeName, fileData);
|
|
361
|
-
outcome = true;
|
|
362
|
-
succeedSpinner(`Imported ${resourceTypeName}.`);
|
|
363
|
-
} catch (error) {
|
|
364
|
-
failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);
|
|
365
|
-
printMessage(error, 'error');
|
|
366
|
-
}
|
|
367
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);
|
|
368
|
-
return outcome;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Import first resource type from file
|
|
373
|
-
* @param {string} file file name
|
|
374
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
375
|
-
*/
|
|
376
|
-
export async function importFirstResourceTypeFromFile(file) {
|
|
377
|
-
let outcome = false;
|
|
378
|
-
debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);
|
|
379
|
-
showSpinner(`Importing ${file}...`);
|
|
380
|
-
try {
|
|
381
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
382
|
-
const fileData = JSON.parse(data);
|
|
383
|
-
await importFirstResourceType(fileData);
|
|
384
|
-
outcome = true;
|
|
385
|
-
succeedSpinner(`Imported ${file}.`);
|
|
386
|
-
} catch (error) {
|
|
387
|
-
failSpinner(`Error importing ${file}.`);
|
|
388
|
-
printMessage(error, 'error');
|
|
389
|
-
}
|
|
390
|
-
debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);
|
|
391
|
-
return outcome;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* Import resource types from file
|
|
396
|
-
* @param {string} file file name
|
|
397
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
398
|
-
*/
|
|
399
|
-
export async function importResourceTypesFromFile(file) {
|
|
400
|
-
let outcome = false;
|
|
401
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);
|
|
402
|
-
showSpinner(`Importing ${file}...`);
|
|
403
|
-
try {
|
|
404
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
405
|
-
const fileData = JSON.parse(data);
|
|
406
|
-
await importResourceTypes(fileData);
|
|
407
|
-
outcome = true;
|
|
408
|
-
succeedSpinner(`Imported ${file}.`);
|
|
409
|
-
} catch (error) {
|
|
410
|
-
failSpinner(`Error importing ${file}.`);
|
|
411
|
-
printMessage(error, 'error');
|
|
412
|
-
}
|
|
413
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);
|
|
414
|
-
return outcome;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
/**
|
|
418
|
-
* Import resource types from files
|
|
419
|
-
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
420
|
-
*/
|
|
421
|
-
export async function importResourceTypesFromFiles() {
|
|
422
|
-
const errors = [];
|
|
423
|
-
try {
|
|
424
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);
|
|
425
|
-
const names = fs.readdirSync('.');
|
|
426
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.resourcetype.authz.json'));
|
|
427
|
-
createProgressBar(files.length, 'Importing resource types...');
|
|
428
|
-
let total = 0;
|
|
429
|
-
for (const file of files) {
|
|
430
|
-
try {
|
|
431
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
432
|
-
const fileData = JSON.parse(data);
|
|
433
|
-
const count = Object.keys(fileData.resourcetype).length;
|
|
434
|
-
total += count;
|
|
435
|
-
await importResourceTypes(fileData);
|
|
436
|
-
updateProgressBar(`Imported ${count} resource types from ${file}`);
|
|
437
|
-
} catch (error) {
|
|
438
|
-
errors.push(error);
|
|
439
|
-
updateProgressBar(`Error importing resource types from ${file}`);
|
|
440
|
-
printMessage(error, 'error');
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
stopProgressBar(`Finished importing ${total} resource types from ${files.length} files.`);
|
|
444
|
-
} catch (error) {
|
|
445
|
-
errors.push(error);
|
|
446
|
-
stopProgressBar(`Error importing resource types from files.`);
|
|
447
|
-
printMessage(error, 'error');
|
|
448
|
-
}
|
|
449
|
-
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);
|
|
450
|
-
return 0 === errors.length;
|
|
451
|
-
}
|
|
452
|
-
//# sourceMappingURL=ResourceTypeOps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getResourceTypes","getResourceType","getResourceTypeByName","exportResourceType","exportResourceTypeByName","exportResourceTypes","importResourceType","importResourceTypeByName","importFirstResourceType","importResourceTypes","authz","resourceType","listResourceTypes","long","outcome","resourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","error","_error$response","response","status","getRealm","_error$response2","_error$response2$data","data","describeResourceTypeByName","resourceTypeName","_error$response3","_error$response4","_error$response4$data","deleteResourceType","errors","length","errorMessages","map","_error$response5","_error$response5$data","join","deleteResourceTypeByName","_error$response6","_error$response6$data","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceTypeByNameToFile","exportResourceTypesToFile","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceTypeByNameFromFile","importFirstResourceTypeFromFile","importResourceTypesFromFile","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["../../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.helper.utils;\nconst {\n getResourceTypes,\n getResourceType,\n getResourceTypeByName,\n exportResourceType,\n exportResourceTypeByName,\n exportResourceTypes,\n importResourceType,\n importResourceTypeByName,\n importFirstResourceType,\n importResourceTypes,\n} = frodo.authz.resourceType;\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await getResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceType(resourceTypeUuid);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceTypeByName(resourceTypeName);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await getResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceType(resourceTypeUuid);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypeByName(resourceTypeName);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] = await getResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypeByName(resourceTypeName, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|