@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
|
@@ -1,19 +1,33 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { createProgressIndicator, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
|
|
4
|
+
const {
|
|
5
|
+
getTypedFilename,
|
|
6
|
+
titleCase,
|
|
7
|
+
saveJsonToFile,
|
|
8
|
+
getFilePath,
|
|
9
|
+
getWorkingDirectory
|
|
10
|
+
} = frodo.utils;
|
|
11
|
+
const {
|
|
12
|
+
readOAuth2Clients,
|
|
13
|
+
exportOAuth2Client,
|
|
14
|
+
exportOAuth2Clients,
|
|
15
|
+
importOAuth2Client,
|
|
16
|
+
importFirstOAuth2Client,
|
|
17
|
+
importOAuth2Clients
|
|
18
|
+
} = frodo.oauth2oidc.client;
|
|
19
|
+
|
|
5
20
|
/**
|
|
6
21
|
* List OAuth2 clients
|
|
7
22
|
*/
|
|
8
23
|
export async function listOAuth2Clients(long = false) {
|
|
9
24
|
try {
|
|
10
|
-
const clients = await
|
|
25
|
+
const clients = await readOAuth2Clients();
|
|
11
26
|
clients.sort((a, b) => a._id.localeCompare(b._id));
|
|
12
27
|
if (long) {
|
|
13
28
|
const table = createTable(['Client Id', 'Status', 'Client Type', 'Grant Types', 'Scopes', 'Redirect URIs'
|
|
14
29
|
// 'Description',
|
|
15
30
|
]);
|
|
16
|
-
|
|
17
31
|
const grantTypesMap = {
|
|
18
32
|
authorization_code: 'Authz Code',
|
|
19
33
|
client_credentials: 'Client Creds',
|
|
@@ -28,11 +42,10 @@ export async function listOAuth2Clients(long = false) {
|
|
|
28
42
|
'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer'
|
|
29
43
|
};
|
|
30
44
|
clients.forEach(client => {
|
|
31
|
-
table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status
|
|
45
|
+
table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status['brightRed'], client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
|
|
32
46
|
// wordwrap(client.description, 30),
|
|
33
47
|
]);
|
|
34
48
|
});
|
|
35
|
-
|
|
36
49
|
printMessage(table.toString(), 'data');
|
|
37
50
|
} else {
|
|
38
51
|
clients.forEach(client => {
|
|
@@ -40,7 +53,7 @@ export async function listOAuth2Clients(long = false) {
|
|
|
40
53
|
});
|
|
41
54
|
}
|
|
42
55
|
} catch (error) {
|
|
43
|
-
printMessage(`Error listing
|
|
56
|
+
printMessage(`Error listing oauth2 clients - ${error}`, 'error');
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
|
|
@@ -48,10 +61,11 @@ export async function listOAuth2Clients(long = false) {
|
|
|
48
61
|
* Export OAuth2 client to file
|
|
49
62
|
* @param {string} clientId client id
|
|
50
63
|
* @param {string} file file name
|
|
64
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
51
65
|
* @param {OAuth2ClientExportOptions} options export options
|
|
52
66
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
53
67
|
*/
|
|
54
|
-
export async function exportOAuth2ClientToFile(clientId, file, options = {
|
|
68
|
+
export async function exportOAuth2ClientToFile(clientId, file, includeMeta = true, options = {
|
|
55
69
|
useStringArrays: true,
|
|
56
70
|
deps: true
|
|
57
71
|
}) {
|
|
@@ -59,13 +73,14 @@ export async function exportOAuth2ClientToFile(clientId, file, options = {
|
|
|
59
73
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);
|
|
60
74
|
showSpinner(`Exporting ${clientId}...`);
|
|
61
75
|
try {
|
|
62
|
-
let fileName =
|
|
76
|
+
let fileName = getTypedFilename(clientId, 'oauth2.app');
|
|
63
77
|
if (file) {
|
|
64
78
|
fileName = file;
|
|
65
79
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
80
|
+
const filePath = getFilePath(fileName, true);
|
|
81
|
+
const exportData = await exportOAuth2Client(clientId, options);
|
|
82
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
83
|
+
succeedSpinner(`Exported ${clientId} to ${filePath}.`);
|
|
69
84
|
outcome = true;
|
|
70
85
|
} catch (error) {
|
|
71
86
|
failSpinner(`Error exporting ${clientId}: ${error.message}`);
|
|
@@ -77,10 +92,11 @@ export async function exportOAuth2ClientToFile(clientId, file, options = {
|
|
|
77
92
|
/**
|
|
78
93
|
* Export all OAuth2 clients to file
|
|
79
94
|
* @param {string} file file name
|
|
95
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
80
96
|
* @param {OAuth2ClientExportOptions} options export options
|
|
81
97
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
82
98
|
*/
|
|
83
|
-
export async function exportOAuth2ClientsToFile(file, options = {
|
|
99
|
+
export async function exportOAuth2ClientsToFile(file, includeMeta = true, options = {
|
|
84
100
|
useStringArrays: true,
|
|
85
101
|
deps: true
|
|
86
102
|
}) {
|
|
@@ -88,13 +104,14 @@ export async function exportOAuth2ClientsToFile(file, options = {
|
|
|
88
104
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
|
|
89
105
|
showSpinner(`Exporting all clients...`);
|
|
90
106
|
try {
|
|
91
|
-
let fileName =
|
|
107
|
+
let fileName = getTypedFilename(`all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
|
|
92
108
|
if (file) {
|
|
93
109
|
fileName = file;
|
|
94
110
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
111
|
+
const filePath = getFilePath(fileName, true);
|
|
112
|
+
const exportData = await exportOAuth2Clients(options);
|
|
113
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
114
|
+
succeedSpinner(`Exported all clients to ${filePath}.`);
|
|
98
115
|
outcome = true;
|
|
99
116
|
} catch (error) {
|
|
100
117
|
failSpinner(`Error exporting all clients`);
|
|
@@ -106,33 +123,35 @@ export async function exportOAuth2ClientsToFile(file, options = {
|
|
|
106
123
|
|
|
107
124
|
/**
|
|
108
125
|
* Export all OAuth2 clients to separate files
|
|
126
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
109
127
|
* @param {OAuth2ClientExportOptions} options export options
|
|
110
128
|
* @returns {Promise<boolean>} true if successful, false otherwise
|
|
111
129
|
*/
|
|
112
|
-
export async function exportOAuth2ClientsToFiles(options = {
|
|
130
|
+
export async function exportOAuth2ClientsToFiles(includeMeta = true, options = {
|
|
113
131
|
useStringArrays: true,
|
|
114
132
|
deps: true
|
|
115
133
|
}) {
|
|
116
134
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);
|
|
117
135
|
const errors = [];
|
|
136
|
+
let indicatorId;
|
|
118
137
|
try {
|
|
119
|
-
const clients = await
|
|
120
|
-
|
|
138
|
+
const clients = await readOAuth2Clients();
|
|
139
|
+
indicatorId = createProgressIndicator('determinate', clients.length, 'Exporting clients...');
|
|
121
140
|
for (const client of clients) {
|
|
122
|
-
const file =
|
|
141
|
+
const file = getTypedFilename(client._id, 'oauth2.app');
|
|
123
142
|
try {
|
|
124
|
-
const exportData = await
|
|
125
|
-
saveJsonToFile(exportData, file);
|
|
126
|
-
|
|
143
|
+
const exportData = await exportOAuth2Client(client._id, options);
|
|
144
|
+
saveJsonToFile(exportData, getFilePath(file, true), includeMeta);
|
|
145
|
+
updateProgressIndicator(indicatorId, `Exported ${client._id}.`);
|
|
127
146
|
} catch (error) {
|
|
128
147
|
errors.push(error);
|
|
129
|
-
|
|
148
|
+
updateProgressIndicator(indicatorId, `Error exporting ${client._id}.`);
|
|
130
149
|
}
|
|
131
150
|
}
|
|
132
|
-
|
|
151
|
+
stopProgressIndicator(indicatorId, `Export complete.`);
|
|
133
152
|
} catch (error) {
|
|
134
153
|
errors.push(error);
|
|
135
|
-
|
|
154
|
+
stopProgressIndicator(indicatorId, `Error exporting client(s) to file(s)`);
|
|
136
155
|
}
|
|
137
156
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);
|
|
138
157
|
return 0 === errors.length;
|
|
@@ -152,9 +171,9 @@ export async function importOAuth2ClientFromFile(clientId, file, options = {
|
|
|
152
171
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);
|
|
153
172
|
showSpinner(`Importing ${clientId}...`);
|
|
154
173
|
try {
|
|
155
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
174
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
156
175
|
const fileData = JSON.parse(data);
|
|
157
|
-
await
|
|
176
|
+
await importOAuth2Client(clientId, fileData, options);
|
|
158
177
|
outcome = true;
|
|
159
178
|
succeedSpinner(`Imported ${clientId}.`);
|
|
160
179
|
} catch (error) {
|
|
@@ -176,15 +195,16 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
|
|
|
176
195
|
}) {
|
|
177
196
|
let outcome = false;
|
|
178
197
|
debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);
|
|
179
|
-
|
|
198
|
+
const filePath = getFilePath(file);
|
|
199
|
+
showSpinner(`Importing ${filePath}...`);
|
|
180
200
|
try {
|
|
181
|
-
const data = fs.readFileSync(
|
|
201
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
182
202
|
const fileData = JSON.parse(data);
|
|
183
|
-
await
|
|
203
|
+
await importFirstOAuth2Client(fileData, options);
|
|
184
204
|
outcome = true;
|
|
185
|
-
succeedSpinner(`Imported ${
|
|
205
|
+
succeedSpinner(`Imported ${filePath}.`);
|
|
186
206
|
} catch (error) {
|
|
187
|
-
failSpinner(`Error importing ${
|
|
207
|
+
failSpinner(`Error importing ${filePath}.`);
|
|
188
208
|
printMessage(error, 'error');
|
|
189
209
|
}
|
|
190
210
|
debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);
|
|
@@ -202,15 +222,16 @@ export async function importOAuth2ClientsFromFile(file, options = {
|
|
|
202
222
|
}) {
|
|
203
223
|
let outcome = false;
|
|
204
224
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);
|
|
205
|
-
|
|
225
|
+
const filePath = getFilePath(file);
|
|
226
|
+
showSpinner(`Importing ${filePath}...`);
|
|
206
227
|
try {
|
|
207
|
-
const data = fs.readFileSync(
|
|
208
|
-
const
|
|
209
|
-
await
|
|
228
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
229
|
+
const clientData = JSON.parse(data);
|
|
230
|
+
await importOAuth2Clients(clientData, options);
|
|
210
231
|
outcome = true;
|
|
211
|
-
succeedSpinner(`Imported ${
|
|
232
|
+
succeedSpinner(`Imported ${filePath}.`);
|
|
212
233
|
} catch (error) {
|
|
213
|
-
failSpinner(`Error importing ${
|
|
234
|
+
failSpinner(`Error importing ${filePath}.`);
|
|
214
235
|
printMessage(error, 'error');
|
|
215
236
|
}
|
|
216
237
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);
|
|
@@ -226,11 +247,12 @@ export async function importOAuth2ClientsFromFiles(options = {
|
|
|
226
247
|
deps: true
|
|
227
248
|
}) {
|
|
228
249
|
const errors = [];
|
|
250
|
+
let indicatorId;
|
|
229
251
|
try {
|
|
230
252
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);
|
|
231
|
-
const names = fs.readdirSync(
|
|
232
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.oauth2.app.json'));
|
|
233
|
-
|
|
253
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
254
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.oauth2.app.json')).map(name => getFilePath(name));
|
|
255
|
+
indicatorId = createProgressIndicator('determinate', files.length, 'Importing clients...');
|
|
234
256
|
let total = 0;
|
|
235
257
|
for (const file of files) {
|
|
236
258
|
try {
|
|
@@ -238,21 +260,21 @@ export async function importOAuth2ClientsFromFiles(options = {
|
|
|
238
260
|
const fileData = JSON.parse(data);
|
|
239
261
|
const count = Object.keys(fileData.application).length;
|
|
240
262
|
total += count;
|
|
241
|
-
await
|
|
242
|
-
|
|
263
|
+
await importOAuth2Clients(fileData, options);
|
|
264
|
+
updateProgressIndicator(indicatorId, `Imported ${count} client(s) from ${file}`);
|
|
243
265
|
} catch (error) {
|
|
244
266
|
errors.push(error);
|
|
245
|
-
|
|
267
|
+
updateProgressIndicator(indicatorId, `Error importing client(s) from ${file}`);
|
|
246
268
|
printMessage(error, 'error');
|
|
247
269
|
}
|
|
248
270
|
}
|
|
249
|
-
|
|
271
|
+
stopProgressIndicator(indicatorId, `Finished importing ${total} client(s) from ${files.length} file(s).`);
|
|
250
272
|
} catch (error) {
|
|
251
273
|
errors.push(error);
|
|
252
|
-
|
|
274
|
+
stopProgressIndicator(indicatorId, `Error importing client(s) from file(s).`);
|
|
253
275
|
printMessage(error, 'error');
|
|
254
276
|
}
|
|
255
277
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);
|
|
256
278
|
return 0 === errors.length;
|
|
257
279
|
}
|
|
258
|
-
//# sourceMappingURL=OAuth2ClientOps.js.map
|
|
280
|
+
//# sourceMappingURL=OAuth2ClientOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","listOAuth2Clients","long","clients","oauth2oidc","client","getOAuth2Clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","brightRed","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","utils","impex","getTypedFilename","exportData","exportOAuth2Client","message","exportOAuth2ClientsToFile","titleCase","helper","getRealmName","getRealm","exportOAuth2Clients","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importOAuth2Client","importFirstOAuth2ClientFromFile","importFirstOAuth2Client","importOAuth2ClientsFromFile","applicationData","importOAuth2Clients","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : client.coreOAuth2ClientConfig.status.brightRed,\n client.coreOAuth2ClientConfig.clientType,\n client.advancedOAuth2ClientConfig.grantTypes\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n client.coreOAuth2ClientConfig.scopes.join('\\n'),\n client.coreOAuth2ClientConfig.redirectionUris.join('\\n'),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(\n clientId,\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Clients(\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = frodo.utils.impex.getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await frodo.oauth2oidc.client.exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Client(\n clientId,\n fileData,\n options\n );\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importFirstOAuth2Client(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.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Clients(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await frodo.oauth2oidc.client.importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","titleCase","saveJsonToFile","getFilePath","getWorkingDirectory","utils","readOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","includeMeta","options","useStringArrays","deps","outcome","fileName","filePath","exportData","message","exportOAuth2ClientsToFile","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","indicatorId","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","clientData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Readable } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport fs from 'fs';\n\nimport {\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 getTypedFilename,\n titleCase,\n saveJsonToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await readOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as Readable<string[]>)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as Readable<string[]>).join(\n '\\n'\n ),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing oauth2 clients - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${clientId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all clients to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n includeMeta = true,\n options: OAuth2ClientExportOptions = {\n useStringArrays: true,\n deps: true,\n }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const clients = await readOAuth2Clients();\n indicatorId = createProgressIndicator(\n 'determinate',\n clients.length,\n 'Exporting clients...'\n );\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${client._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: 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 importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const clientData = JSON.parse(data);\n await importOAuth2Clients(clientData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.oauth2.app.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing clients...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} client(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing client(s) from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing client(s) from file(s).`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
import { frodo } from '@rockcarver/frodo-lib';
|
|
2
2
|
import { printMessage } from '../utils/Console';
|
|
3
|
+
const {
|
|
4
|
+
queryManagedObjects
|
|
5
|
+
} = frodo.idm.managed;
|
|
6
|
+
const {
|
|
7
|
+
getRealmManagedOrganization
|
|
8
|
+
} = frodo.idm.organization;
|
|
3
9
|
|
|
4
10
|
// unfinished work
|
|
5
11
|
export async function listOrganizationsTopDown() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
remainingPagedResults: -1
|
|
14
|
-
};
|
|
15
|
-
do {
|
|
16
|
-
try {
|
|
17
|
-
// eslint-disable-next-line no-await-in-loop
|
|
18
|
-
result = await frodo.idm.config.queryAllManagedObjectsByType(frodo.idm.organization.getRealmManagedOrganization(), ['name', 'parent/*/name', 'children/*/name'], result.pagedResultsCookie);
|
|
19
|
-
} catch (queryAllManagedObjectsByTypeError) {
|
|
20
|
-
printMessage(queryAllManagedObjectsByTypeError, 'error');
|
|
21
|
-
printMessage(`Error querying ${frodo.idm.organization.getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
|
|
22
|
-
}
|
|
23
|
-
orgs.concat(result.result);
|
|
24
|
-
printMessage('.', 'text', false);
|
|
25
|
-
} while (result.pagedResultsCookie);
|
|
26
|
-
return orgs;
|
|
12
|
+
try {
|
|
13
|
+
const orgs = await queryManagedObjects(getRealmManagedOrganization(), 'true', ['name', 'parent/*/name', 'children/*/name']);
|
|
14
|
+
return orgs;
|
|
15
|
+
} catch (queryAllManagedObjectsByTypeError) {
|
|
16
|
+
printMessage(queryAllManagedObjectsByTypeError, 'error');
|
|
17
|
+
printMessage(`Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
|
|
18
|
+
}
|
|
27
19
|
}
|
|
28
|
-
//# sourceMappingURL=OrganizationOps.js.map
|
|
20
|
+
//# sourceMappingURL=OrganizationOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","
|
|
1
|
+
{"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","queryManagedObjects","idm","managed","getRealmManagedOrganization","organization","listOrganizationsTopDown","orgs","queryAllManagedObjectsByTypeError"],"sources":["../../src/ops/OrganizationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\n\nimport { printMessage } from '../utils/Console';\n\nconst { queryManagedObjects } = frodo.idm.managed;\nconst { getRealmManagedOrganization } = frodo.idm.organization;\n\n// unfinished work\nexport async function listOrganizationsTopDown() {\n try {\n const orgs = await queryManagedObjects(\n getRealmManagedOrganization(),\n 'true',\n ['name', 'parent/*/name', 'children/*/name']\n );\n return orgs;\n } catch (queryAllManagedObjectsByTypeError) {\n printMessage(queryAllManagedObjectsByTypeError, 'error');\n printMessage(\n `Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`,\n 'error'\n );\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,MAAM;EAAEC;AAAoB,CAAC,GAAGF,KAAK,CAACG,GAAG,CAACC,OAAO;AACjD,MAAM;EAAEC;AAA4B,CAAC,GAAGL,KAAK,CAACG,GAAG,CAACG,YAAY;;AAE9D;AACA,OAAO,eAAeC,wBAAwBA,CAAA,EAAG;EAC/C,IAAI;IACF,MAAMC,IAAI,GAAG,MAAMN,mBAAmB,CACpCG,2BAA2B,CAAC,CAAC,EAC7B,MAAM,EACN,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAC7C,CAAC;IACD,OAAOG,IAAI;EACb,CAAC,CAAC,OAAOC,iCAAiC,EAAE;IAC1CR,YAAY,CAACQ,iCAAiC,EAAE,OAAO,CAAC;IACxDR,YAAY,CACT,kBAAiBI,2BAA2B,CAAC,CAAE,aAAYI,iCAAkC,EAAC,EAC/F,OACF,CAAC;EACH;AACF"}
|