@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/PolicyOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","listPolicies","long","outcome","policies","authz","policy","getPolicies","sort","a","b","_id","localeCompare","err","message","listPoliciesByPolicySet","policySetId","getPoliciesByPolicySet","describePolicy","policyId","json","policySet","getPolicy","table","toString","deletePolicy","errors","error","length","errorMessages","map","join","deletePolicies","push","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPolicy","exportPoliciesToFile","helper","utils","getRealmName","getRealm","exportPolicies","exportPoliciesByPolicySetToFile","exportPoliciesByPolicySet","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importPolicy","importFirstPolicyFromFile","importFirstPolicy","importPoliciesFromFile","importPolicies","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { PolicySkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\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 type {\n PolicyExportOptions,\n PolicyImportOptions,\n PolicyExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await frodo.authz.policy.getPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await frodo.authz.policy.getPoliciesByPolicySet(\n policySetId\n );\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await frodo.authz.policy.getPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await frodo.authz.policy.deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await frodo.authz.policy.getPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await frodo.authz.policy.deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await frodo.authz.policy.getPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await frodo.authz.policy.deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.policy.exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.policy.exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(frodo.helper.utils.getRealmName(state.getRealm())) +\n titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.authz.policy.exportPoliciesByPolicySet(\n policySetId,\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await frodo.authz.policy.getPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface =\n await frodo.authz.policy.exportPolicy(policy._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] =\n await frodo.authz.policy.getPoliciesByPolicySet(policySetId);\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface =\n await frodo.authz.policy.exportPolicy(policy._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.policy.importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.policy.importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.authz.policy.importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await frodo.authz.policy.importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getRealmName","getTypedFilename","saveJsonToFile","titleCase","getFilePath","getWorkingDirectory","utils","readPolicies","readPoliciesByPolicySet","readPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","deletePolicy","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","table","push","description","active","toString","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","deletePolicyById","error","deletePolicies","errors","indicatorId","length","errorMessages","map","join","deletePoliciesByPolicySet","exportPolicyToFile","file","includeMeta","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport type {\n PolicyExportInterface,\n PolicyExportOptions,\n PolicyImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getRealmName,\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readPolicies,\n readPoliciesByPolicySet,\n readPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n deletePolicy,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicyById(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error deleting policy ${policyId}: ${error}`);\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await readPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await readPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${policyId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] = await readPolicies();\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n 'Exporting policy sets...'\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policy = await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy with id '${policy._id}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policy.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policies...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policies from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policies from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
package/esm/ops/PolicySetOps.js
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import { createObjectTable,
|
|
4
|
-
|
|
3
|
+
import { createObjectTable, createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
|
|
4
|
+
const {
|
|
5
|
+
getRealmName,
|
|
6
|
+
getTypedFilename,
|
|
7
|
+
saveJsonToFile,
|
|
8
|
+
titleCase,
|
|
9
|
+
getFilePath,
|
|
10
|
+
getWorkingDirectory
|
|
11
|
+
} = frodo.utils;
|
|
12
|
+
const {
|
|
13
|
+
readPoliciesByPolicySet,
|
|
14
|
+
deletePolicy
|
|
15
|
+
} = frodo.authz.policy;
|
|
16
|
+
const {
|
|
17
|
+
readPolicySets,
|
|
18
|
+
readPolicySet,
|
|
19
|
+
exportPolicySet,
|
|
20
|
+
exportPolicySets,
|
|
21
|
+
importPolicySet,
|
|
22
|
+
importFirstPolicySet,
|
|
23
|
+
importPolicySets,
|
|
24
|
+
deletePolicySet
|
|
25
|
+
} = frodo.authz.policySet;
|
|
26
|
+
|
|
5
27
|
/**
|
|
6
28
|
* List policy sets
|
|
7
29
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
@@ -9,7 +31,7 @@ import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImpo
|
|
|
9
31
|
export async function listPolicySets() {
|
|
10
32
|
let outcome = false;
|
|
11
33
|
try {
|
|
12
|
-
const policySets = await
|
|
34
|
+
const policySets = await readPolicySets();
|
|
13
35
|
policySets.sort((a, b) => a.name.localeCompare(b.name));
|
|
14
36
|
for (const policySet of policySets) {
|
|
15
37
|
printMessage(`${policySet.name}`, 'data');
|
|
@@ -30,7 +52,7 @@ export async function listPolicySets() {
|
|
|
30
52
|
*/
|
|
31
53
|
export async function describePolicySet(policySetId, json = false) {
|
|
32
54
|
let outcome = false;
|
|
33
|
-
const policySet = await
|
|
55
|
+
const policySet = await readPolicySet(policySetId);
|
|
34
56
|
outcome = true;
|
|
35
57
|
if (json) {
|
|
36
58
|
printMessage(policySet, 'data');
|
|
@@ -46,34 +68,33 @@ export async function describePolicySet(policySetId, json = false) {
|
|
|
46
68
|
* @param {string} policySetId policy set id/name
|
|
47
69
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
48
70
|
*/
|
|
49
|
-
export async function
|
|
71
|
+
export async function deletePolicySetById(policySetId) {
|
|
50
72
|
debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);
|
|
51
|
-
|
|
73
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Deleting ${policySetId}...`);
|
|
52
74
|
let outcome = false;
|
|
53
75
|
const errors = [];
|
|
54
|
-
const policies = await
|
|
76
|
+
const policies = await readPoliciesByPolicySet(policySetId);
|
|
55
77
|
for (const policy of policies) {
|
|
56
78
|
try {
|
|
57
79
|
debugMessage(`Deleting policy ${policy._id}`);
|
|
58
|
-
await
|
|
80
|
+
await deletePolicy(policy._id);
|
|
59
81
|
} catch (error) {
|
|
60
82
|
error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;
|
|
61
|
-
printMessage(error.message, 'error');
|
|
62
83
|
errors.push(error);
|
|
63
84
|
}
|
|
64
85
|
}
|
|
65
|
-
try {
|
|
66
|
-
debugMessage(`Deleting policy set ${policySetId}`);
|
|
67
|
-
await frodo.authz.policySet.deletePolicySet(policySetId);
|
|
68
|
-
} catch (error) {
|
|
69
|
-
printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');
|
|
70
|
-
}
|
|
71
86
|
if (errors.length) {
|
|
72
87
|
const errorMessages = errors.map(error => error.message).join('\n');
|
|
73
|
-
|
|
88
|
+
stopProgressIndicator(indicatorId, `Error deleting policies in policy set ${policySetId}: ${errorMessages}`, 'fail');
|
|
74
89
|
} else {
|
|
75
|
-
|
|
76
|
-
|
|
90
|
+
try {
|
|
91
|
+
debugMessage(`Deleting policy set ${policySetId}`);
|
|
92
|
+
await deletePolicySet(policySetId);
|
|
93
|
+
stopProgressIndicator(indicatorId, `Deleted ${policySetId}.`, 'success');
|
|
94
|
+
outcome = true;
|
|
95
|
+
} catch (error) {
|
|
96
|
+
stopProgressIndicator(indicatorId, `Error deleting policy set ${policySetId}: ${error}`, 'fail');
|
|
97
|
+
}
|
|
77
98
|
}
|
|
78
99
|
debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);
|
|
79
100
|
return outcome;
|
|
@@ -88,25 +109,27 @@ export async function deletePolicySets() {
|
|
|
88
109
|
let outcome = false;
|
|
89
110
|
const errors = [];
|
|
90
111
|
let policySets = [];
|
|
112
|
+
let indicatorId;
|
|
113
|
+
let indicatorId2;
|
|
91
114
|
try {
|
|
92
|
-
|
|
115
|
+
indicatorId = createProgressIndicator('indeterminate', 0, `Retrieving all policy sets...`);
|
|
93
116
|
try {
|
|
94
|
-
policySets = await
|
|
95
|
-
|
|
117
|
+
policySets = await readPolicySets();
|
|
118
|
+
stopProgressIndicator(indicatorId, `Found ${policySets.length} policy sets.`, 'success');
|
|
96
119
|
} catch (error) {
|
|
97
120
|
error.message = `Error retrieving all policy sets: ${error.message}`;
|
|
98
|
-
|
|
121
|
+
stopProgressIndicator(indicatorId, error.message, 'fail');
|
|
99
122
|
throw error;
|
|
100
123
|
}
|
|
101
|
-
if (policySets.length)
|
|
124
|
+
if (policySets.length) indicatorId2 = createProgressIndicator('determinate', policySets.length, `Deleting ${policySets.length} policy sets...`);
|
|
102
125
|
for (const policySet of policySets) {
|
|
103
126
|
const policySetId = policySet.name;
|
|
104
127
|
try {
|
|
105
|
-
const policies = await
|
|
128
|
+
const policies = await readPoliciesByPolicySet(policySetId);
|
|
106
129
|
for (const policy of policies) {
|
|
107
130
|
try {
|
|
108
131
|
debugMessage(`Deleting policy ${policy._id}`);
|
|
109
|
-
await
|
|
132
|
+
await deletePolicy(policy._id);
|
|
110
133
|
} catch (error) {
|
|
111
134
|
error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;
|
|
112
135
|
printMessage(error.message, 'error');
|
|
@@ -118,11 +141,11 @@ export async function deletePolicySets() {
|
|
|
118
141
|
}
|
|
119
142
|
try {
|
|
120
143
|
debugMessage(`Deleting policy set ${policySetId}`);
|
|
121
|
-
await
|
|
122
|
-
|
|
144
|
+
await deletePolicySet(policySetId);
|
|
145
|
+
updateProgressIndicator(indicatorId2, `Deleted ${policySetId}`);
|
|
123
146
|
} catch (error) {
|
|
124
147
|
error.message = `Error deleting policy set ${policySetId}: ${error}`;
|
|
125
|
-
|
|
148
|
+
updateProgressIndicator(indicatorId2, error.message);
|
|
126
149
|
errors.push(error);
|
|
127
150
|
}
|
|
128
151
|
}
|
|
@@ -132,9 +155,9 @@ export async function deletePolicySets() {
|
|
|
132
155
|
} finally {
|
|
133
156
|
if (errors.length) {
|
|
134
157
|
const errorMessages = errors.map(error => error.message).join('\n');
|
|
135
|
-
if (policySets.length)
|
|
158
|
+
if (policySets.length) stopProgressIndicator(indicatorId2, `Error deleting all policy sets: ${errorMessages}`);
|
|
136
159
|
} else {
|
|
137
|
-
if (policySets.length)
|
|
160
|
+
if (policySets.length) stopProgressIndicator(indicatorId2, `Deleted ${policySets.length} policy sets.`);
|
|
138
161
|
outcome = true;
|
|
139
162
|
}
|
|
140
163
|
}
|
|
@@ -146,28 +169,30 @@ export async function deletePolicySets() {
|
|
|
146
169
|
* Export policy set to file
|
|
147
170
|
* @param {string} policySetId policy set id/name
|
|
148
171
|
* @param {string} file file name
|
|
172
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
149
173
|
* @param {PolicySetExportOptions} options export options
|
|
150
174
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
151
175
|
*/
|
|
152
|
-
export async function exportPolicySetToFile(policySetId, file, options = {
|
|
176
|
+
export async function exportPolicySetToFile(policySetId, file, includeMeta = true, options = {
|
|
153
177
|
deps: true,
|
|
154
178
|
prereqs: false,
|
|
155
179
|
useStringArrays: true
|
|
156
180
|
}) {
|
|
157
181
|
let outcome = false;
|
|
158
182
|
debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);
|
|
159
|
-
|
|
183
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting ${policySetId}...`);
|
|
160
184
|
try {
|
|
161
185
|
let fileName = getTypedFilename(policySetId, 'policyset.authz');
|
|
162
186
|
if (file) {
|
|
163
187
|
fileName = file;
|
|
164
188
|
}
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
189
|
+
const filePath = getFilePath(fileName, true);
|
|
190
|
+
const exportData = await exportPolicySet(policySetId, options);
|
|
191
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
192
|
+
stopProgressIndicator(indicatorId, `Exported ${policySetId} to ${filePath}.`, 'success');
|
|
168
193
|
outcome = true;
|
|
169
194
|
} catch (error) {
|
|
170
|
-
|
|
195
|
+
stopProgressIndicator(indicatorId, `Error exporting ${policySetId}: ${error.message}`, 'fail');
|
|
171
196
|
}
|
|
172
197
|
debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);
|
|
173
198
|
return outcome;
|
|
@@ -176,28 +201,30 @@ export async function exportPolicySetToFile(policySetId, file, options = {
|
|
|
176
201
|
/**
|
|
177
202
|
* Export policy sets to file
|
|
178
203
|
* @param {string} file file name
|
|
204
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
179
205
|
* @param {PolicySetExportOptions} options export options
|
|
180
206
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
181
207
|
*/
|
|
182
|
-
export async function exportPolicySetsToFile(file, options = {
|
|
208
|
+
export async function exportPolicySetsToFile(file, includeMeta = true, options = {
|
|
183
209
|
deps: true,
|
|
184
210
|
prereqs: false,
|
|
185
211
|
useStringArrays: true
|
|
186
212
|
}) {
|
|
187
213
|
let outcome = false;
|
|
188
214
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);
|
|
189
|
-
|
|
215
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting all policy sets...`);
|
|
190
216
|
try {
|
|
191
|
-
let fileName = getTypedFilename(`all${titleCase(
|
|
217
|
+
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}PolicySets`, 'policyset.authz');
|
|
192
218
|
if (file) {
|
|
193
219
|
fileName = file;
|
|
194
220
|
}
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
221
|
+
const filePath = getFilePath(fileName, true);
|
|
222
|
+
const exportData = await exportPolicySets(options);
|
|
223
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
224
|
+
stopProgressIndicator(indicatorId, `Exported all policy sets to ${filePath}.`, 'success');
|
|
198
225
|
outcome = true;
|
|
199
226
|
} catch (error) {
|
|
200
|
-
|
|
227
|
+
stopProgressIndicator(indicatorId, `Error exporting policy sets: ${error.message}`, 'fail');
|
|
201
228
|
}
|
|
202
229
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);
|
|
203
230
|
return outcome;
|
|
@@ -205,34 +232,36 @@ export async function exportPolicySetsToFile(file, options = {
|
|
|
205
232
|
|
|
206
233
|
/**
|
|
207
234
|
* Export all policy sets to separate files
|
|
235
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
208
236
|
* @param {PolicySetExportOptions} options export options
|
|
209
237
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
210
238
|
*/
|
|
211
|
-
export async function exportPolicySetsToFiles(options = {
|
|
239
|
+
export async function exportPolicySetsToFiles(includeMeta = true, options = {
|
|
212
240
|
deps: true,
|
|
213
241
|
prereqs: false,
|
|
214
242
|
useStringArrays: true
|
|
215
243
|
}) {
|
|
216
244
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);
|
|
217
245
|
const errors = [];
|
|
246
|
+
let indicatorId;
|
|
218
247
|
try {
|
|
219
|
-
const policySets = await
|
|
220
|
-
|
|
248
|
+
const policySets = await readPolicySets();
|
|
249
|
+
indicatorId = createProgressIndicator('determinate', policySets.length, 'Exporting policy sets...');
|
|
221
250
|
for (const policySet of policySets) {
|
|
222
251
|
const file = getTypedFilename(policySet.name, 'policyset.authz');
|
|
223
252
|
try {
|
|
224
|
-
const exportData = await
|
|
225
|
-
saveJsonToFile(exportData, file);
|
|
226
|
-
|
|
253
|
+
const exportData = await exportPolicySet(policySet.name, options);
|
|
254
|
+
saveJsonToFile(exportData, getFilePath(file, true), includeMeta);
|
|
255
|
+
updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);
|
|
227
256
|
} catch (error) {
|
|
228
257
|
errors.push(error);
|
|
229
|
-
|
|
258
|
+
updateProgressIndicator(indicatorId, `Error exporting ${policySet.name}.`);
|
|
230
259
|
}
|
|
231
260
|
}
|
|
232
|
-
|
|
261
|
+
stopProgressIndicator(indicatorId, `Export complete.`);
|
|
233
262
|
} catch (error) {
|
|
234
263
|
errors.push(error);
|
|
235
|
-
|
|
264
|
+
stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);
|
|
236
265
|
}
|
|
237
266
|
debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);
|
|
238
267
|
return 0 === errors.length;
|
|
@@ -251,15 +280,15 @@ export async function importPolicySetFromFile(policySetId, file, options = {
|
|
|
251
280
|
}) {
|
|
252
281
|
let outcome = false;
|
|
253
282
|
debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);
|
|
254
|
-
|
|
283
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${policySetId}...`);
|
|
255
284
|
try {
|
|
256
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
285
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
257
286
|
const fileData = JSON.parse(data);
|
|
258
|
-
await
|
|
287
|
+
await importPolicySet(policySetId, fileData, options);
|
|
259
288
|
outcome = true;
|
|
260
|
-
|
|
289
|
+
stopProgressIndicator(indicatorId, `Imported ${policySetId}.`, 'success');
|
|
261
290
|
} catch (error) {
|
|
262
|
-
|
|
291
|
+
stopProgressIndicator(indicatorId, `Error importing ${policySetId}.`, 'fail');
|
|
263
292
|
printMessage(error, 'error');
|
|
264
293
|
}
|
|
265
294
|
debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);
|
|
@@ -278,15 +307,16 @@ export async function importFirstPolicySetFromFile(file, options = {
|
|
|
278
307
|
}) {
|
|
279
308
|
let outcome = false;
|
|
280
309
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);
|
|
281
|
-
|
|
310
|
+
const filePath = getFilePath(file);
|
|
311
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing first policy set from ${filePath}...`);
|
|
282
312
|
try {
|
|
283
|
-
const data = fs.readFileSync(
|
|
313
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
284
314
|
const fileData = JSON.parse(data);
|
|
285
|
-
await
|
|
315
|
+
const policySet = await importFirstPolicySet(fileData, options);
|
|
286
316
|
outcome = true;
|
|
287
|
-
|
|
317
|
+
stopProgressIndicator(indicatorId, `Imported first policy set with name '${policySet.name}' from ${filePath}.`, 'success');
|
|
288
318
|
} catch (error) {
|
|
289
|
-
|
|
319
|
+
stopProgressIndicator(indicatorId, `Error importing first policy set from ${filePath}.`, 'fail');
|
|
290
320
|
printMessage(error, 'error');
|
|
291
321
|
}
|
|
292
322
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);
|
|
@@ -305,15 +335,16 @@ export async function importPolicySetsFromFile(file, options = {
|
|
|
305
335
|
}) {
|
|
306
336
|
let outcome = false;
|
|
307
337
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);
|
|
308
|
-
|
|
338
|
+
const filePath = getFilePath(file);
|
|
339
|
+
const indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${filePath}...`);
|
|
309
340
|
try {
|
|
310
|
-
const data = fs.readFileSync(
|
|
341
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
311
342
|
const fileData = JSON.parse(data);
|
|
312
|
-
await
|
|
343
|
+
await importPolicySets(fileData, options);
|
|
313
344
|
outcome = true;
|
|
314
|
-
|
|
345
|
+
stopProgressIndicator(indicatorId, `Imported ${filePath}.`, 'success');
|
|
315
346
|
} catch (error) {
|
|
316
|
-
|
|
347
|
+
stopProgressIndicator(indicatorId, `Error importing ${filePath}.`, 'fail');
|
|
317
348
|
printMessage(error, 'error');
|
|
318
349
|
}
|
|
319
350
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);
|
|
@@ -330,11 +361,12 @@ export async function importPolicySetsFromFiles(options = {
|
|
|
330
361
|
prereqs: false
|
|
331
362
|
}) {
|
|
332
363
|
const errors = [];
|
|
364
|
+
let indicatorId;
|
|
333
365
|
try {
|
|
334
366
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);
|
|
335
|
-
const names = fs.readdirSync(
|
|
336
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json'));
|
|
337
|
-
|
|
367
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
368
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json')).map(name => getFilePath(name));
|
|
369
|
+
indicatorId = createProgressIndicator('determinate', files.length, 'Importing policy sets...');
|
|
338
370
|
let total = 0;
|
|
339
371
|
for (const file of files) {
|
|
340
372
|
try {
|
|
@@ -342,21 +374,21 @@ export async function importPolicySetsFromFiles(options = {
|
|
|
342
374
|
const fileData = JSON.parse(data);
|
|
343
375
|
const count = Object.keys(fileData.policyset).length;
|
|
344
376
|
total += count;
|
|
345
|
-
await
|
|
346
|
-
|
|
377
|
+
await importPolicySets(fileData, options);
|
|
378
|
+
updateProgressIndicator(indicatorId, `Imported ${count} policy sets from ${file}`);
|
|
347
379
|
} catch (error) {
|
|
348
380
|
errors.push(error);
|
|
349
|
-
|
|
381
|
+
updateProgressIndicator(indicatorId, `Error importing policy sets from ${file}`);
|
|
350
382
|
printMessage(error, 'error');
|
|
351
383
|
}
|
|
352
384
|
}
|
|
353
|
-
|
|
385
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} policy sets from ${files.length} files.`);
|
|
354
386
|
} catch (error) {
|
|
355
387
|
errors.push(error);
|
|
356
|
-
|
|
388
|
+
stopProgressIndicator(indicatorId, `Error importing policy sets from files.`);
|
|
357
389
|
printMessage(error, 'error');
|
|
358
390
|
}
|
|
359
391
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);
|
|
360
392
|
return 0 === errors.length;
|
|
361
393
|
}
|
|
362
|
-
//# sourceMappingURL=PolicySetOps.js.map
|
|
394
|
+
//# sourceMappingURL=PolicySetOps.js.map
|