@rockcarver/frodo-cli 0.18.2-9 → 0.19.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/CHANGELOG.md +112 -1
- package/esm/app.js +4 -1
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +133 -0
- package/esm/cli/FrodoCommand.js.map +1 -0
- package/esm/cli/_template/something-delete.js +9 -15
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +9 -15
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +9 -15
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +9 -15
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +9 -15
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +9 -15
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +9 -15
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +8 -8
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +9 -15
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +9 -15
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +9 -15
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +9 -15
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +9 -15
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +9 -15
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +9 -15
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +9 -15
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +8 -8
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +9 -10
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -15
- 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 +9 -15
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +9 -15
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +9 -15
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +9 -15
- 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 +8 -15
- 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 +8 -15
- 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 +9 -15
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +8 -15
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +9 -15
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +9 -15
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +9 -15
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin.js +14 -15
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +8 -15
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +9 -15
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -15
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +8 -15
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +9 -15
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -15
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -15
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +9 -15
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +8 -8
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -15
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +8 -15
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +9 -15
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -15
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -15
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +9 -15
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +8 -8
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +9 -15
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +8 -15
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +9 -15
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -15
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -15
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +9 -15
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +8 -8
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +10 -11
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +9 -12
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -12
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +28 -34
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +11 -14
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +11 -14
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -10
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +5 -5
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +6 -5
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +6 -8
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +72 -0
- package/esm/cli/conn/conn-save.js.map +1 -0
- package/esm/cli/conn/conn.js +10 -8
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +27 -33
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +33 -39
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +11 -14
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +6 -6
- 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 +9 -12
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +11 -14
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +23 -29
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +11 -14
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +9 -12
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +9 -12
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +11 -14
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +11 -14
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +18 -24
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +11 -14
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +18 -24
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +23 -29
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +11 -14
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +8 -8
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +11 -11
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -14
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +23 -29
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +11 -14
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +9 -12
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +9 -12
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +11 -14
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +19 -26
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +10 -10
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +5 -6
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +12 -17
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +29 -39
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +29 -39
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +11 -17
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +6 -9
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -15
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +32 -38
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +9 -13
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +5 -6
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +19 -20
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +22 -28
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +12 -19
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +20 -26
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +20 -26
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +37 -45
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +44 -52
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +10 -13
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +9 -13
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +10 -11
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/logging/logs-fetch.js +17 -19
- package/esm/cli/logging/logs-fetch.js.map +1 -1
- package/esm/cli/logging/logs-list.js +19 -25
- package/esm/cli/logging/logs-list.js.map +1 -1
- package/esm/cli/logging/logs-tail.js +17 -19
- package/esm/cli/logging/logs-tail.js.map +1 -1
- package/esm/cli/logging/logs.js +7 -6
- package/esm/cli/logging/logs.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +11 -14
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +10 -14
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +11 -14
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -14
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +7 -8
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +27 -36
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +32 -41
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +10 -16
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +6 -6
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +8 -15
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +10 -16
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +9 -16
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +45 -54
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +11 -17
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +21 -30
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +4 -4
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +9 -10
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +9 -12
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +9 -12
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +28 -34
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +10 -13
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +10 -13
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +7 -8
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +10 -16
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +12 -17
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +12 -18
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +9 -15
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +6 -7
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +12 -19
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +12 -19
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +14 -21
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +10 -16
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +6 -7
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +30 -0
- package/esm/ops/ConnectionProfileOps.js.map +1 -0
- package/esm/ops/IdmOps.js +317 -0
- package/esm/ops/IdmOps.js.map +1 -0
- package/esm/ops/JourneyOps.js +2 -1
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +20 -20
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/utils/Console.js +15 -25
- package/esm/utils/Console.js.map +1 -1
- package/package.json +6 -6
- package/esm/cli/cmd_common.js +0 -79
- package/esm/cli/cmd_common.js.map +0 -1
- package/esm/cli/conn/conn-add.js +0 -37
- package/esm/cli/conn/conn-add.js.map +0 -1
- package/esm/cli/journey/journey-delete.e2e.test_.js.map +0 -1
- package/esm/cli/journey/journey-list.e2e.test_.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-list.js","names":["
|
|
1
|
+
{"version":3,"file":"service-list.js","names":["FrodoCommand","Option","Authenticate","listServices","verboseMessage","getTokens","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","long","global","process","exitCode","parse"],"sources":["cli/service/service-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { listServices } from '../../ops/ServiceOps.js';\nimport { verboseMessage } from '../../utils/Console.js';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo service list');\n\nprogram\n .description('List AM services.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .addOption(new Option('-g, --global', 'List global services.'))\n .action(async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing all AM services for realm: ${realm}`);\n await listServices(options.long, options.global);\n } else {\n process.exitCode = 1;\n }\n });\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,MAAM;EAAEC;AAAU,CAAC,GAAGH,YAAY;AAElC,MAAMI,OAAO,GAAG,IAAIN,YAAY,CAAC,oBAAoB,CAAC;AAEtDM,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,SAAS,CACR,IAAIP,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAC1E,CACAD,SAAS,CAAC,IAAIP,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAC9DS,MAAM,CAAC,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAC/DA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD,IAAI,MAAMX,SAAS,EAAE,EAAE;IACrBD,cAAc,CAAE,sCAAqCQ,KAAM,EAAC,CAAC;IAC7D,MAAMT,YAAY,CAACY,OAAO,CAACG,IAAI,EAAEH,OAAO,CAACI,MAAM,CAAC;EAClD,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF,CAAC,CAAC;AAEJf,OAAO,CAACgB,KAAK,EAAE"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FrodoStubCommand } from '../FrodoCommand';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
export default function setup() {
|
|
6
|
-
const program = new
|
|
7
|
-
program.command('list', 'List AM services.')
|
|
8
|
-
program.command('export', 'Export AM services.')
|
|
9
|
-
program.command('import', 'Import AM services.')
|
|
10
|
-
program.command('delete', 'Delete AM services.')
|
|
11
|
-
program.showHelpAfterError();
|
|
6
|
+
const program = new FrodoStubCommand('service').description('Manage AM services.').executableDir(__dirname);
|
|
7
|
+
program.command('list', 'List AM services.');
|
|
8
|
+
program.command('export', 'Export AM services.');
|
|
9
|
+
program.command('import', 'Import AM services.');
|
|
10
|
+
program.command('delete', 'Delete AM services.');
|
|
12
11
|
return program;
|
|
13
12
|
}
|
|
14
13
|
//# sourceMappingURL=service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","names":["
|
|
1
|
+
{"version":3,"file":"service.js","names":["FrodoStubCommand","path","fileURLToPath","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["cli/service/service.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('service')\n .description('Manage AM services.')\n .executableDir(__dirname);\n\n program.command('list', 'List AM services.');\n\n program.command('export', 'Export AM services.');\n\n program.command('import', 'Import AM services.');\n\n program.command('delete', 'Delete AM services.');\n\n return program;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAK,GAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIT,gBAAgB,CAAC,SAAS,CAAC,CAC5CU,WAAW,CAAC,qBAAqB,CAAC,CAClCC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhD,OAAOH,OAAO;AAChB"}
|
|
@@ -1,43 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
2
3
|
import { Authenticate, state } from '@rockcarver/frodo-lib';
|
|
3
|
-
import
|
|
4
|
-
import { printMessage } from '../../utils/Console';
|
|
4
|
+
import { printMessage, verboseMessage } from '../../utils/Console';
|
|
5
5
|
import { deleteThemeByNameCmd, deleteThemeCmd, deleteAllThemes } from '../../ops/ThemeOps';
|
|
6
6
|
const {
|
|
7
7
|
getTokens
|
|
8
8
|
} = Authenticate;
|
|
9
|
-
const program = new
|
|
10
|
-
program.description('Delete themes.').
|
|
9
|
+
const program = new FrodoCommand('frodo theme delete');
|
|
10
|
+
program.description('Delete themes.').addOption(new Option('-n, --theme-name <name>', 'Name of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-i, --theme-id <uuid>', 'Uuid of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-a, --all', 'Delete all the themes in the realm. Ignored with -n and -i.')).action(
|
|
11
11
|
// implement command logic inside action handler
|
|
12
|
-
async (host, realm, user, password, options) => {
|
|
13
|
-
|
|
14
|
-
state.default.session.setRealm(realm);
|
|
15
|
-
state.default.session.setUsername(user);
|
|
16
|
-
state.default.session.setPassword(password);
|
|
17
|
-
state.default.session.setDeploymentType(options.type);
|
|
18
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
19
|
-
state.default.session.setVerbose(options.verbose);
|
|
20
|
-
state.default.session.setDebug(options.debug);
|
|
21
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
12
|
+
async (host, realm, user, password, options, command) => {
|
|
13
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
22
14
|
// delete by name
|
|
23
15
|
if (options.themeName && (await getTokens())) {
|
|
24
|
-
|
|
16
|
+
verboseMessage(`Deleting theme with name "${options.themeName}" from realm "${state.getRealm()}"...`);
|
|
25
17
|
deleteThemeByNameCmd(options.themeName);
|
|
26
18
|
}
|
|
27
19
|
// delete by id
|
|
28
20
|
else if (options.themeId && (await getTokens())) {
|
|
29
|
-
|
|
21
|
+
verboseMessage(`Deleting theme with id "${options.themeId}" from realm "${state.getRealm()}"...`);
|
|
30
22
|
deleteThemeCmd(options.themeId);
|
|
31
23
|
}
|
|
32
24
|
// --all -a
|
|
33
25
|
else if (options.all && (await getTokens())) {
|
|
34
|
-
|
|
26
|
+
verboseMessage(`Deleting all themes from realm "${state.getRealm()}"...`);
|
|
35
27
|
deleteAllThemes();
|
|
36
28
|
}
|
|
37
29
|
// unrecognized combination of options or no options
|
|
38
30
|
else {
|
|
39
|
-
printMessage('Unrecognized combination of options or no options...');
|
|
31
|
+
printMessage('Unrecognized combination of options or no options...', 'error');
|
|
40
32
|
program.help();
|
|
33
|
+
process.exitCode = 1;
|
|
41
34
|
}
|
|
42
35
|
}
|
|
43
36
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-delete.js","names":["
|
|
1
|
+
{"version":3,"file":"theme-delete.js","names":["FrodoCommand","Option","Authenticate","state","printMessage","verboseMessage","deleteThemeByNameCmd","deleteThemeCmd","deleteAllThemes","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","themeName","getRealm","themeId","all","help","process","exitCode","parse"],"sources":["cli/theme/theme-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate, state } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport {\n deleteThemeByNameCmd,\n deleteThemeCmd,\n deleteAllThemes,\n} from '../../ops/ThemeOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo theme delete');\n\nprogram\n .description('Delete themes.')\n .addOption(\n new Option(\n '-n, --theme-name <name>',\n 'Name of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-i, --theme-id <uuid>',\n 'Uuid of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all the themes in the realm. Ignored with -n and -i.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by name\n if (options.themeName && (await getTokens())) {\n verboseMessage(\n `Deleting theme with name \"${\n options.themeName\n }\" from realm \"${state.getRealm()}\"...`\n );\n deleteThemeByNameCmd(options.themeName);\n }\n // delete by id\n else if (options.themeId && (await getTokens())) {\n verboseMessage(\n `Deleting theme with id \"${\n options.themeId\n }\" from realm \"${state.getRealm()}\"...`\n );\n deleteThemeCmd(options.themeId);\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage(\n `Deleting all themes from realm \"${state.getRealm()}\"...`\n );\n deleteAllThemes();\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,EAAEC,KAAK,QAAQ,uBAAuB;AAC3D,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SACEC,oBAAoB,EACpBC,cAAc,EACdC,eAAe,QACV,oBAAoB;AAE3B,MAAM;EAAEC;AAAU,CAAC,GAAGP,YAAY;AAElC,MAAMQ,OAAO,GAAG,IAAIV,YAAY,CAAC,oBAAoB,CAAC;AAEtDU,OAAO,CACJC,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,SAAS,CACR,IAAIX,MAAM,CACR,yBAAyB,EACzB,yDAAyD,CAC1D,CACF,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,uBAAuB,EACvB,yDAAyD,CAC1D,CACF,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,6DAA6D,CAC9D,CACF,CACAY,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IAC5CJ,cAAc,CACX,6BACCa,OAAO,CAACG,SACT,iBAAgBlB,KAAK,CAACmB,QAAQ,EAAG,MAAK,CACxC;IACDhB,oBAAoB,CAACY,OAAO,CAACG,SAAS,CAAC;EACzC;EACA;EAAA,KACK,IAAIH,OAAO,CAACK,OAAO,KAAK,MAAMd,SAAS,EAAE,CAAC,EAAE;IAC/CJ,cAAc,CACX,2BACCa,OAAO,CAACK,OACT,iBAAgBpB,KAAK,CAACmB,QAAQ,EAAG,MAAK,CACxC;IACDf,cAAc,CAACW,OAAO,CAACK,OAAO,CAAC;EACjC;EACA;EAAA,KACK,IAAIL,OAAO,CAACM,GAAG,KAAK,MAAMf,SAAS,EAAE,CAAC,EAAE;IAC3CJ,cAAc,CACX,mCAAkCF,KAAK,CAACmB,QAAQ,EAAG,MAAK,CAC1D;IACDd,eAAe,EAAE;EACnB;EACA;EAAA,KACK;IACHJ,YAAY,CACV,sDAAsD,EACtD,OAAO,CACR;IACDM,OAAO,CAACe,IAAI,EAAE;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHjB,OAAO,CAACkB,KAAK,EAAE"}
|
|
@@ -1,48 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
2
3
|
import { Authenticate, state } from '@rockcarver/frodo-lib';
|
|
3
|
-
import
|
|
4
|
-
import { printMessage } from '../../utils/Console';
|
|
4
|
+
import { printMessage, verboseMessage } from '../../utils/Console';
|
|
5
5
|
import { exportThemeById, exportThemeByName, exportThemesToFile, exportThemesToFiles } from '../../ops/ThemeOps';
|
|
6
6
|
const {
|
|
7
7
|
getTokens
|
|
8
8
|
} = Authenticate;
|
|
9
|
-
const program = new
|
|
10
|
-
program.description('Export themes.').
|
|
9
|
+
const program = new FrodoCommand('frodo theme export');
|
|
10
|
+
program.description('Export themes.').addOption(new Option('-n, --theme-name <name>', 'Name of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-i, --theme-id <uuid>', 'Uuid of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file [file]', 'Name of the file to write the exported theme(s) to. Ignored with -A.')).addOption(new Option('-a, --all', 'Export all the themes in a realm to a single file. Ignored with -n and -i.')).addOption(new Option('-A, --all-separate', 'Export all the themes in a realm as separate files <theme name>.theme.json. Ignored with -n, -i, and -a.')).action(
|
|
11
11
|
// implement command logic inside action handler
|
|
12
|
-
async (host, realm, user, password, options) => {
|
|
13
|
-
|
|
14
|
-
state.default.session.setRealm(realm);
|
|
15
|
-
state.default.session.setUsername(user);
|
|
16
|
-
state.default.session.setPassword(password);
|
|
17
|
-
state.default.session.setDeploymentType(options.type);
|
|
18
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
19
|
-
state.default.session.setVerbose(options.verbose);
|
|
20
|
-
state.default.session.setDebug(options.debug);
|
|
21
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
12
|
+
async (host, realm, user, password, options, command) => {
|
|
13
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
22
14
|
// export by name
|
|
23
15
|
if (options.themeName && (await getTokens())) {
|
|
24
|
-
|
|
16
|
+
verboseMessage(`Exporting theme "${options.themeName}" from realm "${state.getRealm()}"...`);
|
|
25
17
|
exportThemeByName(options.themeName, options.file);
|
|
26
18
|
}
|
|
27
19
|
// export by id
|
|
28
20
|
else if (options.themeId && (await getTokens())) {
|
|
29
|
-
|
|
21
|
+
verboseMessage(`Exporting theme "${options.themeId}" from realm "${state.getRealm()}"...`);
|
|
30
22
|
exportThemeById(options.themeId, options.file);
|
|
31
23
|
}
|
|
32
24
|
// --all -a
|
|
33
25
|
else if (options.all && (await getTokens())) {
|
|
34
|
-
|
|
26
|
+
verboseMessage('Exporting all themes to a single file...');
|
|
35
27
|
exportThemesToFile(options.file);
|
|
36
28
|
}
|
|
37
29
|
// --all-separate -A
|
|
38
30
|
else if (options.allSeparate && (await getTokens())) {
|
|
39
|
-
|
|
31
|
+
verboseMessage('Exporting all themes to separate files...');
|
|
40
32
|
exportThemesToFiles();
|
|
41
33
|
}
|
|
42
34
|
// unrecognized combination of options or no options
|
|
43
35
|
else {
|
|
44
36
|
printMessage('Unrecognized combination of options or no options...', 'error');
|
|
45
37
|
program.help();
|
|
38
|
+
process.exitCode = 1;
|
|
46
39
|
}
|
|
47
40
|
}
|
|
48
41
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-export.js","names":["
|
|
1
|
+
{"version":3,"file":"theme-export.js","names":["FrodoCommand","Option","Authenticate","state","printMessage","verboseMessage","exportThemeById","exportThemeByName","exportThemesToFile","exportThemesToFiles","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","themeName","getRealm","file","themeId","all","allSeparate","help","process","exitCode","parse"],"sources":["cli/theme/theme-export.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate, state } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport {\n exportThemeById,\n exportThemeByName,\n exportThemesToFile,\n exportThemesToFiles,\n} from '../../ops/ThemeOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo theme export');\n\nprogram\n .description('Export themes.')\n .addOption(\n new Option(\n '-n, --theme-name <name>',\n 'Name of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-i, --theme-id <uuid>',\n 'Uuid of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file [file]',\n 'Name of the file to write the exported theme(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the themes in a realm to a single file. Ignored with -n and -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the themes in a realm as separate files <theme name>.theme.json. Ignored with -n, -i, and -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // export by name\n if (options.themeName && (await getTokens())) {\n verboseMessage(\n `Exporting theme \"${\n options.themeName\n }\" from realm \"${state.getRealm()}\"...`\n );\n exportThemeByName(options.themeName, options.file);\n }\n // export by id\n else if (options.themeId && (await getTokens())) {\n verboseMessage(\n `Exporting theme \"${\n options.themeId\n }\" from realm \"${state.getRealm()}\"...`\n );\n exportThemeById(options.themeId, options.file);\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all themes to a single file...');\n exportThemesToFile(options.file);\n }\n // --all-separate -A\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Exporting all themes to separate files...');\n exportThemesToFiles();\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,EAAEC,KAAK,QAAQ,uBAAuB;AAC3D,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SACEC,eAAe,EACfC,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,QACd,oBAAoB;AAE3B,MAAM;EAAEC;AAAU,CAAC,GAAGR,YAAY;AAElC,MAAMS,OAAO,GAAG,IAAIX,YAAY,CAAC,oBAAoB,CAAC;AAEtDW,OAAO,CACJC,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,SAAS,CACR,IAAIZ,MAAM,CACR,yBAAyB,EACzB,yDAAyD,CAC1D,CACF,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,uBAAuB,EACvB,yDAAyD,CAC1D,CACF,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,mBAAmB,EACnB,sEAAsE,CACvE,CACF,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,WAAW,EACX,4EAA4E,CAC7E,CACF,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,oBAAoB,EACpB,0GAA0G,CAC3G,CACF,CACAa,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IAC5CL,cAAc,CACX,oBACCc,OAAO,CAACG,SACT,iBAAgBnB,KAAK,CAACoB,QAAQ,EAAG,MAAK,CACxC;IACDhB,iBAAiB,CAACY,OAAO,CAACG,SAAS,EAAEH,OAAO,CAACK,IAAI,CAAC;EACpD;EACA;EAAA,KACK,IAAIL,OAAO,CAACM,OAAO,KAAK,MAAMf,SAAS,EAAE,CAAC,EAAE;IAC/CL,cAAc,CACX,oBACCc,OAAO,CAACM,OACT,iBAAgBtB,KAAK,CAACoB,QAAQ,EAAG,MAAK,CACxC;IACDjB,eAAe,CAACa,OAAO,CAACM,OAAO,EAAEN,OAAO,CAACK,IAAI,CAAC;EAChD;EACA;EAAA,KACK,IAAIL,OAAO,CAACO,GAAG,KAAK,MAAMhB,SAAS,EAAE,CAAC,EAAE;IAC3CL,cAAc,CAAC,0CAA0C,CAAC;IAC1DG,kBAAkB,CAACW,OAAO,CAACK,IAAI,CAAC;EAClC;EACA;EAAA,KACK,IAAIL,OAAO,CAACQ,WAAW,KAAK,MAAMjB,SAAS,EAAE,CAAC,EAAE;IACnDL,cAAc,CAAC,2CAA2C,CAAC;IAC3DI,mBAAmB,EAAE;EACvB;EACA;EAAA,KACK;IACHL,YAAY,CACV,sDAAsD,EACtD,OAAO,CACR;IACDO,OAAO,CAACiB,IAAI,EAAE;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHnB,OAAO,CAACoB,KAAK,EAAE"}
|
|
@@ -1,53 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
3
|
import { Authenticate, state } from '@rockcarver/frodo-lib';
|
|
4
|
-
import { printMessage } from '../../utils/Console';
|
|
4
|
+
import { printMessage, verboseMessage } from '../../utils/Console';
|
|
5
5
|
import { importFirstThemeFromFile, importThemeById, importThemeByName, importThemesFromFile, importThemesFromFiles } from '../../ops/ThemeOps';
|
|
6
6
|
const {
|
|
7
7
|
getTokens
|
|
8
8
|
} = Authenticate;
|
|
9
|
-
const program = new
|
|
10
|
-
program.description('Import themes.').
|
|
9
|
+
const program = new FrodoCommand('frodo theme import');
|
|
10
|
+
program.description('Import themes.').addOption(new Option('-n, --theme-name <name>', 'Name of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-i, --theme-id <uuid>', 'Uuid of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import the theme(s) from.')).addOption(new Option('-a, --all', 'Import all the themes from single file. Ignored with -n or -i.')).addOption(new Option('-A, --all-separate', 'Import all the themes from separate files (*.json) in the current directory. Ignored with -n or -i or -a.')).action(
|
|
11
11
|
// implement command logic inside action handler
|
|
12
|
-
async (host, realm, user, password, options) => {
|
|
13
|
-
|
|
14
|
-
state.default.session.setRealm(realm);
|
|
15
|
-
state.default.session.setUsername(user);
|
|
16
|
-
state.default.session.setPassword(password);
|
|
17
|
-
state.default.session.setDeploymentType(options.type);
|
|
18
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
19
|
-
state.default.session.setVerbose(options.verbose);
|
|
20
|
-
state.default.session.setDebug(options.debug);
|
|
21
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
12
|
+
async (host, realm, user, password, options, command) => {
|
|
13
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
22
14
|
// import by name
|
|
23
15
|
if (options.file && options.themeName && (await getTokens())) {
|
|
24
|
-
|
|
16
|
+
verboseMessage(`Importing theme with name "${options.themeName}" into realm "${state.getRealm()}"...`);
|
|
25
17
|
importThemeByName(options.themeName, options.file);
|
|
26
18
|
}
|
|
27
19
|
// import by id
|
|
28
20
|
else if (options.file && options.themeId && (await getTokens())) {
|
|
29
|
-
|
|
21
|
+
verboseMessage(`Importing theme with id "${options.themeId}" into realm "${state.getRealm()}"...`);
|
|
30
22
|
importThemeById(options.themeId, options.file);
|
|
31
23
|
}
|
|
32
24
|
// --all -a
|
|
33
25
|
else if (options.all && options.file && (await getTokens())) {
|
|
34
|
-
|
|
26
|
+
verboseMessage(`Importing all themes from a single file (${options.file})...`);
|
|
35
27
|
importThemesFromFile(options.file);
|
|
36
28
|
}
|
|
37
29
|
// --all-separate -A
|
|
38
30
|
else if (options.allSeparate && !options.file && (await getTokens())) {
|
|
39
|
-
|
|
31
|
+
verboseMessage('Importing all themes from separate files in current directory...');
|
|
40
32
|
importThemesFromFiles();
|
|
41
33
|
}
|
|
42
34
|
// import single theme from file
|
|
43
35
|
else if (options.file && (await getTokens())) {
|
|
44
|
-
|
|
36
|
+
verboseMessage(`Importing first theme from file "${options.file}" into realm "${state.getRealm()}"...`);
|
|
45
37
|
importFirstThemeFromFile(options.file);
|
|
46
38
|
}
|
|
47
39
|
// unrecognized combination of options or no options
|
|
48
40
|
else {
|
|
49
|
-
printMessage('Unrecognized combination of options or no options...');
|
|
41
|
+
printMessage('Unrecognized combination of options or no options...', 'error');
|
|
50
42
|
program.help();
|
|
43
|
+
process.exitCode = 1;
|
|
51
44
|
}
|
|
52
45
|
}
|
|
53
46
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-import.js","names":["
|
|
1
|
+
{"version":3,"file":"theme-import.js","names":["FrodoCommand","Option","Authenticate","state","printMessage","verboseMessage","importFirstThemeFromFile","importThemeById","importThemeByName","importThemesFromFile","importThemesFromFiles","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","themeName","getRealm","themeId","all","allSeparate","help","process","exitCode","parse"],"sources":["cli/theme/theme-import.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate, state } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport {\n importFirstThemeFromFile,\n importThemeById,\n importThemeByName,\n importThemesFromFile,\n importThemesFromFiles,\n} from '../../ops/ThemeOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo theme import');\n\nprogram\n .description('Import themes.')\n .addOption(\n new Option(\n '-n, --theme-name <name>',\n 'Name of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-i, --theme-id <uuid>',\n 'Uuid of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the theme(s) from.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the themes from single file. Ignored with -n or -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the themes from separate files (*.json) in the current directory. Ignored with -n or -i or -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // import by name\n if (options.file && options.themeName && (await getTokens())) {\n verboseMessage(\n `Importing theme with name \"${\n options.themeName\n }\" into realm \"${state.getRealm()}\"...`\n );\n importThemeByName(options.themeName, options.file);\n }\n // import by id\n else if (options.file && options.themeId && (await getTokens())) {\n verboseMessage(\n `Importing theme with id \"${\n options.themeId\n }\" into realm \"${state.getRealm()}\"...`\n );\n importThemeById(options.themeId, options.file);\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all themes from a single file (${options.file})...`\n );\n importThemesFromFile(options.file);\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all themes from separate files in current directory...'\n );\n importThemesFromFiles();\n }\n // import single theme from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first theme from file \"${\n options.file\n }\" into realm \"${state.getRealm()}\"...`\n );\n importFirstThemeFromFile(options.file);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,EAAEC,KAAK,QAAQ,uBAAuB;AAC3D,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SACEC,wBAAwB,EACxBC,eAAe,EACfC,iBAAiB,EACjBC,oBAAoB,EACpBC,qBAAqB,QAChB,oBAAoB;AAE3B,MAAM;EAAEC;AAAU,CAAC,GAAGT,YAAY;AAElC,MAAMU,OAAO,GAAG,IAAIZ,YAAY,CAAC,oBAAoB,CAAC;AAEtDY,OAAO,CACJC,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,SAAS,CACR,IAAIb,MAAM,CACR,yBAAyB,EACzB,yDAAyD,CAC1D,CACF,CACAa,SAAS,CACR,IAAIb,MAAM,CACR,uBAAuB,EACvB,yDAAyD,CAC1D,CACF,CACAa,SAAS,CACR,IAAIb,MAAM,CACR,mBAAmB,EACnB,+CAA+C,CAChD,CACF,CACAa,SAAS,CACR,IAAIb,MAAM,CACR,WAAW,EACX,gEAAgE,CACjE,CACF,CACAa,SAAS,CACR,IAAIb,MAAM,CACR,oBAAoB,EACpB,2GAA2G,CAC5G,CACF,CACAc,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,IAAI,IAAIH,OAAO,CAACI,SAAS,KAAK,MAAMb,SAAS,EAAE,CAAC,EAAE;IAC5DN,cAAc,CACX,8BACCe,OAAO,CAACI,SACT,iBAAgBrB,KAAK,CAACsB,QAAQ,EAAG,MAAK,CACxC;IACDjB,iBAAiB,CAACY,OAAO,CAACI,SAAS,EAAEJ,OAAO,CAACG,IAAI,CAAC;EACpD;EACA;EAAA,KACK,IAAIH,OAAO,CAACG,IAAI,IAAIH,OAAO,CAACM,OAAO,KAAK,MAAMf,SAAS,EAAE,CAAC,EAAE;IAC/DN,cAAc,CACX,4BACCe,OAAO,CAACM,OACT,iBAAgBvB,KAAK,CAACsB,QAAQ,EAAG,MAAK,CACxC;IACDlB,eAAe,CAACa,OAAO,CAACM,OAAO,EAAEN,OAAO,CAACG,IAAI,CAAC;EAChD;EACA;EAAA,KACK,IAAIH,OAAO,CAACO,GAAG,IAAIP,OAAO,CAACG,IAAI,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IAC3DN,cAAc,CACX,4CAA2Ce,OAAO,CAACG,IAAK,MAAK,CAC/D;IACDd,oBAAoB,CAACW,OAAO,CAACG,IAAI,CAAC;EACpC;EACA;EAAA,KACK,IAAIH,OAAO,CAACQ,WAAW,IAAI,CAACR,OAAO,CAACG,IAAI,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IACpEN,cAAc,CACZ,kEAAkE,CACnE;IACDK,qBAAqB,EAAE;EACzB;EACA;EAAA,KACK,IAAIU,OAAO,CAACG,IAAI,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IAC5CN,cAAc,CACX,oCACCe,OAAO,CAACG,IACT,iBAAgBpB,KAAK,CAACsB,QAAQ,EAAG,MAAK,CACxC;IACDnB,wBAAwB,CAACc,OAAO,CAACG,IAAI,CAAC;EACxC;EACA;EAAA,KACK;IACHnB,YAAY,CACV,sDAAsD,EACtD,OAAO,CACR;IACDQ,OAAO,CAACiB,IAAI,EAAE;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHnB,OAAO,CAACoB,KAAK,EAAE"}
|
|
@@ -1,27 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FrodoCommand } from '../FrodoCommand';
|
|
2
|
+
import { Option } from 'commander';
|
|
2
3
|
import { Authenticate, state } from '@rockcarver/frodo-lib';
|
|
3
4
|
import { listThemes } from '../../ops/ThemeOps';
|
|
4
|
-
import
|
|
5
|
-
import { printMessage } from '../../utils/Console';
|
|
5
|
+
import { verboseMessage } from '../../utils/Console';
|
|
6
6
|
const {
|
|
7
7
|
getTokens
|
|
8
8
|
} = Authenticate;
|
|
9
|
-
const program = new
|
|
10
|
-
program.description('List themes.').
|
|
9
|
+
const program = new FrodoCommand('frodo theme list');
|
|
10
|
+
program.description('List themes.').addOption(new Option('-l, --long', 'Long with more fields.').default(false, 'false')).action(
|
|
11
11
|
// implement command logic inside action handler
|
|
12
|
-
async (host, realm, user, password, options) => {
|
|
13
|
-
|
|
14
|
-
state.default.session.setRealm(realm);
|
|
15
|
-
state.default.session.setUsername(user);
|
|
16
|
-
state.default.session.setPassword(password);
|
|
17
|
-
state.default.session.setDeploymentType(options.type);
|
|
18
|
-
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
19
|
-
state.default.session.setVerbose(options.verbose);
|
|
20
|
-
state.default.session.setDebug(options.debug);
|
|
21
|
-
state.default.session.setCurlirize(options.curlirize);
|
|
12
|
+
async (host, realm, user, password, options, command) => {
|
|
13
|
+
command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
|
|
22
14
|
if (await getTokens()) {
|
|
23
|
-
|
|
15
|
+
verboseMessage(`Listing themes in realm "${state.getRealm()}"...`);
|
|
24
16
|
listThemes(options.long);
|
|
17
|
+
} else {
|
|
18
|
+
process.exitCode = 1;
|
|
25
19
|
}
|
|
26
20
|
}
|
|
27
21
|
// end command logic inside action handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-list.js","names":["
|
|
1
|
+
{"version":3,"file":"theme-list.js","names":["FrodoCommand","Option","Authenticate","state","listThemes","verboseMessage","getTokens","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","long","process","exitCode","parse"],"sources":["cli/theme/theme-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate, state } from '@rockcarver/frodo-lib';\nimport { listThemes } from '../../ops/ThemeOps';\nimport { verboseMessage } from '../../utils/Console';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo theme list');\n\nprogram\n .description('List themes.')\n .addOption(\n new Option('-l, --long', 'Long with more fields.').default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing themes in realm \"${state.getRealm()}\"...`);\n listThemes(options.long);\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,EAAEC,KAAK,QAAQ,uBAAuB;AAC3D,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,cAAc,QAAQ,qBAAqB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGJ,YAAY;AAElC,MAAMK,OAAO,GAAG,IAAIP,YAAY,CAAC,kBAAkB,CAAC;AAEpDO,OAAO,CACJC,WAAW,CAAC,cAAc,CAAC,CAC3BC,SAAS,CACR,IAAIR,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAACS,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAC3E,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD,IAAI,MAAMX,SAAS,EAAE,EAAE;IACrBD,cAAc,CAAE,4BAA2BF,KAAK,CAACgB,QAAQ,EAAG,MAAK,CAAC;IAClEf,UAAU,CAACY,OAAO,CAACI,IAAI,CAAC;EAC1B,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHf,OAAO,CAACgB,KAAK,EAAE"}
|
package/esm/cli/theme/theme.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FrodoStubCommand } from '../FrodoCommand';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
export default function setup() {
|
|
6
|
-
const program = new
|
|
7
|
-
program.command('list', 'List themes.')
|
|
8
|
-
program.command('export', 'Export themes.')
|
|
9
|
-
program.command('import', 'Import themes.')
|
|
10
|
-
program.command('delete', 'Delete themes.')
|
|
11
|
-
program.showHelpAfterError();
|
|
6
|
+
const program = new FrodoStubCommand('theme').description('Manage themes.').executableDir(__dirname);
|
|
7
|
+
program.command('list', 'List themes.');
|
|
8
|
+
program.command('export', 'Export themes.');
|
|
9
|
+
program.command('import', 'Import themes.');
|
|
10
|
+
program.command('delete', 'Delete themes.');
|
|
12
11
|
return program;
|
|
13
12
|
}
|
|
14
13
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","names":["
|
|
1
|
+
{"version":3,"file":"theme.js","names":["FrodoStubCommand","path","fileURLToPath","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["cli/theme/theme.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('theme')\n .description('Manage themes.')\n .executableDir(__dirname);\n\n program.command('list', 'List themes.');\n\n program.command('export', 'Export themes.');\n\n program.command('import', 'Import themes.');\n\n program.command('delete', 'Delete themes.');\n\n return program;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAK,GAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIT,gBAAgB,CAAC,OAAO,CAAC,CAC1CU,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;EAEvCH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC;EAE3CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC;EAE3CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC;EAE3C,OAAOH,OAAO;AAChB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { Authenticate, state } from '@rockcarver/frodo-lib';
|
|
3
|
+
import { failSpinner, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
+
const {
|
|
5
|
+
getAccessTokenForServiceAccount
|
|
6
|
+
} = Authenticate;
|
|
7
|
+
export async function addExistingServiceAccount(serviceAccountId, privateKeyFile, validate) {
|
|
8
|
+
try {
|
|
9
|
+
const data = fs.readFileSync(privateKeyFile);
|
|
10
|
+
const jwk = JSON.parse(data.toString());
|
|
11
|
+
if (validate) {
|
|
12
|
+
showSpinner(`Validating service account ${serviceAccountId}...`);
|
|
13
|
+
const token = await getAccessTokenForServiceAccount(serviceAccountId, jwk);
|
|
14
|
+
if (token === null) {
|
|
15
|
+
failSpinner(`Failed to validate service account ${serviceAccountId}.`);
|
|
16
|
+
return false;
|
|
17
|
+
} else {
|
|
18
|
+
succeedSpinner(`Successfully validated service account ${serviceAccountId}.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
state.default.session.setServiceAccountId(serviceAccountId);
|
|
22
|
+
state.default.session.setServiceAccountJwk(jwk);
|
|
23
|
+
return true;
|
|
24
|
+
} catch (err) {
|
|
25
|
+
failSpinner(`Failed to validate service account ${serviceAccountId}: ${err}.`);
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ConnectionProfileOps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["fs","Authenticate","state","failSpinner","showSpinner","succeedSpinner","getAccessTokenForServiceAccount","addExistingServiceAccount","serviceAccountId","privateKeyFile","validate","data","readFileSync","jwk","JSON","parse","toString","token","default","session","setServiceAccountId","setServiceAccountJwk","err"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { Authenticate, state } from '@rockcarver/frodo-lib';\nimport { failSpinner, showSpinner, succeedSpinner } from '../utils/Console';\n\nconst { getAccessTokenForServiceAccount } = Authenticate;\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.default.session.setServiceAccountId(serviceAccountId);\n state.default.session.setServiceAccountJwk(jwk);\n return true;\n } catch (err) {\n failSpinner(\n `Failed to validate service account ${serviceAccountId}: ${err}.`\n );\n return false;\n }\n return false;\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,SAASC,YAAY,EAAEC,KAAK,QAAQ,uBAAuB;AAC3D,SAASC,WAAW,EAAEC,WAAW,EAAEC,cAAc,QAAQ,kBAAkB;AAE3E,MAAM;EAAEC;AAAgC,CAAC,GAAGL,YAAY;AAExD,OAAO,eAAeM,yBAAyB,CAC7CC,gBAAwB,EACxBC,cAAsB,EACtBC,QAAiB,EACC;EAClB,IAAI;IACF,MAAMC,IAAI,GAAGX,EAAE,CAACY,YAAY,CAACH,cAAc,CAAC;IAC5C,MAAMI,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAACK,QAAQ,EAAE,CAAC;IACvC,IAAIN,QAAQ,EAAE;MACZN,WAAW,CAAE,8BAA6BI,gBAAiB,KAAI,CAAC;MAChE,MAAMS,KAAK,GAAG,MAAMX,+BAA+B,CACjDE,gBAAgB,EAChBK,GAAG,CACJ;MACD,IAAII,KAAK,KAAK,IAAI,EAAE;QAClBd,WAAW,CAAE,sCAAqCK,gBAAiB,GAAE,CAAC;QACtE,OAAO,KAAK;MACd,CAAC,MAAM;QACLH,cAAc,CACX,0CAAyCG,gBAAiB,GAAE,CAC9D;MACH;IACF;IACAN,KAAK,CAACgB,OAAO,CAACC,OAAO,CAACC,mBAAmB,CAACZ,gBAAgB,CAAC;IAC3DN,KAAK,CAACgB,OAAO,CAACC,OAAO,CAACE,oBAAoB,CAACR,GAAG,CAAC;IAC/C,OAAO,IAAI;EACb,CAAC,CAAC,OAAOS,GAAG,EAAE;IACZnB,WAAW,CACR,sCAAqCK,gBAAiB,KAAIc,GAAI,GAAE,CAClE;IACD,OAAO,KAAK;EACd;EACA,OAAO,KAAK;AACd"}
|