@rockcarver/frodo-cli 2.0.0-5 → 2.0.0-50
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 +361 -6
- package/esm/app.js +20 -3
- 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 +47 -0
- package/esm/cli/config/config-export.js.map +1 -0
- package/esm/cli/config/config-import.js +56 -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 +27 -15
- 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 +16 -8
- 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 +16 -8
- 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 -7
- 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 +30 -16
- 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/log/log-fetch.js +67 -35
- package/esm/cli/log/log-fetch.js.map +1 -1
- package/esm/cli/log/log-key-delete.js +9 -7
- package/esm/cli/log/log-key-delete.js.map +1 -1
- package/esm/cli/log/log-key-describe.js +7 -5
- package/esm/cli/log/log-key-describe.js.map +1 -1
- package/esm/cli/log/log-key-list.js +7 -5
- package/esm/cli/log/log-key-list.js.map +1 -1
- package/esm/cli/log/log-key.js +1 -1
- package/esm/cli/log/log-key.js.map +1 -1
- package/esm/cli/log/log-list.js +64 -33
- package/esm/cli/log/log-list.js.map +1 -1
- package/esm/cli/log/log-tail.js +65 -34
- package/esm/cli/log/log-tail.js.map +1 -1
- package/esm/cli/log/log.js +2 -2
- package/esm/cli/log/log.js.map +1 -1
- 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 +20 -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 +13 -15
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +18 -10
- 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 +1 -1
- package/esm/help/SampleData.js.map +1 -1
- 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 +168 -0
- package/esm/ops/ConfigOps.js.map +1 -0
- package/esm/ops/ConnectionProfileOps.js +13 -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 +108 -75
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +182 -116
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +22 -12
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +14 -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 +15 -10
- 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 +138 -91
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +222 -90
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +333 -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 +164 -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 +20 -17
- package/esm/utils/Version.js.map +1 -1
- package/global-jest-setup.js +5 -0
- package/package.json +55 -37
- 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecretsOps.js","names":["frodo","createKeyValueTable","createProgressBar","createTable","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","wordwrap","listSecrets","long","secrets","cloud","secret","getSecrets","result","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","idm","managed","resolveUserName","lastChangedBy","Date","lastChangeDate","toLocaleString","toString","forEach","createSecret","id","value","encoding","useInPlaceholders","putSecret","code","setSecretDescription","secretId","deleteSecret","deleteSecrets","length","listSecretVersions","versions","getSecretVersions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","describeSecret","getSecret","createNewVersionOfSecret","activateVersionOfSecret","setStatusOfVersionOfSecret","deactivateVersionOfSecret","deleteVersionOfSecret"],"sources":["ops/SecretsOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = (await frodo.cloud.secret.getSecrets()).result;\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n await frodo.idm.managed.resolveUserName(\n 'teammember',\n secret.lastChangedBy\n ),\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await frodo.cloud.secret.putSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n );\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await frodo.cloud.secret.deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = (await frodo.cloud.secret.getSecrets()).result;\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await frodo.cloud.secret.deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await frodo.cloud.secret.getSecretVersions(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString());\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await frodo.cloud.secret.getSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await frodo.idm.managed.resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString());\n printMessage('\\nSecret Versions:');\n await listSecretVersions(secretId);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createNewVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await frodo.cloud.secret.createNewVersionOfSecret(\n secretId,\n value\n );\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setStatusOfVersionOfSecret(\n secretId,\n version,\n 'ENABLED'\n );\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setStatusOfVersionOfSecret(\n secretId,\n version,\n 'DISABLED'\n );\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SecretsOps.js","names":["frodo","state","fs","getFullExportConfig","isIdUsed","createKeyValueTable","createProgressIndicator","createTable","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","getTypedFilename","saveJsonToFile","saveToFile","titleCase","utils","listSecrets","long","usage","file","spinnerId","secrets","sort","a","b","_id","localeCompare","length","error","_error$response","response","data","message","forEach","variable","fullExport","headers","hAlign","content","_error$response2","push","table","lastChangedBy","getUseBearerTokenForAmApis","values","activeVersion","loadedVersion","loaded","description","Date","lastChangeDate","toUTCString","isEsvUsed","used","location","toString","id","value","encoding","useInPlaceholders","outcome","code","createSecretFromFile","readFileSync","setSecretDescription","secretId","deleteSecrets","_error$response3","indicatorId","listSecretVersions","versions","_error$response4","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","_error$response5","exportSecretToFile","includeMeta","fileName","filePath","fileData","_error$response6","exportSecretsToFile","getRealm","secretsExport","_error$response7","exportSecretsToFiles","_error$response8","createVersionOfSecretFromFile","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n SecretEncodingType,\n SecretSkeleton,\n VersionOfSecretSkeleton,\n} from '@rockcarver/frodo-lib/types/api/cloud/SecretsApi';\nimport fs from 'fs';\n\nimport { getFullExportConfig, isIdUsed } from '../utils/Config';\nimport {\n createKeyValueTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath, getTypedFilename, saveJsonToFile, saveToFile, titleCase } =\n frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields besides usage\n * @param {boolean} usage Display usage field\n * @param {String | null} file Optional filename to determine usage\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listSecrets(\n long: boolean = false,\n usage: boolean = false,\n file: string | null = null\n): Promise<boolean> {\n let spinnerId: string;\n let secrets: SecretSkeleton[] = [];\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading secrets...`\n );\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n stopProgressIndicator(\n spinnerId,\n `Successfully read ${secrets.length} secrets.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading secrets: ${error.response?.data || error.message}`,\n 'fail'\n );\n return false;\n }\n if (!long && !usage) {\n secrets.forEach((variable) => {\n printMessage(variable._id, 'data');\n });\n return true;\n }\n let fullExport = null;\n const headers = long\n ? [\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]\n : ['Id'['brightCyan']];\n if (usage) {\n try {\n fullExport = await getFullExportConfig(file);\n } catch (error) {\n printMessage(\n `Error getting full export: ${error.response?.data || error.message}`,\n 'error'\n );\n return false;\n }\n //Delete secrets from full export so they aren't mistakenly used for determining usage\n delete fullExport.secrets;\n headers.push('Used'['brightCyan']);\n }\n const table = createTable(headers);\n for (const secret of secrets) {\n let lastChangedBy = secret.lastChangedBy;\n if (long) {\n try {\n lastChangedBy = state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy);\n } catch (error) {\n // ignore\n }\n }\n const values = long\n ? [\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n lastChangedBy,\n new Date(secret.lastChangeDate).toUTCString(),\n ]\n : [secret._id];\n if (usage) {\n const isEsvUsed = isIdUsed(fullExport, secret._id, true);\n values.push(\n isEsvUsed.used\n ? `${'yes'['brightGreen']} (at ${isEsvUsed.location})`\n : 'no'['brightRed']\n );\n }\n table.push(values);\n }\n printMessage(table.toString(), 'data');\n return true;\n}\n\n/**\n * Create secret\n * @param {string} id secret id\n * @param {string} value secret value\n * @param {string} description secret description\n * @param {SecretEncodingType} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function createSecret(\n id: string,\n value: string,\n description: string,\n encoding: SecretEncodingType,\n useInPlaceholders: boolean\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Creating secret ${id}...`\n );\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Create secret from file (pem / base64hmac)\n * @param {string} id secret id\n * @param {string} file certificate file name\n * @param {string} description secret description\n * @param {SecretEncodingType} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function createSecretFromFile(\n id: string,\n file: string,\n description: string,\n encoding: SecretEncodingType,\n useInPlaceholders: boolean\n): Promise<boolean> {\n let outcome = false;\n const value = fs.readFileSync(getFilePath(file), 'utf8');\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Creating secret ${id}...`\n );\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Set description of secret\n * @param {string} secretId secret id\n * @param {string} description secret description\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function setSecretDescription(\n secretId: string,\n description: string\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Setting description of secret ${secretId}...`\n );\n try {\n await updateSecretDescription(secretId, description);\n stopProgressIndicator(\n spinnerId,\n `Set description of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Delete a secret\n * @param {string} secretId secret id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteSecret(secretId: string): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting secret ${secretId}...`\n );\n try {\n await _deleteSecret(secretId);\n stopProgressIndicator(spinnerId, `Deleted secret ${secretId}`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Delete all secrets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteSecrets(): Promise<boolean> {\n let outcome = false;\n let secrets: SecretSkeleton[] = [];\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading secrets...`\n );\n try {\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n stopProgressIndicator(\n spinnerId,\n `Successfully read ${secrets.length} secrets.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading secrets: ${error.response?.data || error.message}`,\n 'fail'\n );\n }\n const indicatorId = createProgressIndicator(\n 'determinate',\n secrets.length,\n `Deleting secrets...`\n );\n try {\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressIndicator(indicatorId, `Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressIndicator(indicatorId, `Secrets deleted.`);\n outcome = true;\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n return outcome;\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listSecretVersions(secretId): Promise<boolean> {\n let outcome = false;\n let spinnerId: string;\n let versions: VersionOfSecretSkeleton[] = [];\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading secret versions...`\n );\n versions = await readVersionsOfSecret(secretId);\n stopProgressIndicator(\n spinnerId,\n `Successfully read ${versions.length} secret versions.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading secret versions: ${error.response?.data || error.message}`,\n 'fail'\n );\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n outcome = true;\n return outcome;\n}\n\n/**\n * Describe a secret\n * @param {string} secretId Secret id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeSecret(secretId: string): Promise<boolean> {\n let outcome = false;\n let spinnerId: string;\n let secret: SecretSkeleton = null;\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading secret ${secretId}...`\n );\n secret = await readSecret(secretId);\n stopProgressIndicator(\n spinnerId,\n `Successfully read secret ${secretId}.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading secret ${secretId}: ${\n error.response?.data || error.message\n }`,\n 'fail'\n );\n }\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n let lastChangedBy = secret.lastChangedBy;\n try {\n lastChangedBy = state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy);\n } catch (error) {\n // ignore\n }\n table.push(['Modifier'['brightCyan'], lastChangedBy]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString(), 'data');\n printMessage('\\nSecret Versions:', 'data');\n await listSecretVersions(secretId);\n outcome = true;\n return outcome;\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null,\n includeMeta: boolean\n): Promise<boolean> {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n let spinnerId: string;\n try {\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting secret ${secretId}`\n );\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath, includeMeta);\n stopProgressIndicator(\n spinnerId,\n `Exported ${secretId['brightCyan']} to ${filePath['brightCyan']}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error exporting secret: ${error.response?.data || error.message}`,\n 'fail'\n );\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [outcome=${outcome}, secretId=${secretId}, file=${file}]`\n );\n return outcome;\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSecretsToFile(\n file: string,\n includeMeta: boolean\n): Promise<boolean> {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true), includeMeta);\n outcome = true;\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n return outcome;\n}\n\n/**\n * Export all secrets to individual files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSecretsToFiles(\n includeMeta: boolean\n): Promise<boolean> {\n let outcome = false;\n let secrets: SecretSkeleton[] = [];\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Reading secrets...`\n );\n try {\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n stopProgressIndicator(\n spinnerId,\n `Successfully read ${secrets.length} secrets.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error reading secrets: ${error.response?.data || error.message}`,\n 'fail'\n );\n }\n const indicatorId = createProgressIndicator(\n 'determinate',\n secrets.length,\n 'Exporting secrets'\n );\n for (const secret of secrets) {\n updateProgressIndicator(indicatorId, `Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile(\n 'secret',\n secret,\n '_id',\n getFilePath(fileName, true),\n includeMeta\n );\n }\n stopProgressIndicator(indicatorId, `${secrets.length} secrets exported.`);\n outcome = true;\n return outcome;\n}\n\n/**\n * Create new version of secret\n * @param {string} secretId secret id\n * @param {string} value secret value\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function createVersionOfSecret(\n secretId: string,\n value: string\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Creating new version of secret ${secretId}...`\n );\n try {\n const version = await _createVersionOfSecret(secretId, value);\n stopProgressIndicator(\n spinnerId,\n `Created version ${version.version} of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Create new version of secret from file\n * @param {string} secretId secret id\n * @param {string} file filename\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function createVersionOfSecretFromFile(\n secretId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n const value = fs.readFileSync(getFilePath(file), 'utf8');\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Creating new version of secret ${secretId}...`\n );\n try {\n const version = await _createVersionOfSecret(secretId, value);\n stopProgressIndicator(\n spinnerId,\n `Created version ${version.version} of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function activateVersionOfSecret(\n secretId,\n version\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Activating version ${version} of secret ${secretId}...`\n );\n try {\n await enableVersionOfSecret(secretId, version);\n stopProgressIndicator(\n spinnerId,\n `Activated version ${version} of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deactivateVersionOfSecret(\n secretId,\n version\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deactivating version ${version} of secret ${secretId}...`\n );\n try {\n await disableVersionOfSecret(secretId, version);\n stopProgressIndicator(\n spinnerId,\n `Deactivated version ${version} of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteVersionOfSecret(\n secretId,\n version\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting version ${version} of secret ${secretId}...`\n );\n try {\n await _deleteVersionOfSecret(secretId, version);\n stopProgressIndicator(\n spinnerId,\n `Deleted version ${version} of secret ${secretId}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n return outcome;\n}\n"],"mappings":"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"}
|
package/esm/ops/ServiceOps.js
CHANGED
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import {
|
|
3
|
+
import { createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
+
const {
|
|
5
|
+
getRealmName,
|
|
6
|
+
getTypedFilename,
|
|
7
|
+
titleCase,
|
|
8
|
+
saveJsonToFile,
|
|
9
|
+
getFilePath,
|
|
10
|
+
getWorkingDirectory
|
|
11
|
+
} = frodo.utils;
|
|
12
|
+
const {
|
|
13
|
+
getListOfServices,
|
|
14
|
+
exportServices,
|
|
15
|
+
exportService,
|
|
16
|
+
getFullServices,
|
|
17
|
+
createServiceExportTemplate,
|
|
18
|
+
importService,
|
|
19
|
+
importServices,
|
|
20
|
+
deleteFullService,
|
|
21
|
+
deleteFullServices
|
|
22
|
+
} = frodo.service;
|
|
23
|
+
|
|
4
24
|
/**
|
|
5
25
|
* List services
|
|
6
26
|
*/
|
|
7
27
|
export async function listServices(long = false, globalConfig = false) {
|
|
8
28
|
try {
|
|
9
|
-
const services = await
|
|
29
|
+
const services = await getListOfServices(globalConfig);
|
|
10
30
|
services.sort((a, b) => a._id.localeCompare(b._id));
|
|
11
31
|
if (long) {
|
|
12
32
|
const table = createTable(['Service Id', 'Service Name']);
|
|
13
33
|
for (const service of services) {
|
|
14
|
-
table.push([service._id, service.name]);
|
|
34
|
+
table.push([service._id, globalConfig ? service['_type'].name : service.name]);
|
|
15
35
|
}
|
|
16
36
|
printMessage(table.toString(), 'data');
|
|
17
37
|
} else {
|
|
@@ -28,42 +48,46 @@ export async function listServices(long = false, globalConfig = false) {
|
|
|
28
48
|
/**
|
|
29
49
|
* Export all services to file
|
|
30
50
|
* @param {string} file file name
|
|
51
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
31
52
|
*/
|
|
32
|
-
export async function exportServicesToFile(file, globalConfig = false) {
|
|
33
|
-
const exportData = await
|
|
34
|
-
let fileName =
|
|
53
|
+
export async function exportServicesToFile(file, globalConfig = false, includeMeta = true) {
|
|
54
|
+
const exportData = await exportServices(globalConfig);
|
|
55
|
+
let fileName = getTypedFilename(`all${globalConfig ? 'Global' : titleCase(getRealmName(state.getRealm()))}Services`, `service`);
|
|
35
56
|
if (file) {
|
|
36
57
|
fileName = file;
|
|
37
58
|
}
|
|
38
|
-
|
|
59
|
+
saveJsonToFile(exportData, getFilePath(fileName, true), includeMeta);
|
|
39
60
|
}
|
|
40
61
|
|
|
41
62
|
/**
|
|
42
63
|
* Export service to file
|
|
43
64
|
* @param {string} serviceId service id
|
|
44
65
|
* @param {string} file file name
|
|
66
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
45
67
|
*/
|
|
46
|
-
export async function exportServiceToFile(serviceId, file, globalConfig = false) {
|
|
47
|
-
const exportData = await
|
|
48
|
-
let fileName =
|
|
68
|
+
export async function exportServiceToFile(serviceId, file, globalConfig = false, includeMeta = true) {
|
|
69
|
+
const exportData = await exportService(serviceId, globalConfig);
|
|
70
|
+
let fileName = getTypedFilename(serviceId, `service`);
|
|
49
71
|
if (file) {
|
|
50
72
|
fileName = file;
|
|
51
73
|
}
|
|
52
|
-
|
|
74
|
+
saveJsonToFile(exportData, getFilePath(fileName, true), includeMeta);
|
|
53
75
|
}
|
|
54
76
|
|
|
55
77
|
/**
|
|
56
78
|
* Export all services to separate files
|
|
79
|
+
* @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
|
|
57
80
|
*/
|
|
58
|
-
export async function exportServicesToFiles(globalConfig = false) {
|
|
81
|
+
export async function exportServicesToFiles(globalConfig = false, includeMeta = true) {
|
|
59
82
|
debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);
|
|
60
|
-
const services = await
|
|
83
|
+
const services = await getFullServices(globalConfig);
|
|
61
84
|
for (const service of services) {
|
|
62
|
-
const fileName =
|
|
63
|
-
const
|
|
85
|
+
const fileName = getTypedFilename(service._type._id, `service`);
|
|
86
|
+
const filePath = getFilePath(fileName, true);
|
|
87
|
+
const exportData = createServiceExportTemplate();
|
|
64
88
|
exportData.service[service._type._id] = service;
|
|
65
|
-
debugMessage(`cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${
|
|
66
|
-
|
|
89
|
+
debugMessage(`cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${filePath}`);
|
|
90
|
+
saveJsonToFile(exportData, filePath, includeMeta);
|
|
67
91
|
}
|
|
68
92
|
debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);
|
|
69
93
|
}
|
|
@@ -72,24 +96,29 @@ export async function exportServicesToFiles(globalConfig = false) {
|
|
|
72
96
|
* Import a service from file
|
|
73
97
|
* @param {string} serviceId service id/name
|
|
74
98
|
* @param {string} file import file name
|
|
75
|
-
* @param {
|
|
99
|
+
* @param {ServiceImportOptions} options import options
|
|
76
100
|
*/
|
|
77
|
-
export async function importServiceFromFile(serviceId, file,
|
|
78
|
-
|
|
101
|
+
export async function importServiceFromFile(serviceId, file, options = {
|
|
102
|
+
clean: false,
|
|
103
|
+
global: false,
|
|
104
|
+
realm: false
|
|
105
|
+
}) {
|
|
106
|
+
const filePath = getFilePath(file);
|
|
107
|
+
debugMessage(`cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${filePath}]`);
|
|
79
108
|
const verbose = state.getVerbose();
|
|
80
|
-
fs.readFile(
|
|
109
|
+
fs.readFile(filePath, 'utf8', async (err, data) => {
|
|
81
110
|
if (err) throw err;
|
|
82
111
|
const importData = JSON.parse(data);
|
|
83
112
|
if (importData && importData.service[serviceId]) {
|
|
84
113
|
if (!verbose) showSpinner(`Importing ${serviceId}...`);
|
|
85
114
|
try {
|
|
86
115
|
if (verbose) showSpinner(`Importing ${serviceId}...`);
|
|
87
|
-
await
|
|
116
|
+
await importService(serviceId, importData, options);
|
|
88
117
|
succeedSpinner(`Imported ${serviceId}.`);
|
|
89
118
|
} catch (importError) {
|
|
90
|
-
var _importError$response, _importError$response2
|
|
91
|
-
const message = (_importError$response = importError.response) === null || _importError$response === void 0
|
|
92
|
-
const detail = (_importError$
|
|
119
|
+
var _importError$response, _importError$response2;
|
|
120
|
+
const message = (_importError$response = importError.response) === null || _importError$response === void 0 || (_importError$response = _importError$response.data) === null || _importError$response === void 0 ? void 0 : _importError$response.message;
|
|
121
|
+
const detail = (_importError$response2 = importError.response) === null || _importError$response2 === void 0 || (_importError$response2 = _importError$response2.data) === null || _importError$response2 === void 0 ? void 0 : _importError$response2.detail;
|
|
93
122
|
if (verbose) showSpinner(`Importing ${serviceId}...`);
|
|
94
123
|
failSpinner(`${detail ? message + ' - ' + detail : message}`);
|
|
95
124
|
}
|
|
@@ -98,18 +127,23 @@ export async function importServiceFromFile(serviceId, file, clean, globalConfig
|
|
|
98
127
|
failSpinner(`${serviceId} not found!`);
|
|
99
128
|
}
|
|
100
129
|
});
|
|
101
|
-
debugMessage(`cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${
|
|
130
|
+
debugMessage(`cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${filePath}]`);
|
|
102
131
|
}
|
|
103
132
|
|
|
104
133
|
/**
|
|
105
134
|
* Import first service from file
|
|
106
135
|
* @param {string} file import file name
|
|
107
|
-
* @param {
|
|
136
|
+
* @param {ServiceImportOptions} options import options
|
|
108
137
|
*/
|
|
109
|
-
export async function importFirstServiceFromFile(file,
|
|
110
|
-
|
|
138
|
+
export async function importFirstServiceFromFile(file, options = {
|
|
139
|
+
clean: false,
|
|
140
|
+
global: false,
|
|
141
|
+
realm: false
|
|
142
|
+
}) {
|
|
143
|
+
const filePath = getFilePath(file);
|
|
144
|
+
debugMessage(`cli.ServiceOps.importFirstServiceFromFile: start [file=${filePath}]`);
|
|
111
145
|
const verbose = state.getVerbose();
|
|
112
|
-
fs.readFile(
|
|
146
|
+
fs.readFile(filePath, 'utf8', async (err, data) => {
|
|
113
147
|
if (err) throw err;
|
|
114
148
|
const importData = JSON.parse(data);
|
|
115
149
|
if (importData && Object.keys(importData.service).length) {
|
|
@@ -117,54 +151,63 @@ export async function importFirstServiceFromFile(file, clean, globalConfig = fal
|
|
|
117
151
|
if (!verbose) showSpinner(`Importing ${serviceId}...`);
|
|
118
152
|
try {
|
|
119
153
|
if (verbose) showSpinner(`Importing ${serviceId}...`);
|
|
120
|
-
await
|
|
154
|
+
await importService(serviceId, importData, options);
|
|
121
155
|
succeedSpinner(`Imported ${serviceId}.`);
|
|
122
156
|
} catch (importError) {
|
|
123
|
-
var _importError$
|
|
124
|
-
const message = (_importError$
|
|
125
|
-
const detail = (_importError$
|
|
157
|
+
var _importError$response3, _importError$response4;
|
|
158
|
+
const message = (_importError$response3 = importError.response) === null || _importError$response3 === void 0 || (_importError$response3 = _importError$response3.data) === null || _importError$response3 === void 0 ? void 0 : _importError$response3.message;
|
|
159
|
+
const detail = (_importError$response4 = importError.response) === null || _importError$response4 === void 0 || (_importError$response4 = _importError$response4.data) === null || _importError$response4 === void 0 ? void 0 : _importError$response4.detail;
|
|
126
160
|
if (verbose) showSpinner(`Importing ${serviceId}...`);
|
|
127
161
|
failSpinner(`${detail ? message + ' - ' + detail : message}`);
|
|
128
162
|
}
|
|
129
163
|
} else {
|
|
130
164
|
showSpinner(`Importing service...`);
|
|
131
|
-
failSpinner(`No service found in ${
|
|
165
|
+
failSpinner(`No service found in ${filePath}!`);
|
|
132
166
|
}
|
|
133
|
-
debugMessage(`cli.ServiceOps.importFirstServiceFromFile: end [file=${
|
|
167
|
+
debugMessage(`cli.ServiceOps.importFirstServiceFromFile: end [file=${filePath}]`);
|
|
134
168
|
});
|
|
135
169
|
}
|
|
136
170
|
|
|
137
171
|
/**
|
|
138
172
|
* Import services from file
|
|
139
173
|
* @param {String} file file name
|
|
140
|
-
* @param {
|
|
174
|
+
* @param {ServiceImportOptions} options import options
|
|
141
175
|
*/
|
|
142
|
-
export async function importServicesFromFile(file,
|
|
143
|
-
|
|
144
|
-
|
|
176
|
+
export async function importServicesFromFile(file, options = {
|
|
177
|
+
clean: false,
|
|
178
|
+
global: false,
|
|
179
|
+
realm: false
|
|
180
|
+
}) {
|
|
181
|
+
const filePath = getFilePath(file);
|
|
182
|
+
debugMessage(`cli.ServiceOps.importServiceFromFile: start [file=${filePath}]`);
|
|
183
|
+
fs.readFile(filePath, 'utf8', async (err, data) => {
|
|
145
184
|
if (err) throw err;
|
|
146
|
-
debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${
|
|
185
|
+
debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${filePath}`);
|
|
147
186
|
const importData = JSON.parse(data);
|
|
148
187
|
try {
|
|
149
|
-
await
|
|
188
|
+
await importServices(importData, options);
|
|
150
189
|
} catch (error) {
|
|
151
190
|
printMessage(`${error.message}`, 'error');
|
|
152
191
|
printMessage(error.response.status, 'error');
|
|
153
192
|
}
|
|
154
|
-
debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${
|
|
193
|
+
debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${filePath}]`);
|
|
155
194
|
});
|
|
156
195
|
}
|
|
157
196
|
|
|
158
197
|
/**
|
|
159
198
|
* Import all services from separate files
|
|
160
|
-
* @param {
|
|
199
|
+
* @param {ServiceImportOptions} options import options
|
|
161
200
|
*/
|
|
162
|
-
export async function importServicesFromFiles(
|
|
201
|
+
export async function importServicesFromFiles(options = {
|
|
202
|
+
clean: false,
|
|
203
|
+
global: false,
|
|
204
|
+
realm: false
|
|
205
|
+
}) {
|
|
163
206
|
debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);
|
|
164
|
-
const names = fs.readdirSync(
|
|
165
|
-
const
|
|
166
|
-
for (const file of
|
|
167
|
-
await importServicesFromFile(file,
|
|
207
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
208
|
+
const serviceFiles = names.filter(name => name.toLowerCase().endsWith('.service.json'));
|
|
209
|
+
for (const file of serviceFiles) {
|
|
210
|
+
await importServicesFromFile(file, options);
|
|
168
211
|
}
|
|
169
212
|
debugMessage(`cli.ServiceOps.importServicesFromFiles: end`);
|
|
170
213
|
}
|
|
@@ -175,10 +218,10 @@ export async function importServicesFromFiles(clean, globalConfig = false) {
|
|
|
175
218
|
*/
|
|
176
219
|
export async function deleteService(serviceId, globalConfig = false) {
|
|
177
220
|
try {
|
|
178
|
-
await
|
|
221
|
+
await deleteFullService(serviceId, globalConfig);
|
|
179
222
|
} catch (error) {
|
|
180
|
-
var _error$response
|
|
181
|
-
const message = (_error$response = error.response) === null || _error$response === void 0
|
|
223
|
+
var _error$response;
|
|
224
|
+
const message = (_error$response = error.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 ? void 0 : _error$response.message;
|
|
182
225
|
printMessage(`Delete service '${serviceId}': ${message}`, 'error');
|
|
183
226
|
}
|
|
184
227
|
}
|
|
@@ -187,6 +230,6 @@ export async function deleteService(serviceId, globalConfig = false) {
|
|
|
187
230
|
* Delete all services
|
|
188
231
|
*/
|
|
189
232
|
export async function deleteServices(globalConfig = false) {
|
|
190
|
-
await
|
|
233
|
+
await deleteFullServices(globalConfig);
|
|
191
234
|
}
|
|
192
|
-
//# sourceMappingURL=ServiceOps.js.map
|
|
235
|
+
//# sourceMappingURL=ServiceOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceOps.js","names":["frodo","state","fs","printMessage","createTable","debugMessage","showSpinner","succeedSpinner","failSpinner","listServices","long","globalConfig","services","service","getListOfServices","sort","a","b","_id","localeCompare","table","push","name","toString","error","stack","exportServicesToFile","file","exportData","exportServices","fileName","utils","impex","getTypedFilename","titleCase","helper","getRealmName","getRealm","saveJsonToFile","exportServiceToFile","serviceId","exportService","exportServicesToFiles","getFullServices","_type","createServiceExportTemplate","importServiceFromFile","clean","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importService","importError","_importError$response","_importError$response2","_importError$response3","_importError$response4","message","response","detail","importFirstServiceFromFile","Object","keys","length","_importError$response5","_importError$response6","_importError$response7","_importError$response8","importServicesFromFile","importServices","status","importServicesFromFiles","names","readdirSync","getWorkingDirectory","agentFiles","filter","toLowerCase","endsWith","deleteService","deleteFullService","_error$response","_error$response$data","deleteServices","deleteFullServices"],"sources":["ops/ServiceOps.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 { ServiceExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\n/**\n * List services\n */\nexport async function listServices(long = false, globalConfig = false) {\n try {\n const services = await frodo.service.getListOfServices(globalConfig);\n services.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Service Id', 'Service Name']);\n for (const service of services) {\n table.push([service._id, service.name]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const service of services) {\n printMessage(`${service._id}`, 'data');\n }\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all services to file\n * @param {string} file file name\n */\nexport async function exportServicesToFile(file, globalConfig = false) {\n const exportData = await frodo.service.exportServices(globalConfig);\n let fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Services`,\n `service`\n );\n if (file) {\n fileName = file;\n }\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export service to file\n * @param {string} serviceId service id\n * @param {string} file file name\n */\nexport async function exportServiceToFile(\n serviceId: string,\n file: string,\n globalConfig = false\n) {\n const exportData = await frodo.service.exportService(serviceId, globalConfig);\n let fileName = frodo.utils.impex.getTypedFilename(serviceId, `service`);\n if (file) {\n fileName = file;\n }\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all services to separate files\n */\nexport async function exportServicesToFiles(globalConfig = false) {\n debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);\n const services = await frodo.service.getFullServices(globalConfig);\n for (const service of services) {\n const fileName = frodo.utils.impex.getTypedFilename(\n service._type._id,\n `service`\n );\n const exportData = frodo.service.createServiceExportTemplate();\n exportData.service[service._type._id] = service;\n debugMessage(\n `cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${fileName}`\n );\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n }\n debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);\n}\n\n/**\n * Import a service from file\n * @param {string} serviceId service id/name\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServiceFromFile(\n serviceId: string,\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${file}]`\n );\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 (importData && importData.service[serviceId]) {\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await frodo.service.importService(\n serviceId,\n importData,\n clean,\n globalConfig\n );\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${serviceId} not found!`);\n }\n });\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${file}]`\n );\n}\n\n/**\n * Import first service from file\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importFirstServiceFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: start [file=${file}]`\n );\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 (importData && Object.keys(importData.service).length) {\n const serviceId = Object.keys(importData.service)[0];\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await frodo.service.importService(\n serviceId,\n importData,\n clean,\n globalConfig\n );\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing service...`);\n failSpinner(`No service found in ${file}!`);\n }\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: end [file=${file}]`\n );\n });\n}\n\n/**\n * Import services from file\n * @param {String} file file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(`cli.ServiceOps.importServiceFromFile: start [file=${file}]`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${file}`);\n const importData = JSON.parse(data) as ServiceExportInterface;\n try {\n await frodo.service.importServices(importData, clean, globalConfig);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${file}]`);\n });\n}\n\n/**\n * Import all services from separate files\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFiles(\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);\n const names = fs.readdirSync(frodo.utils.impex.getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.service.json')\n );\n for (const file of agentFiles) {\n await importServicesFromFile(file, clean, globalConfig);\n }\n debugMessage(`cli.ServiceOps.importServicesFromFiles: end`);\n}\n\n/**\n * Delete a service by id/name\n * @param {string} serviceId Reference to the service to delete\n */\nexport async function deleteService(serviceId: string, globalConfig = false) {\n try {\n await frodo.service.deleteFullService(serviceId, globalConfig);\n } catch (error) {\n const message = error.response?.data?.message;\n printMessage(`Delete service '${serviceId}': ${message}`, 'error');\n }\n}\n\n/**\n * Delete all services\n */\nexport async function deleteServices(globalConfig = false) {\n await frodo.service.deleteFullServices(globalConfig);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ServiceOps.js","names":["frodo","state","fs","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getRealmName","getTypedFilename","titleCase","saveJsonToFile","getFilePath","getWorkingDirectory","utils","getListOfServices","exportServices","exportService","getFullServices","createServiceExportTemplate","importService","importServices","deleteFullService","deleteFullServices","service","listServices","long","globalConfig","services","sort","a","b","_id","localeCompare","table","push","name","toString","error","stack","exportServicesToFile","file","includeMeta","exportData","fileName","getRealm","exportServiceToFile","serviceId","exportServicesToFiles","_type","filePath","importServiceFromFile","options","clean","global","realm","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","_importError$response","_importError$response2","message","response","detail","importFirstServiceFromFile","Object","keys","length","_importError$response3","_importError$response4","importServicesFromFile","status","importServicesFromFiles","names","readdirSync","serviceFiles","filter","toLowerCase","endsWith","deleteService","_error$response","deleteServices"],"sources":["../../src/ops/ServiceOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n type ServiceExportInterface,\n type ServiceImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/ServiceOps';\nimport fs from 'fs';\n\nimport {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\nconst {\n getRealmName,\n getTypedFilename,\n titleCase,\n saveJsonToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n getListOfServices,\n exportServices,\n exportService,\n getFullServices,\n createServiceExportTemplate,\n importService,\n importServices,\n deleteFullService,\n deleteFullServices,\n} = frodo.service;\n\n/**\n * List services\n */\nexport async function listServices(long = false, globalConfig = false) {\n try {\n const services = await getListOfServices(globalConfig);\n services.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Service Id', 'Service Name']);\n for (const service of services) {\n table.push([\n service._id,\n globalConfig ? service['_type'].name : service.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const service of services) {\n printMessage(`${service._id}`, 'data');\n }\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all services to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportServicesToFile(\n file,\n globalConfig = false,\n includeMeta = true\n) {\n const exportData = await exportServices(globalConfig);\n let fileName = getTypedFilename(\n `all${\n globalConfig ? 'Global' : titleCase(getRealmName(state.getRealm()))\n }Services`,\n `service`\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true), includeMeta);\n}\n\n/**\n * Export service to file\n * @param {string} serviceId service id\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportServiceToFile(\n serviceId: string,\n file: string,\n globalConfig = false,\n includeMeta = true\n) {\n const exportData = await exportService(serviceId, globalConfig);\n let fileName = getTypedFilename(serviceId, `service`);\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true), includeMeta);\n}\n\n/**\n * Export all services to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n */\nexport async function exportServicesToFiles(\n globalConfig = false,\n includeMeta = true\n) {\n debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);\n const services = await getFullServices(globalConfig);\n for (const service of services) {\n const fileName = getTypedFilename(service._type._id, `service`);\n const filePath = getFilePath(fileName, true);\n const exportData = createServiceExportTemplate();\n exportData.service[service._type._id] = service;\n debugMessage(\n `cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${filePath}`\n );\n saveJsonToFile(exportData, filePath, includeMeta);\n }\n debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);\n}\n\n/**\n * Import a service from file\n * @param {string} serviceId service id/name\n * @param {string} file import file name\n * @param {ServiceImportOptions} options import options\n */\nexport async function importServiceFromFile(\n serviceId: string,\n file: string,\n options: ServiceImportOptions = {\n clean: false,\n global: false,\n realm: false,\n }\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${filePath}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && importData.service[serviceId]) {\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await importService(serviceId, importData, options);\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${serviceId} not found!`);\n }\n });\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${filePath}]`\n );\n}\n\n/**\n * Import first service from file\n * @param {string} file import file name\n * @param {ServiceImportOptions} options import options\n */\nexport async function importFirstServiceFromFile(\n file: string,\n options: ServiceImportOptions = {\n clean: false,\n global: false,\n realm: false,\n }\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: start [file=${filePath}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && Object.keys(importData.service).length) {\n const serviceId = Object.keys(importData.service)[0];\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await importService(serviceId, importData, options);\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing service...`);\n failSpinner(`No service found in ${filePath}!`);\n }\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: end [file=${filePath}]`\n );\n });\n}\n\n/**\n * Import services from file\n * @param {String} file file name\n * @param {ServiceImportOptions} options import options\n */\nexport async function importServicesFromFile(\n file: string,\n options: ServiceImportOptions = {\n clean: false,\n global: false,\n realm: false,\n }\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [file=${filePath}]`\n );\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${filePath}`);\n const importData = JSON.parse(data) as ServiceExportInterface;\n try {\n await importServices(importData, options);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [file=${filePath}]`\n );\n });\n}\n\n/**\n * Import all services from separate files\n * @param {ServiceImportOptions} options import options\n */\nexport async function importServicesFromFiles(\n options: ServiceImportOptions = {\n clean: false,\n global: false,\n realm: false,\n }\n) {\n debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);\n const names = fs.readdirSync(getWorkingDirectory());\n const serviceFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.service.json')\n );\n for (const file of serviceFiles) {\n await importServicesFromFile(file, options);\n }\n debugMessage(`cli.ServiceOps.importServicesFromFiles: end`);\n}\n\n/**\n * Delete a service by id/name\n * @param {string} serviceId Reference to the service to delete\n */\nexport async function deleteService(serviceId: string, globalConfig = false) {\n try {\n await deleteFullService(serviceId, globalConfig);\n } catch (error) {\n const message = error.response?.data?.message;\n printMessage(`Delete service '${serviceId}': ${message}`, 'error');\n }\n}\n\n/**\n * Delete all services\n */\nexport async function deleteServices(globalConfig = false) {\n await deleteFullServices(globalConfig);\n}\n"],"mappings":"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"}
|