@rockcarver/frodo-cli 2.0.0-8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/launch.json +1 -0
- package/CHANGELOG.md +1180 -715
- package/README.md +2 -2
- package/dist/app.cjs +187758 -0
- package/dist/app.cjs.map +1 -0
- package/dist/app.d.cts +2 -0
- package/dist/chunk-MPPKDFVI.cjs +56 -0
- package/dist/chunk-MPPKDFVI.cjs.map +1 -0
- package/dist/launch.cjs +27 -0
- package/dist/launch.cjs.map +1 -0
- package/dist/launch.d.cts +1 -0
- package/dist/loader.cjs +836 -0
- package/dist/loader.cjs.map +1 -0
- package/dist/loader.d.cts +3 -0
- package/global-jest-setup.js +5 -0
- package/package.json +68 -57
- package/tsup.config.ts +40 -0
- package/esm/app.js +0 -61
- package/esm/app.js.map +0 -1
- package/esm/cli/FrodoCommand.js +0 -147
- package/esm/cli/FrodoCommand.js.map +0 -1
- package/esm/cli/_template/something-delete.js +0 -22
- package/esm/cli/_template/something-delete.js.map +0 -1
- package/esm/cli/_template/something-describe.js +0 -22
- package/esm/cli/_template/something-describe.js.map +0 -1
- package/esm/cli/_template/something-else-delete.js +0 -22
- package/esm/cli/_template/something-else-delete.js.map +0 -1
- package/esm/cli/_template/something-else-describe.js +0 -22
- package/esm/cli/_template/something-else-describe.js.map +0 -1
- package/esm/cli/_template/something-else-export.js +0 -22
- package/esm/cli/_template/something-else-export.js.map +0 -1
- package/esm/cli/_template/something-else-import.js +0 -22
- package/esm/cli/_template/something-else-import.js.map +0 -1
- package/esm/cli/_template/something-else-list.js +0 -22
- package/esm/cli/_template/something-else-list.js.map +0 -1
- package/esm/cli/_template/something-else.js +0 -10
- package/esm/cli/_template/something-else.js.map +0 -1
- package/esm/cli/_template/something-export.js +0 -22
- package/esm/cli/_template/something-export.js.map +0 -1
- package/esm/cli/_template/something-import.js +0 -22
- package/esm/cli/_template/something-import.js.map +0 -1
- package/esm/cli/_template/something-list.js +0 -22
- package/esm/cli/_template/something-list.js.map +0 -1
- package/esm/cli/_template/something-other-delete.js +0 -22
- package/esm/cli/_template/something-other-delete.js.map +0 -1
- package/esm/cli/_template/something-other-describe.js +0 -22
- package/esm/cli/_template/something-other-describe.js.map +0 -1
- package/esm/cli/_template/something-other-export.js +0 -22
- package/esm/cli/_template/something-other-export.js.map +0 -1
- package/esm/cli/_template/something-other-import.js +0 -22
- package/esm/cli/_template/something-other-import.js.map +0 -1
- package/esm/cli/_template/something-other-list.js +0 -22
- package/esm/cli/_template/something-other-list.js.map +0 -1
- package/esm/cli/_template/something-other.js +0 -10
- package/esm/cli/_template/something-other.js.map +0 -1
- package/esm/cli/_template/something.js +0 -16
- package/esm/cli/_template/something.js.map +0 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +0 -27
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +0 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +0 -86
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-federation-export.js +0 -45
- package/esm/cli/admin/admin-federation-export.js.map +0 -1
- package/esm/cli/admin/admin-federation-import.js +0 -49
- package/esm/cli/admin/admin-federation-import.js.map +0 -1
- package/esm/cli/admin/admin-federation-list.js +0 -29
- package/esm/cli/admin/admin-federation-list.js.map +0 -1
- package/esm/cli/admin/admin-federation.js +0 -13
- package/esm/cli/admin/admin-federation.js.map +0 -1
- package/esm/cli/admin/admin-get-access-token.js +0 -28
- package/esm/cli/admin/admin-get-access-token.js.map +0 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +0 -28
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +0 -28
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +0 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +0 -30
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +0 -30
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +0 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +0 -31
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +0 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +0 -27
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +0 -1
- package/esm/cli/admin/admin-repair-org-model.js +0 -28
- package/esm/cli/admin/admin-repair-org-model.js.map +0 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +0 -28
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +0 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +0 -28
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +0 -1
- package/esm/cli/admin/admin.js +0 -22
- package/esm/cli/admin/admin.js.map +0 -1
- package/esm/cli/agent/agent-delete.js +0 -52
- package/esm/cli/agent/agent-delete.js.map +0 -1
- package/esm/cli/agent/agent-describe.js +0 -22
- package/esm/cli/agent/agent-describe.js.map +0 -1
- package/esm/cli/agent/agent-export.js +0 -42
- package/esm/cli/agent/agent-export.js.map +0 -1
- package/esm/cli/agent/agent-gateway-delete.js +0 -52
- package/esm/cli/agent/agent-gateway-delete.js.map +0 -1
- package/esm/cli/agent/agent-gateway-describe.js +0 -22
- package/esm/cli/agent/agent-gateway-describe.js.map +0 -1
- package/esm/cli/agent/agent-gateway-export.js +0 -42
- package/esm/cli/agent/agent-gateway-export.js.map +0 -1
- package/esm/cli/agent/agent-gateway-import.js +0 -47
- package/esm/cli/agent/agent-gateway-import.js.map +0 -1
- package/esm/cli/agent/agent-gateway-list.js +0 -23
- package/esm/cli/agent/agent-gateway-list.js.map +0 -1
- package/esm/cli/agent/agent-gateway.js +0 -10
- package/esm/cli/agent/agent-gateway.js.map +0 -1
- package/esm/cli/agent/agent-import.js +0 -47
- package/esm/cli/agent/agent-import.js.map +0 -1
- package/esm/cli/agent/agent-java-delete.js +0 -52
- package/esm/cli/agent/agent-java-delete.js.map +0 -1
- package/esm/cli/agent/agent-java-describe.js +0 -22
- package/esm/cli/agent/agent-java-describe.js.map +0 -1
- package/esm/cli/agent/agent-java-export.js +0 -42
- package/esm/cli/agent/agent-java-export.js.map +0 -1
- package/esm/cli/agent/agent-java-import.js +0 -47
- package/esm/cli/agent/agent-java-import.js.map +0 -1
- package/esm/cli/agent/agent-java-list.js +0 -23
- package/esm/cli/agent/agent-java-list.js.map +0 -1
- package/esm/cli/agent/agent-java.js +0 -10
- package/esm/cli/agent/agent-java.js.map +0 -1
- package/esm/cli/agent/agent-list.js +0 -23
- package/esm/cli/agent/agent-list.js.map +0 -1
- package/esm/cli/agent/agent-web-delete.js +0 -52
- package/esm/cli/agent/agent-web-delete.js.map +0 -1
- package/esm/cli/agent/agent-web-describe.js +0 -22
- package/esm/cli/agent/agent-web-describe.js.map +0 -1
- package/esm/cli/agent/agent-web-export.js +0 -42
- package/esm/cli/agent/agent-web-export.js.map +0 -1
- package/esm/cli/agent/agent-web-import.js +0 -47
- package/esm/cli/agent/agent-web-import.js.map +0 -1
- package/esm/cli/agent/agent-web-list.js +0 -23
- package/esm/cli/agent/agent-web-list.js.map +0 -1
- package/esm/cli/agent/agent-web.js +0 -10
- package/esm/cli/agent/agent-web.js.map +0 -1
- package/esm/cli/agent/agent.js +0 -17
- package/esm/cli/agent/agent.js.map +0 -1
- package/esm/cli/app/app-delete.js +0 -22
- package/esm/cli/app/app-delete.js.map +0 -1
- package/esm/cli/app/app-describe.js +0 -22
- package/esm/cli/app/app-describe.js.map +0 -1
- package/esm/cli/app/app-export.js +0 -52
- package/esm/cli/app/app-export.js.map +0 -1
- package/esm/cli/app/app-import.js +0 -57
- package/esm/cli/app/app-import.js.map +0 -1
- package/esm/cli/app/app-list.js +0 -25
- package/esm/cli/app/app-list.js.map +0 -1
- package/esm/cli/app/app.js +0 -21
- package/esm/cli/app/app.js.map +0 -1
- package/esm/cli/authz/authz-policy-delete.js +0 -43
- package/esm/cli/authz/authz-policy-delete.js.map +0 -1
- package/esm/cli/authz/authz-policy-describe.js +0 -30
- package/esm/cli/authz/authz-policy-describe.js.map +0 -1
- package/esm/cli/authz/authz-policy-export.js +0 -75
- package/esm/cli/authz/authz-policy-export.js.map +0 -1
- package/esm/cli/authz/authz-policy-import.js +0 -65
- package/esm/cli/authz/authz-policy-import.js.map +0 -1
- package/esm/cli/authz/authz-policy-list.js +0 -37
- package/esm/cli/authz/authz-policy-list.js.map +0 -1
- package/esm/cli/authz/authz-policy.js +0 -10
- package/esm/cli/authz/authz-policy.js.map +0 -1
- package/esm/cli/authz/authz-set-delete.js +0 -37
- package/esm/cli/authz/authz-set-delete.js.map +0 -1
- package/esm/cli/authz/authz-set-describe.js +0 -30
- package/esm/cli/authz/authz-set-describe.js.map +0 -1
- package/esm/cli/authz/authz-set-export.js +0 -55
- package/esm/cli/authz/authz-set-export.js.map +0 -1
- package/esm/cli/authz/authz-set-import.js +0 -61
- package/esm/cli/authz/authz-set-import.js.map +0 -1
- package/esm/cli/authz/authz-set-list.js +0 -25
- package/esm/cli/authz/authz-set-list.js.map +0 -1
- package/esm/cli/authz/authz-set.js +0 -10
- package/esm/cli/authz/authz-set.js.map +0 -1
- package/esm/cli/authz/authz-type-delete.js +0 -43
- package/esm/cli/authz/authz-type-delete.js.map +0 -1
- package/esm/cli/authz/authz-type-describe.js +0 -34
- package/esm/cli/authz/authz-type-describe.js.map +0 -1
- package/esm/cli/authz/authz-type-export.js +0 -49
- package/esm/cli/authz/authz-type-export.js.map +0 -1
- package/esm/cli/authz/authz-type-import.js +0 -55
- package/esm/cli/authz/authz-type-import.js.map +0 -1
- package/esm/cli/authz/authz-type-list.js +0 -26
- package/esm/cli/authz/authz-type-list.js.map +0 -1
- package/esm/cli/authz/authz-type.js +0 -10
- package/esm/cli/authz/authz-type.js.map +0 -1
- package/esm/cli/authz/authz.js +0 -12
- package/esm/cli/authz/authz.js.map +0 -1
- package/esm/cli/conn/conn-delete.js +0 -14
- package/esm/cli/conn/conn-delete.js.map +0 -1
- package/esm/cli/conn/conn-describe.js +0 -15
- package/esm/cli/conn/conn-describe.js.map +0 -1
- package/esm/cli/conn/conn-list.js +0 -15
- package/esm/cli/conn/conn-list.js.map +0 -1
- package/esm/cli/conn/conn-save.js +0 -107
- package/esm/cli/conn/conn-save.js.map +0 -1
- package/esm/cli/conn/conn.js +0 -15
- package/esm/cli/conn/conn.js.map +0 -1
- package/esm/cli/email/email-template-export.js +0 -40
- package/esm/cli/email/email-template-export.js.map +0 -1
- package/esm/cli/email/email-template-import.js +0 -45
- package/esm/cli/email/email-template-import.js.map +0 -1
- package/esm/cli/email/email-template-list.js +0 -25
- package/esm/cli/email/email-template-list.js.map +0 -1
- package/esm/cli/email/email-template.js +0 -8
- package/esm/cli/email/email-template.js.map +0 -1
- package/esm/cli/email/email.js +0 -11
- package/esm/cli/email/email.js.map +0 -1
- package/esm/cli/esv/esv-apply.js +0 -62
- package/esm/cli/esv/esv-apply.js.map +0 -1
- package/esm/cli/esv/esv-secret-create.js +0 -25
- package/esm/cli/esv/esv-secret-create.js.map +0 -1
- package/esm/cli/esv/esv-secret-delete.js +0 -35
- package/esm/cli/esv/esv-secret-delete.js.map +0 -1
- package/esm/cli/esv/esv-secret-describe.js +0 -25
- package/esm/cli/esv/esv-secret-describe.js.map +0 -1
- package/esm/cli/esv/esv-secret-export.js +0 -22
- package/esm/cli/esv/esv-secret-export.js.map +0 -1
- package/esm/cli/esv/esv-secret-import.js +0 -22
- package/esm/cli/esv/esv-secret-import.js.map +0 -1
- package/esm/cli/esv/esv-secret-list.js +0 -25
- package/esm/cli/esv/esv-secret-list.js.map +0 -1
- package/esm/cli/esv/esv-secret-set.js +0 -25
- package/esm/cli/esv/esv-secret-set.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-activate.js +0 -30
- package/esm/cli/esv/esv-secret-version-activate.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-create.js +0 -25
- package/esm/cli/esv/esv-secret-version-create.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +0 -30
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-delete.js +0 -35
- package/esm/cli/esv/esv-secret-version-delete.js.map +0 -1
- package/esm/cli/esv/esv-secret-version-list.js +0 -25
- package/esm/cli/esv/esv-secret-version-list.js.map +0 -1
- package/esm/cli/esv/esv-secret-version.js +0 -10
- package/esm/cli/esv/esv-secret-version.js.map +0 -1
- package/esm/cli/esv/esv-secret.js +0 -16
- package/esm/cli/esv/esv-secret.js.map +0 -1
- package/esm/cli/esv/esv-variable-create.js +0 -24
- package/esm/cli/esv/esv-variable-create.js.map +0 -1
- package/esm/cli/esv/esv-variable-delete.js +0 -35
- package/esm/cli/esv/esv-variable-delete.js.map +0 -1
- package/esm/cli/esv/esv-variable-describe.js +0 -25
- package/esm/cli/esv/esv-variable-describe.js.map +0 -1
- package/esm/cli/esv/esv-variable-export.js +0 -22
- package/esm/cli/esv/esv-variable-export.js.map +0 -1
- package/esm/cli/esv/esv-variable-import.js +0 -22
- package/esm/cli/esv/esv-variable-import.js.map +0 -1
- package/esm/cli/esv/esv-variable-list.js +0 -25
- package/esm/cli/esv/esv-variable-list.js.map +0 -1
- package/esm/cli/esv/esv-variable-set.js +0 -31
- package/esm/cli/esv/esv-variable-set.js.map +0 -1
- package/esm/cli/esv/esv-variable.js +0 -15
- package/esm/cli/esv/esv-variable.js.map +0 -1
- package/esm/cli/esv/esv.js +0 -12
- package/esm/cli/esv/esv.js.map +0 -1
- package/esm/cli/idm/idm-count.js +0 -25
- package/esm/cli/idm/idm-count.js.map +0 -1
- package/esm/cli/idm/idm-export.js +0 -42
- package/esm/cli/idm/idm-export.js.map +0 -1
- package/esm/cli/idm/idm-import.js +0 -45
- package/esm/cli/idm/idm-import.js.map +0 -1
- package/esm/cli/idm/idm-list.js +0 -29
- package/esm/cli/idm/idm-list.js.map +0 -1
- package/esm/cli/idm/idm.js +0 -13
- package/esm/cli/idm/idm.js.map +0 -1
- package/esm/cli/idp/idp-export.js +0 -42
- package/esm/cli/idp/idp-export.js.map +0 -1
- package/esm/cli/idp/idp-import.js +0 -45
- package/esm/cli/idp/idp-import.js.map +0 -1
- package/esm/cli/idp/idp-list.js +0 -28
- package/esm/cli/idp/idp-list.js.map +0 -1
- package/esm/cli/idp/idp.js +0 -12
- package/esm/cli/idp/idp.js.map +0 -1
- package/esm/cli/info/info.js +0 -54
- package/esm/cli/info/info.js.map +0 -1
- package/esm/cli/journey/journey-delete.js +0 -34
- package/esm/cli/journey/journey-delete.js.map +0 -1
- package/esm/cli/journey/journey-describe.js +0 -125
- package/esm/cli/journey/journey-describe.js.map +0 -1
- package/esm/cli/journey/journey-disable.js +0 -43
- package/esm/cli/journey/journey-disable.js.map +0 -1
- package/esm/cli/journey/journey-enable.js +0 -43
- package/esm/cli/journey/journey-enable.js.map +0 -1
- package/esm/cli/journey/journey-export.js +0 -50
- package/esm/cli/journey/journey-export.js.map +0 -1
- package/esm/cli/journey/journey-import.js +0 -57
- package/esm/cli/journey/journey-import.js.map +0 -1
- package/esm/cli/journey/journey-list.js +0 -25
- package/esm/cli/journey/journey-list.js.map +0 -1
- package/esm/cli/journey/journey-prune.js +0 -38
- package/esm/cli/journey/journey-prune.js.map +0 -1
- package/esm/cli/journey/journey.js +0 -17
- package/esm/cli/journey/journey.js.map +0 -1
- package/esm/cli/log/log-fetch.js +0 -101
- package/esm/cli/log/log-fetch.js.map +0 -1
- package/esm/cli/log/log-key-delete.js +0 -35
- package/esm/cli/log/log-key-delete.js.map +0 -1
- package/esm/cli/log/log-key-describe.js +0 -22
- package/esm/cli/log/log-key-describe.js.map +0 -1
- package/esm/cli/log/log-key-list.js +0 -26
- package/esm/cli/log/log-key-list.js.map +0 -1
- package/esm/cli/log/log-key.js +0 -8
- package/esm/cli/log/log-key.js.map +0 -1
- package/esm/cli/log/log-list.js +0 -59
- package/esm/cli/log/log-list.js.map +0 -1
- package/esm/cli/log/log-tail.js +0 -56
- package/esm/cli/log/log-tail.js.map +0 -1
- package/esm/cli/log/log.js +0 -17
- package/esm/cli/log/log.js.map +0 -1
- package/esm/cli/realm/realm-add-custom-domain.js +0 -25
- package/esm/cli/realm/realm-add-custom-domain.js.map +0 -1
- package/esm/cli/realm/realm-describe.js +0 -24
- package/esm/cli/realm/realm-describe.js.map +0 -1
- package/esm/cli/realm/realm-list.js +0 -25
- package/esm/cli/realm/realm-list.js.map +0 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +0 -27
- package/esm/cli/realm/realm-remove-custom-domain.js.map +0 -1
- package/esm/cli/realm/realm.js +0 -18
- package/esm/cli/realm/realm.js.map +0 -1
- package/esm/cli/saml/saml-cot-export.js +0 -43
- package/esm/cli/saml/saml-cot-export.js.map +0 -1
- package/esm/cli/saml/saml-cot-import.js +0 -49
- package/esm/cli/saml/saml-cot-import.js.map +0 -1
- package/esm/cli/saml/saml-cot-list.js +0 -26
- package/esm/cli/saml/saml-cot-list.js.map +0 -1
- package/esm/cli/saml/saml-cot.js +0 -8
- package/esm/cli/saml/saml-cot.js.map +0 -1
- package/esm/cli/saml/saml-delete.js +0 -38
- package/esm/cli/saml/saml-delete.js.map +0 -1
- package/esm/cli/saml/saml-describe.js +0 -25
- package/esm/cli/saml/saml-describe.js.map +0 -1
- package/esm/cli/saml/saml-export.js +0 -40
- package/esm/cli/saml/saml-export.js.map +0 -1
- package/esm/cli/saml/saml-import.js +0 -45
- package/esm/cli/saml/saml-import.js.map +0 -1
- package/esm/cli/saml/saml-list.js +0 -25
- package/esm/cli/saml/saml-list.js.map +0 -1
- package/esm/cli/saml/saml-metadata-export.js +0 -35
- package/esm/cli/saml/saml-metadata-export.js.map +0 -1
- package/esm/cli/saml/saml-metadata.js +0 -6
- package/esm/cli/saml/saml-metadata.js.map +0 -1
- package/esm/cli/saml/saml.js +0 -16
- package/esm/cli/saml/saml.js.map +0 -1
- package/esm/cli/script/script-delete.js +0 -22
- package/esm/cli/script/script-delete.js.map +0 -1
- package/esm/cli/script/script-describe.js +0 -22
- package/esm/cli/script/script-describe.js.map +0 -1
- package/esm/cli/script/script-export.js +0 -62
- package/esm/cli/script/script-export.js.map +0 -1
- package/esm/cli/script/script-import.js +0 -35
- package/esm/cli/script/script-import.js.map +0 -1
- package/esm/cli/script/script-list.js +0 -26
- package/esm/cli/script/script-list.js.map +0 -1
- package/esm/cli/script/script.js +0 -18
- package/esm/cli/script/script.js.map +0 -1
- package/esm/cli/service/service-delete.js +0 -22
- package/esm/cli/service/service-delete.js.map +0 -1
- package/esm/cli/service/service-export.js +0 -40
- package/esm/cli/service/service-export.js.map +0 -1
- package/esm/cli/service/service-import.js +0 -47
- package/esm/cli/service/service-import.js.map +0 -1
- package/esm/cli/service/service-list.js +0 -20
- package/esm/cli/service/service-list.js.map +0 -1
- package/esm/cli/service/service.js +0 -13
- package/esm/cli/service/service.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-delete.js +0 -40
- package/esm/cli/theme/theme-delete.js.map +0 -1
- package/esm/cli/theme/theme-export.js +0 -45
- package/esm/cli/theme/theme-export.js.map +0 -1
- package/esm/cli/theme/theme-import.js +0 -50
- package/esm/cli/theme/theme-import.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.js +0 -25
- package/esm/cli/theme/theme-list.js.map +0 -1
- package/esm/cli/theme/theme.js +0 -13
- package/esm/cli/theme/theme.js.map +0 -1
- package/esm/help/SampleData.js +0 -7
- package/esm/help/SampleData.js.map +0 -1
- package/esm/launch.js +0 -15
- package/esm/launch.js.map +0 -1
- package/esm/loader.js +0 -40
- package/esm/loader.js.map +0 -1
- package/esm/ops/AdminFederationOps.js +0 -216
- package/esm/ops/AdminFederationOps.js.map +0 -1
- package/esm/ops/AgentOps.js +0 -691
- package/esm/ops/AgentOps.js.map +0 -1
- package/esm/ops/CirclesOfTrustOps.js +0 -260
- package/esm/ops/CirclesOfTrustOps.js.map +0 -1
- package/esm/ops/ConnectionProfileOps.js +0 -125
- package/esm/ops/ConnectionProfileOps.js.map +0 -1
- package/esm/ops/EmailTemplateOps.js +0 -361
- package/esm/ops/EmailTemplateOps.js.map +0 -1
- package/esm/ops/IdmOps.js +0 -360
- package/esm/ops/IdmOps.js.map +0 -1
- package/esm/ops/IdpOps.js +0 -212
- package/esm/ops/IdpOps.js.map +0 -1
- package/esm/ops/JourneyOps.js +0 -669
- package/esm/ops/JourneyOps.js.map +0 -1
- package/esm/ops/LogOps.js +0 -149
- package/esm/ops/LogOps.js.map +0 -1
- package/esm/ops/NodeOps.js +0 -89
- package/esm/ops/NodeOps.js.map +0 -1
- package/esm/ops/OAuth2ClientOps.js +0 -271
- package/esm/ops/OAuth2ClientOps.js.map +0 -1
- package/esm/ops/OrganizationOps.js +0 -34
- package/esm/ops/OrganizationOps.js.map +0 -1
- package/esm/ops/PolicyOps.js +0 -493
- package/esm/ops/PolicyOps.js.map +0 -1
- package/esm/ops/PolicySetOps.js +0 -379
- package/esm/ops/PolicySetOps.js.map +0 -1
- package/esm/ops/RealmOps.js +0 -116
- package/esm/ops/RealmOps.js.map +0 -1
- package/esm/ops/ResourceTypeOps.js +0 -452
- package/esm/ops/ResourceTypeOps.js.map +0 -1
- package/esm/ops/Saml2Ops.js +0 -293
- package/esm/ops/Saml2Ops.js.map +0 -1
- package/esm/ops/Saml2Ops.test_.js.map +0 -1
- package/esm/ops/ScriptOps.js +0 -383
- package/esm/ops/ScriptOps.js.map +0 -1
- package/esm/ops/SecretsOps.js +0 -237
- package/esm/ops/SecretsOps.js.map +0 -1
- package/esm/ops/ServiceOps.js +0 -213
- package/esm/ops/ServiceOps.js.map +0 -1
- package/esm/ops/ThemeOps.js +0 -361
- package/esm/ops/ThemeOps.js.map +0 -1
- package/esm/ops/VariablesOps.js +0 -144
- package/esm/ops/VariablesOps.js.map +0 -1
- package/esm/ops/utils/OpsUtils.js +0 -9
- package/esm/ops/utils/OpsUtils.js.map +0 -1
- package/esm/ops/utils/Wordwrap.js +0 -5
- package/esm/ops/utils/Wordwrap.js.map +0 -1
- package/esm/storage/StaticStorage.js +0 -12
- package/esm/storage/StaticStorage.js.map +0 -1
- package/esm/utils/Config.js +0 -43
- package/esm/utils/Config.js.map +0 -1
- package/esm/utils/Console.js +0 -537
- package/esm/utils/Console.js.map +0 -1
- package/esm/utils/ExportImportUtils.js +0 -93
- package/esm/utils/ExportImportUtils.js.map +0 -1
- package/esm/utils/Version.js +0 -139
- package/esm/utils/Version.js.map +0 -1
package/esm/ops/AgentOps.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentOps.js","names":["frodo","state","fs","printMessage","createTable","debugMessage","showSpinner","succeedSpinner","failSpinner","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","createAgentExportTemplate","getAgents","getIdentityGatewayAgents","getJavaAgents","getWebAgents","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","importAgents","importIdentityGatewayAgents","importJavaAgents","importWebAgents","agent","agentTypeToFileIdMap","IdentityGatewayAgent","J2EEAgent","WebAgent","listAgents","long","agents","table","status","_type","_id","push","name","toString","forEach","error","stack","listIdentityGatewayAgents","listJavaAgents","listWebAgents","exportAgentsToFile","file","exportData","fileName","getRealm","exportIdentityGatewayAgentsToFile","exportJavaAgentsToFile","exportWebAgentsToFile","exportAgentToFile","agentId","exportIdentityGatewayAgentToFile","exportJavaAgentToFile","exportWebAgentToFile","exportAgentsToFiles","length","exportIdentityGatewayAgentsToFiles","exportJavaAgentsToFiles","exportWebAgentsToFiles","importAgentFromFile","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","importFirstAgentFromFile","Object","keys","values","importAgentsFromFile","message","response","importAgentsFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","importIdentityGatewayAgentFromFile","importFirstIdentityGatewayAgentFromFile","importIdentityGatewayAgentsFromFile","importIdentityGatewayAgentsFromFiles","importJavaAgentFromFile","importFirstJavaAgentFromFile","importJavaAgentsFromFile","importJavaAgentsFromFiles","importWebAgentFromFile","importFirstWebAgentFromFile","importWebAgentsFromFile","importWebAgentsFromFiles"],"sources":["../../src/ops/AgentOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n printMessage,\n createTable,\n debugMessage,\n showSpinner,\n succeedSpinner,\n failSpinner,\n} from '../utils/Console';\nimport type { AgentExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.helper.utils;\nconst {\n createAgentExportTemplate,\n getAgents,\n getIdentityGatewayAgents,\n getJavaAgents,\n getWebAgents,\n exportAgents,\n exportIdentityGatewayAgents,\n exportJavaAgents,\n exportWebAgents,\n exportAgent,\n exportIdentityGatewayAgent,\n exportJavaAgent,\n exportWebAgent,\n importAgent,\n importIdentityGatewayAgent,\n importJavaAgent,\n importWebAgent,\n importAgents,\n importIdentityGatewayAgents,\n importJavaAgents,\n importWebAgents,\n} = frodo.agent;\n\nconst agentTypeToFileIdMap = {\n IdentityGatewayAgent: 'gateway.agent',\n J2EEAgent: 'java.agent',\n WebAgent: 'web.agent',\n};\n\n/**\n * List agents\n */\nexport async function listAgents(long = false) {\n try {\n const agents = await getAgents();\n if (long) {\n const table = createTable(['Agent Id', 'Status', 'Agent Type']);\n for (const agent of agents) {\n let status = 'Unknown';\n switch (agent._type._id) {\n case 'J2EEAgent':\n status = agent['globalJ2EEAgentConfig']['status'];\n break;\n case 'WebAgent':\n status = agent['globalWebAgentConfig']['status'];\n break;\n default:\n status = agent.status as string;\n break;\n }\n table.push([\n agent._id,\n status === 'Active' ? 'Active'['brightGreen'] : status['brightRed'],\n agent._type.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List identity gateway agents\n */\nexport async function listIdentityGatewayAgents(long = false) {\n try {\n const agents = await getIdentityGatewayAgents();\n if (long) {\n const table = createTable(['Gateway Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent.status === 'Active'\n ? 'Active'['brightGreen']\n : agent.status['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing gateway agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List java agents\n */\nexport async function listJavaAgents(long = false) {\n try {\n const agents = await getJavaAgents();\n if (long) {\n const table = createTable(['Java Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalJ2EEAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalJ2EEAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing java agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List web agents\n */\nexport async function listWebAgents(long = false) {\n try {\n const agents = await getWebAgents();\n if (long) {\n const table = createTable(['Web Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalWebAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalWebAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing web agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all agents to file\n * @param {string} file file name\n */\nexport async function exportAgentsToFile(file) {\n const exportData = await exportAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n 'agent'\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all identity gateway agents to file\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentsToFile(file) {\n const exportData = await exportIdentityGatewayAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['IdentityGatewayAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all java agents to file\n * @param {string} file file name\n */\nexport async function exportJavaAgentsToFile(file) {\n const exportData = await exportJavaAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['J2EEAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all web agents to file\n * @param {string} file file name\n */\nexport async function exportWebAgentsToFile(file) {\n const exportData = await exportWebAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['WebAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportAgentToFile(agentId, file) {\n const exportData = await exportAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export identity gateway agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentToFile(agentId, file) {\n const exportData = await exportIdentityGatewayAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export java agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportJavaAgentToFile(agentId, file) {\n const exportData = await exportJavaAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export web agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportWebAgentToFile(agentId, file) {\n const exportData = await exportWebAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all agents to separate files\n */\nexport async function exportAgentsToFiles() {\n const agents = await getAgents();\n debugMessage(`exportAgentsToFiles: ${agents.length} agents`);\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${fileName}`);\n saveJsonToFile(exportData, fileName);\n }\n debugMessage(`exportAgentsToFiles: done.`);\n}\n\n/**\n * Export all identity gateway agents to separate files\n */\nexport async function exportIdentityGatewayAgentsToFiles() {\n const agents = await getIdentityGatewayAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all java agents to separate files\n */\nexport async function exportJavaAgentsToFiles() {\n const agents = await getJavaAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all web agents to separate files\n */\nexport async function exportWebAgentsToFiles() {\n const agents = await getWebAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Import an agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importAgentFromFile(agentId: string, file: string) {\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n });\n}\n\n/**\n * Import first agent from file\n * @param {string} file import file name\n */\nexport async function importFirstAgentFromFile(file: string) {\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n });\n}\n\n/**\n * Import agents from file\n * @param {String} file file name\n */\nexport async function importAgentsFromFile(file) {\n debugMessage(`importAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`importAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`importAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all agents from separate files\n */\nexport async function importAgentsFromFiles() {\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importAgentsFromFile(file);\n }\n}\n\n/**\n * Import an identity gateway agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importIdentityGatewayAgentFromFile(\n agentId: string,\n file: string\n) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importIdentityGatewayAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import first identity gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstIdentityGatewayAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importIdentityGatewayAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import identity gateway agents from file\n * @param {String} file file name\n */\nexport async function importIdentityGatewayAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${file}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importIdentityGatewayAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all identity gateway agents from separate files\n */\nexport async function importIdentityGatewayAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importIdentityGatewayAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: end`);\n}\n\n/**\n * Import an java agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importJavaAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importJavaAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import first java agent from file\n * @param {string} file import file name\n */\nexport async function importFirstJavaAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importJavaAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import java agents from file\n * @param {String} file file name\n */\nexport async function importJavaAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importJavaAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all java agents from separate files\n */\nexport async function importJavaAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importJavaAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: end`);\n}\n\n/**\n * Import an web agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importWebAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importWebAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstWebAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importWebAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`caught it here ${importError}`);\n }\n break;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web agents from file\n * @param {String} file file name\n */\nexport async function importWebAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importWebAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all web agents from separate files\n */\nexport async function importWebAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importWebAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: end`);\n}\n"],"mappings":"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"}
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
|
-
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
|
-
const {
|
|
6
|
-
getRealmName
|
|
7
|
-
} = frodo.helper.utils;
|
|
8
|
-
const {
|
|
9
|
-
getCirclesOfTrust,
|
|
10
|
-
exportCircleOfTrust,
|
|
11
|
-
exportCirclesOfTrust,
|
|
12
|
-
importCircleOfTrust,
|
|
13
|
-
importCirclesOfTrust,
|
|
14
|
-
importFirstCircleOfTrust
|
|
15
|
-
} = frodo.saml2.circlesOfTrust;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Get a one-line description of the circle of trust object
|
|
19
|
-
* @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe
|
|
20
|
-
* @returns {string} a one-line description
|
|
21
|
-
*/
|
|
22
|
-
export function getOneLineDescription(cotObj) {
|
|
23
|
-
const description = `[${cotObj._id['brightCyan']}]`;
|
|
24
|
-
return description;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Get markdown table header
|
|
29
|
-
* @returns {string} markdown table header
|
|
30
|
-
*/
|
|
31
|
-
export function getTableHeaderMd() {
|
|
32
|
-
let markdown = '';
|
|
33
|
-
markdown += '| Name/Id | Status | Trusted Providers |\n';
|
|
34
|
-
markdown += '| ------- | ------ | ----------------- |';
|
|
35
|
-
return markdown;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Get a table-row of the circle of trust in markdown
|
|
40
|
-
* @param {SocialIdpSkeleton} cotObj circle of trust object to describe
|
|
41
|
-
* @returns {string} a table-row of the circle of trust in markdown
|
|
42
|
-
*/
|
|
43
|
-
export function getTableRowMd(cotObj) {
|
|
44
|
-
const row = `| ${cotObj._id} | ${cotObj.status === 'active' ? ':white_check_mark: `active`' : ':o: `inactive`'} | ${cotObj.trustedProviders.map(provider => provider.split('|')[0]).join('<br>')} |`;
|
|
45
|
-
return row;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* List entity providers
|
|
50
|
-
* @param {String} long Long list format with details
|
|
51
|
-
*/
|
|
52
|
-
export async function listCirclesOfTrust(long = false) {
|
|
53
|
-
let outcome = false;
|
|
54
|
-
let cotList = [];
|
|
55
|
-
try {
|
|
56
|
-
cotList = await getCirclesOfTrust();
|
|
57
|
-
} catch (error) {
|
|
58
|
-
printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');
|
|
59
|
-
printMessage(error, 'data');
|
|
60
|
-
}
|
|
61
|
-
cotList.sort((a, b) => a._id.localeCompare(b._id));
|
|
62
|
-
if (!long) {
|
|
63
|
-
cotList.forEach(cot => {
|
|
64
|
-
printMessage(`${cot._id}`, 'data');
|
|
65
|
-
});
|
|
66
|
-
outcome = true;
|
|
67
|
-
} else {
|
|
68
|
-
const table = createTable(['Name'['brightCyan'], 'Description'['brightCyan'], 'Status'['brightCyan'], 'Trusted Providers'['brightCyan']]);
|
|
69
|
-
cotList.forEach(cot => {
|
|
70
|
-
table.push([cot._id, cot.description, cot.status, cot.trustedProviders.map(provider => provider.split('|')[0]).join('\n')]);
|
|
71
|
-
});
|
|
72
|
-
printMessage(table.toString());
|
|
73
|
-
outcome = true;
|
|
74
|
-
}
|
|
75
|
-
return outcome;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Export a single circle of trust to file
|
|
80
|
-
* @param {String} cotId circle of trust id/name
|
|
81
|
-
* @param {String} file Optional filename
|
|
82
|
-
*/
|
|
83
|
-
export async function exportCircleOfTrustToFile(cotId, file = null) {
|
|
84
|
-
let outcome = false;
|
|
85
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);
|
|
86
|
-
showSpinner(`Exporting ${cotId}...`);
|
|
87
|
-
try {
|
|
88
|
-
let fileName = getTypedFilename(cotId, 'cot.saml');
|
|
89
|
-
if (file) {
|
|
90
|
-
fileName = file;
|
|
91
|
-
}
|
|
92
|
-
const exportData = await exportCircleOfTrust(cotId);
|
|
93
|
-
saveJsonToFile(exportData, fileName);
|
|
94
|
-
succeedSpinner(`Exported ${cotId} to ${fileName}.`);
|
|
95
|
-
outcome = true;
|
|
96
|
-
} catch (error) {
|
|
97
|
-
failSpinner(`Error exporting ${cotId}: ${error.message}`);
|
|
98
|
-
}
|
|
99
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);
|
|
100
|
-
return outcome;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Export all circles of trust to one file
|
|
105
|
-
* @param {String} file Optional filename
|
|
106
|
-
*/
|
|
107
|
-
export async function exportCirclesOfTrustToFile(file = null) {
|
|
108
|
-
let outcome = false;
|
|
109
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);
|
|
110
|
-
showSpinner(`Exporting all circles of trust...`);
|
|
111
|
-
try {
|
|
112
|
-
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}CirclesOfTrust`, 'cot.saml');
|
|
113
|
-
if (file) {
|
|
114
|
-
fileName = file;
|
|
115
|
-
}
|
|
116
|
-
const exportData = await exportCirclesOfTrust();
|
|
117
|
-
saveJsonToFile(exportData, fileName);
|
|
118
|
-
succeedSpinner(`Exported all circles of trust to ${fileName}.`);
|
|
119
|
-
outcome = true;
|
|
120
|
-
} catch (error) {
|
|
121
|
-
failSpinner(`Error exporting circles of trust: ${error.message}`);
|
|
122
|
-
}
|
|
123
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);
|
|
124
|
-
return outcome;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Export all circles of trust to individual files
|
|
129
|
-
*/
|
|
130
|
-
export async function exportCirclesOfTrustToFiles() {
|
|
131
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);
|
|
132
|
-
const errors = [];
|
|
133
|
-
try {
|
|
134
|
-
const cots = await getCirclesOfTrust();
|
|
135
|
-
createProgressBar(cots.length, 'Exporting circles of trust...');
|
|
136
|
-
for (const cot of cots) {
|
|
137
|
-
const file = getTypedFilename(cot._id, 'cot.saml');
|
|
138
|
-
try {
|
|
139
|
-
const exportData = await exportCircleOfTrust(cot._id);
|
|
140
|
-
saveJsonToFile(exportData, file);
|
|
141
|
-
updateProgressBar(`Exported ${cot.name}.`);
|
|
142
|
-
} catch (error) {
|
|
143
|
-
errors.push(error);
|
|
144
|
-
updateProgressBar(`Error exporting ${cot.name}.`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
stopProgressBar(`Export complete.`);
|
|
148
|
-
} catch (error) {
|
|
149
|
-
errors.push(error);
|
|
150
|
-
stopProgressBar(`Error exporting circles of trust to files`);
|
|
151
|
-
}
|
|
152
|
-
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);
|
|
153
|
-
return 0 === errors.length;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Import a SAML circle of trust by id/name from file
|
|
158
|
-
* @param {String} cotId Circle of trust id/name
|
|
159
|
-
* @param {String} file Import file name
|
|
160
|
-
*/
|
|
161
|
-
export async function importCircleOfTrustFromFile(cotId, file) {
|
|
162
|
-
let outcome = false;
|
|
163
|
-
showSpinner(`Importing circle of trust ${cotId} from ${file}...`);
|
|
164
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
165
|
-
if (err) throw err;
|
|
166
|
-
try {
|
|
167
|
-
const fileData = JSON.parse(data);
|
|
168
|
-
await importCircleOfTrust(cotId, fileData);
|
|
169
|
-
outcome = true;
|
|
170
|
-
succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);
|
|
171
|
-
} catch (error) {
|
|
172
|
-
var _error$response;
|
|
173
|
-
failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);
|
|
174
|
-
printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
return outcome;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Import first SAML circle of trust from file
|
|
182
|
-
* @param {String} file Import file name
|
|
183
|
-
*/
|
|
184
|
-
export async function importFirstCircleOfTrustFromFile(file) {
|
|
185
|
-
let outcome = false;
|
|
186
|
-
showSpinner(`Importing first circle of trust from ${file}...`);
|
|
187
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
188
|
-
if (err) throw err;
|
|
189
|
-
try {
|
|
190
|
-
const fileData = JSON.parse(data);
|
|
191
|
-
await importFirstCircleOfTrust(fileData);
|
|
192
|
-
outcome = true;
|
|
193
|
-
succeedSpinner(`Imported first circle of trust from ${file}.`);
|
|
194
|
-
} catch (error) {
|
|
195
|
-
var _error$response2;
|
|
196
|
-
failSpinner(`Error importing first circle of trust from ${file}.`);
|
|
197
|
-
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
return outcome;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Import all SAML circles of trust from file
|
|
205
|
-
* @param {String} file Import file name
|
|
206
|
-
*/
|
|
207
|
-
export async function importCirclesOfTrustFromFile(file) {
|
|
208
|
-
let outcome = false;
|
|
209
|
-
showSpinner(`Importing circles of trust from ${file}...`);
|
|
210
|
-
fs.readFile(file, 'utf8', async (err, data) => {
|
|
211
|
-
if (err) throw err;
|
|
212
|
-
try {
|
|
213
|
-
const fileData = JSON.parse(data);
|
|
214
|
-
await importCirclesOfTrust(fileData);
|
|
215
|
-
outcome = true;
|
|
216
|
-
succeedSpinner(`Imported circles of trust from ${file}.`);
|
|
217
|
-
} catch (error) {
|
|
218
|
-
var _error$response3;
|
|
219
|
-
failSpinner(`Error importing circles of trust from ${file}.`);
|
|
220
|
-
printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
return outcome;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Import all SAML circles of trust from all *.cot.saml.json files in the current directory
|
|
228
|
-
*/
|
|
229
|
-
export async function importCirclesOfTrustFromFiles() {
|
|
230
|
-
const errors = [];
|
|
231
|
-
try {
|
|
232
|
-
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);
|
|
233
|
-
const names = fs.readdirSync('.');
|
|
234
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.policy.authz.json'));
|
|
235
|
-
createProgressBar(files.length, 'Importing circles of trust...');
|
|
236
|
-
let total = 0;
|
|
237
|
-
for (const file of files) {
|
|
238
|
-
try {
|
|
239
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
240
|
-
const fileData = JSON.parse(data);
|
|
241
|
-
const count = Object.keys(fileData.saml.cot).length;
|
|
242
|
-
total += count;
|
|
243
|
-
await importCirclesOfTrust(fileData);
|
|
244
|
-
updateProgressBar(`Imported ${count} circles of trust from ${file}`);
|
|
245
|
-
} catch (error) {
|
|
246
|
-
errors.push(error);
|
|
247
|
-
updateProgressBar(`Error importing circles of trust from ${file}`);
|
|
248
|
-
printMessage(error, 'error');
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
stopProgressBar(`Imported ${total} circles of trust from ${files.length} files.`);
|
|
252
|
-
} catch (error) {
|
|
253
|
-
errors.push(error);
|
|
254
|
-
stopProgressBar(`Error importing circles of trust from files.`);
|
|
255
|
-
printMessage(error, 'error');
|
|
256
|
-
}
|
|
257
|
-
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);
|
|
258
|
-
return 0 === errors.length;
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=CirclesOfTrustOps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CirclesOfTrustOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getCirclesOfTrust","exportCircleOfTrust","exportCirclesOfTrust","importCircleOfTrust","importCirclesOfTrust","importFirstCircleOfTrust","saml2","circlesOfTrust","getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join","listCirclesOfTrust","long","outcome","cotList","error","sort","a","b","localeCompare","forEach","cot","table","push","toString","exportCircleOfTrustToFile","cotId","file","fileName","exportData","message","exportCirclesOfTrustToFile","getRealm","exportCirclesOfTrustToFiles","errors","cots","length","name","importCircleOfTrustFromFile","readFile","err","data","fileData","JSON","parse","_error$response","response","importFirstCircleOfTrustFromFile","_error$response2","importCirclesOfTrustFromFile","_error$response3","importCirclesOfTrustFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","saml"],"sources":["../../src/ops/CirclesOfTrustOps.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 type { CircleOfTrustSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport type { CirclesOfTrustExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\nconst { getRealmName } = frodo.helper.utils;\nconst {\n getCirclesOfTrust,\n exportCircleOfTrust,\n exportCirclesOfTrust,\n importCircleOfTrust,\n importCirclesOfTrust,\n importFirstCircleOfTrust,\n} = frodo.saml2.circlesOfTrust;\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(cotObj: CircleOfTrustSkeleton): string {\n const description = `[${cotObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false): Promise<boolean> {\n let outcome = false;\n let cotList = [];\n try {\n cotList = await getCirclesOfTrust();\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n outcome = true;\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n outcome = true;\n }\n return outcome;\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrustToFile(\n cotId: string,\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);\n showSpinner(`Exporting ${cotId}...`);\n try {\n let fileName = getTypedFilename(cotId, 'cot.saml');\n if (file) {\n fileName = file;\n }\n const exportData = await exportCircleOfTrust(cotId);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${cotId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${cotId}: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);\n showSpinner(`Exporting all circles of trust...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}CirclesOfTrust`,\n 'cot.saml'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportCirclesOfTrust();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all circles of trust to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting circles of trust: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles(): Promise<boolean> {\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);\n const errors = [];\n try {\n const cots: CircleOfTrustSkeleton[] = await getCirclesOfTrust();\n createProgressBar(cots.length, 'Exporting circles of trust...');\n for (const cot of cots) {\n const file = getTypedFilename(cot._id, 'cot.saml');\n try {\n const exportData: CirclesOfTrustExportInterface =\n await exportCircleOfTrust(cot._id);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${cot.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${cot.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting circles of trust to files`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrustFromFile(\n cotId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circle of trust ${cotId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await importCircleOfTrust(cotId, fileData);\n outcome = true;\n succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first circle of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await importFirstCircleOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported first circle of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first circle of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circles of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await importCirclesOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported circles of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circles of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: 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 circles of trust...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: CirclesOfTrustExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.saml.cot).length;\n total += count;\n await importCirclesOfTrust(fileData);\n updateProgressBar(`Imported ${count} circles of trust from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing circles of trust from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Imported ${total} circles of trust from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing circles of trust from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
3
|
-
import { createObjectTable, createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
-
const {
|
|
5
|
-
getAccessTokenForServiceAccount
|
|
6
|
-
} = frodo.login;
|
|
7
|
-
const {
|
|
8
|
-
getConnectionProfilesPath,
|
|
9
|
-
getConnectionProfileByHost
|
|
10
|
-
} = frodo.conn;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* List connection profiles
|
|
14
|
-
* @param {boolean} long Long list format with details
|
|
15
|
-
* @param {State} state library state
|
|
16
|
-
*/
|
|
17
|
-
export function listConnectionProfiles(long = false) {
|
|
18
|
-
const filename = getConnectionProfilesPath();
|
|
19
|
-
try {
|
|
20
|
-
const data = fs.readFileSync(filename, 'utf8');
|
|
21
|
-
const connectionsData = JSON.parse(data);
|
|
22
|
-
if (Object.keys(connectionsData).length < 1) {
|
|
23
|
-
printMessage(`No connections defined yet in ${filename}`, 'info');
|
|
24
|
-
} else {
|
|
25
|
-
if (long) {
|
|
26
|
-
const table = createTable(['Host', 'Service Account', 'Username', 'Log API Key']);
|
|
27
|
-
Object.keys(connectionsData).forEach(c => {
|
|
28
|
-
table.push([c, connectionsData[c].svcacctName || connectionsData[c].svcacctId, connectionsData[c].username, connectionsData[c].logApiKey]);
|
|
29
|
-
});
|
|
30
|
-
printMessage(table.toString(), 'data');
|
|
31
|
-
} else {
|
|
32
|
-
Object.keys(connectionsData).forEach(c => {
|
|
33
|
-
printMessage(`${c}`, 'data');
|
|
34
|
-
});
|
|
35
|
-
// getUniqueNames(5, Object.keys(connectionsData));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
printMessage('Any unique substring of a saved host can be used as the value for host parameter in all commands', 'info');
|
|
39
|
-
}
|
|
40
|
-
} catch (e) {
|
|
41
|
-
printMessage(`No connections found in ${filename} (${e.message})`, 'error');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Describe connection profile
|
|
47
|
-
* @param {string} host Host URL or unique substring
|
|
48
|
-
* @param {boolean} showSecrets Whether secrets should be shown in clear text or not
|
|
49
|
-
*/
|
|
50
|
-
export async function describeConnectionProfile(host, showSecrets) {
|
|
51
|
-
debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);
|
|
52
|
-
const profile = await getConnectionProfileByHost(host);
|
|
53
|
-
if (profile) {
|
|
54
|
-
debugMessage(profile);
|
|
55
|
-
const present = '[present]';
|
|
56
|
-
const jwk = profile.svcacctJwk;
|
|
57
|
-
if (!showSecrets) {
|
|
58
|
-
if (profile.password) profile.password = present;
|
|
59
|
-
if (profile.logApiSecret) profile.logApiSecret = present;
|
|
60
|
-
if (profile.svcacctJwk) profile['svcacctJwk'] = present;
|
|
61
|
-
}
|
|
62
|
-
if (!profile.username) {
|
|
63
|
-
delete profile.username;
|
|
64
|
-
delete profile.password;
|
|
65
|
-
}
|
|
66
|
-
if (!profile.logApiKey) {
|
|
67
|
-
delete profile.logApiKey;
|
|
68
|
-
delete profile.logApiSecret;
|
|
69
|
-
}
|
|
70
|
-
if (!profile.svcacctId) {
|
|
71
|
-
delete profile.svcacctId;
|
|
72
|
-
delete profile.svcacctJwk;
|
|
73
|
-
delete profile.svcacctName;
|
|
74
|
-
}
|
|
75
|
-
if (showSecrets && jwk) {
|
|
76
|
-
profile['svcacctJwk'] = 'see below';
|
|
77
|
-
}
|
|
78
|
-
if (!profile.authenticationService) {
|
|
79
|
-
delete profile.authenticationService;
|
|
80
|
-
}
|
|
81
|
-
const keyMap = {
|
|
82
|
-
tenant: 'Host',
|
|
83
|
-
username: 'Username',
|
|
84
|
-
password: 'Password',
|
|
85
|
-
logApiKey: 'Log API Key',
|
|
86
|
-
logApiSecret: 'Log API Secret',
|
|
87
|
-
authenticationService: 'Authentication Service',
|
|
88
|
-
authenticationHeaderOverrides: 'Authentication Header Overrides',
|
|
89
|
-
svcacctName: 'Service Account Name',
|
|
90
|
-
svcacctId: 'Service Account Id',
|
|
91
|
-
svcacctJwk: 'Service Account JWK'
|
|
92
|
-
};
|
|
93
|
-
const table = createObjectTable(profile, keyMap);
|
|
94
|
-
printMessage(table.toString(), 'data');
|
|
95
|
-
if (showSecrets && jwk) {
|
|
96
|
-
printMessage(JSON.stringify(jwk), 'data');
|
|
97
|
-
}
|
|
98
|
-
} else {
|
|
99
|
-
printMessage(`No connection profile ${host} found`);
|
|
100
|
-
}
|
|
101
|
-
debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);
|
|
102
|
-
}
|
|
103
|
-
export async function addExistingServiceAccount(serviceAccountId, privateKeyFile, validate) {
|
|
104
|
-
try {
|
|
105
|
-
const data = fs.readFileSync(privateKeyFile);
|
|
106
|
-
const jwk = JSON.parse(data.toString());
|
|
107
|
-
if (validate) {
|
|
108
|
-
showSpinner(`Validating service account ${serviceAccountId}...`);
|
|
109
|
-
const token = await getAccessTokenForServiceAccount(serviceAccountId, jwk);
|
|
110
|
-
if (token === null) {
|
|
111
|
-
failSpinner(`Failed to validate service account ${serviceAccountId}.`);
|
|
112
|
-
return false;
|
|
113
|
-
} else {
|
|
114
|
-
succeedSpinner(`Successfully validated service account ${serviceAccountId}.`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
state.setServiceAccountId(serviceAccountId);
|
|
118
|
-
state.setServiceAccountJwk(jwk);
|
|
119
|
-
return true;
|
|
120
|
-
} catch (err) {
|
|
121
|
-
failSpinner(`Failed to validate service account ${serviceAccountId}: ${err}.`);
|
|
122
|
-
}
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=ConnectionProfileOps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["fs","frodo","state","createObjectTable","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getAccessTokenForServiceAccount","login","getConnectionProfilesPath","getConnectionProfileByHost","conn","listConnectionProfiles","long","filename","data","readFileSync","connectionsData","JSON","parse","Object","keys","length","table","forEach","c","push","svcacctName","svcacctId","username","logApiKey","toString","e","message","describeConnectionProfile","host","showSecrets","profile","present","jwk","svcacctJwk","password","logApiSecret","authenticationService","keyMap","tenant","authenticationHeaderOverrides","stringify","addExistingServiceAccount","serviceAccountId","privateKeyFile","validate","token","setServiceAccountId","setServiceAccountJwk","err"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\nconst { getAccessTokenForServiceAccount } = frodo.login;\nconst { getConnectionProfilesPath, getConnectionProfileByHost } = frodo.conn;\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n * @param {State} state library state\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(JSON.stringify(jwk), 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\nexport async function addExistingServiceAccount(\n serviceAccountId: string,\n privateKeyFile: string,\n validate: boolean\n): Promise<boolean> {\n try {\n const data = fs.readFileSync(privateKeyFile);\n const jwk = JSON.parse(data.toString());\n if (validate) {\n showSpinner(`Validating service account ${serviceAccountId}...`);\n const token = await getAccessTokenForServiceAccount(\n serviceAccountId,\n jwk\n );\n if (token === null) {\n failSpinner(`Failed to validate service account ${serviceAccountId}.`);\n return false;\n } else {\n succeedSpinner(\n `Successfully validated service account ${serviceAccountId}.`\n );\n }\n }\n state.setServiceAccountId(serviceAccountId);\n state.setServiceAccountJwk(jwk);\n return true;\n } catch (err) {\n failSpinner(\n `Failed to validate service account ${serviceAccountId}: ${err}.`\n );\n }\n return false;\n}\n"],"mappings":"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"}
|