├── .cache └── plugin │ └── git-committers │ └── page-authors.json ├── .commitlintrc.json ├── .editorconfig ├── .eslintrc.json ├── .github ├── CODE_OF_CONDUCT.md ├── FUNDING.yml ├── GLOSSARY.md ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── bug-report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md ├── images │ ├── AWS_SSO.gif │ ├── Leapp-Keynote-pitch.001.png │ ├── Leapp-animation.gif │ ├── PROJECT_STRUCTURE_1.png │ ├── README-1-dark.png │ ├── README-1.png │ ├── README-2.png │ ├── azure-gif.gif │ ├── federated-gif.gif │ ├── mfa-ex-1.png │ ├── options-proxy.png │ ├── plain-gif.gif │ └── truster-gif.gif └── workflows │ ├── cli-ci-cd-prod.yml │ ├── codeql.yml │ ├── core-ci-cd-prod.yml │ ├── desktop-app-cd-nightly-approval.yml │ ├── desktop-app-cd-nightly-prod.yml │ ├── desktop-app-cd-prod.yml │ ├── docs.yml │ └── pr.yml ├── .gitignore ├── .husky ├── .gitignore ├── commit-msg └── pre-commit ├── .nvmrc ├── .prettierrc ├── CHANGELOG.md ├── CNAME ├── CONTRIBUTING.md ├── DEVELOPMENT.md ├── LICENSE ├── README.md ├── docs ├── CNAME ├── built-in-features │ ├── aws-ec2-connect.md │ ├── aws-named-profiles.md │ ├── general-options.md │ ├── multi-console.md │ └── opening-web-console.md ├── cli │ ├── index.md │ └── scopes │ │ ├── help.md │ │ ├── idp-url.md │ │ ├── integration.md │ │ ├── profile.md │ │ ├── region.md │ │ ├── session.md │ │ ├── set-workspace.md │ │ ├── team.md │ │ ├── version.md │ │ └── workspace.md ├── configuration.md ├── configuring-integration │ ├── configure-aws-single-sign-on-integration.md │ └── configure-azure-integration.md ├── configuring-session │ ├── configure-aws-iam-role-chained.md │ ├── configure-aws-iam-role-federated.md │ ├── configure-aws-iam-user.md │ └── configure-localstack.md ├── contributing │ └── get-involved.md ├── edit-session.md ├── images │ ├── access_schemas │ │ ├── AWS_IAM_CHAINED_ROLE_FROM_AWS_SSO_ROLE_ACCESS_SCHEMA.png │ │ ├── AWS_IAM_CHAINED_ROLE_FROM_FEDERATED_ROLE_ACCESS_SCHEMA.png │ │ ├── AWS_IAM_CHAINED_ROLE_FROM_USER_ACCESS_SCHEMA.png │ │ ├── AWS_IAM_FEDERATED_ROLE_ACCESS_SCHEMA.png │ │ ├── AWS_IAM_USER_ACCESS_SCHEMA.png │ │ ├── AWS_SSO_ACCESS_SCHEMA.png │ │ └── AZURE_ACCESS_SCHEMA.png │ ├── built-in-features │ │ ├── enable-option.png │ │ ├── extension-communication-error.png │ │ ├── extension-uninstall-1.png │ │ ├── extension-uninstall-2.png │ │ ├── leapp-browser-ui.png │ │ ├── leapp-extension.png │ │ ├── opening-screen.png │ │ ├── opening.png │ │ ├── plus.png │ │ └── ssm.png │ ├── contributing │ │ ├── aws_named_profiles │ │ │ ├── AWS_NAMED_PROFILES_1.png │ │ │ ├── AWS_NAMED_PROFILES_2.png │ │ │ ├── AWS_NAMED_PROFILES_3.png │ │ │ ├── AWS_NAMED_PROFILES_4.png │ │ │ └── AWS_NAMED_PROFILES_5.png │ │ ├── aws_sso │ │ │ ├── AWS_SSO-1.png │ │ │ └── AWS_SSO-2.png │ │ ├── default_options │ │ │ ├── DEFAULT_OPTIONS-1.png │ │ │ └── DEFAULT_OPTIONS-2.png │ │ └── project_structure │ │ │ └── PROJECT_STRUCTURE-1.png │ ├── editsession.png │ ├── gear.png │ ├── hamburger.png │ ├── icon.ico │ ├── icon.png │ ├── leapp-pro │ │ ├── leapp-app-pro-workspace.png │ │ ├── leapp-app-settings-button.png │ │ ├── leapp-app-settings-plans-upgrade-button.png │ │ ├── leapp-app-upgrade-pro-dialog.png │ │ ├── leapp-pro-sign-up-page.png │ │ ├── leapp-pro-upgrade-email.png │ │ ├── leapp-pro.png │ │ ├── local-workspace-button.png │ │ ├── local-workspace-sign-in-option.png │ │ ├── lock-screen.png │ │ ├── pro-workspace-area.png │ │ ├── pro-workspace-button.png │ │ ├── pro-workspace-lock-option.png │ │ ├── sign-in-dialog.png │ │ ├── syncfailed.png │ │ ├── syncok.png │ │ └── syncprogress.png │ ├── leapp.png │ ├── logo.png │ ├── main-window.png │ ├── meta │ │ └── social │ │ │ ├── aws-iam-role-chained-session.png │ │ │ ├── aws-iam-role-federated-session.png │ │ │ ├── aws-iam-user-session.png │ │ │ ├── aws-single-sign-on-integration.png │ │ │ ├── azure-integration.png │ │ │ ├── configure-ec2-connect.png │ │ │ ├── configure-multi-console.png │ │ │ ├── configure-named-profiles.png │ │ │ └── configure-open-web-console.png │ ├── modalcredentialprocess.png │ ├── plugin-system │ │ ├── screen1.png │ │ ├── screen2.png │ │ ├── screen3.png │ │ └── screen4.png │ ├── screens │ │ ├── aws-iam-role-chained.png │ │ ├── aws-iam-role-federated.png │ │ ├── aws-iam-user.png │ │ ├── aws-ssm.png │ │ ├── aws-sso.png │ │ ├── azure-tenant.png │ │ ├── azure.png │ │ ├── create.png │ │ ├── newuxui │ │ │ ├── aws-iam-role-chained.png │ │ │ ├── aws-iam-role-federated.png │ │ │ ├── aws-iam-user.png │ │ │ ├── aws-ssm.png │ │ │ ├── aws-sso.png │ │ │ ├── azure-tenant.png │ │ │ ├── leapp-dark.png │ │ │ ├── leapp-options.png │ │ │ ├── main-window.png │ │ │ └── update.png │ │ └── select.png │ ├── startsession.png │ ├── testconnection.png │ └── tutorials │ │ ├── aws │ │ ├── aws_sso │ │ │ ├── SETUP_IN_LEAPP_1.png │ │ │ ├── SETUP_IN_LEAPP_2.png │ │ │ ├── SETUP_IN_LEAPP_3.png │ │ │ ├── SETUP_IN_LEAPP_4.png │ │ │ ├── SETUP_IN_LEAPP_5.png │ │ │ ├── SETUP_IN_LEAPP_6.png │ │ │ ├── SETUP_IN_LEAPP_7.png │ │ │ └── SETUP_IN_LEAPP_8.png │ │ ├── iam_chained_role │ │ │ ├── AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-1.png │ │ │ ├── AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-2.png │ │ │ ├── AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-3.png │ │ │ └── AWS_IAM_CHAINED_ROLE_SETUP_TRUST_RELATIONSHIP-1.png │ │ ├── iam_federated_role │ │ │ ├── ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-1.png │ │ │ ├── ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-2.png │ │ │ ├── ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-3.png │ │ │ ├── AWS_FEDERATION_SETUP-1.png │ │ │ ├── AWS_FEDERATION_SETUP-2.png │ │ │ ├── ENABLE_ROLE_FEDERATED_ACCESS-1.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-1.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-10.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-11.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-12.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-13.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-14.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-2.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-3.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-4.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-5.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-6.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-7.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-8.png │ │ │ ├── G_SUITE_FEDERATION_SETUP-9.png │ │ │ ├── SETUP_IN_LEAPP-1.png │ │ │ ├── SETUP_IN_LEAPP-2.png │ │ │ └── SETUP_IN_LEAPP-3.png │ │ └── iam_user │ │ │ ├── SETUP_IN_LEAPP-1.png │ │ │ ├── SETUP_IN_LEAPP-2.png │ │ │ └── SETUP_IN_LEAPP-3.png │ │ ├── aws_ssm_connect │ │ ├── AWS_SSM_CONNECT-1.png │ │ ├── AWS_SSM_CONNECT-2.png │ │ ├── AWS_SSM_CONNECT-3.png │ │ ├── AWS_SSM_CONNECT-4.png │ │ ├── AWS_SSM_CONNECT-5.png │ │ └── AWS_SSM_CONNECT-6.png │ │ ├── azure │ │ ├── G_SUITE_FEDERATION_SETUP-1.png │ │ ├── G_SUITE_FEDERATION_SETUP-2.png │ │ ├── G_SUITE_FEDERATION_SETUP-3.png │ │ ├── SETUP_IN_LEAPP-1.png │ │ ├── SETUP_IN_LEAPP-2.png │ │ └── SETUP_IN_LEAPP-3.png │ │ ├── export-pro-workspace │ │ ├── export-pro-workspace-2.png │ │ └── export-pro-workspace.png │ │ └── first_access │ │ ├── FIRST_ACCESS-1.png │ │ ├── FIRST_ACCESS-2.png │ │ └── FIRST_ACCESS-3.png ├── index.md ├── installation │ ├── install-leapp.md │ ├── requirements.md │ └── update-leapp.md ├── integrations.md ├── leapp-pro │ └── export-pro-workspace.md ├── plugins │ ├── plugins-development.md │ └── plugins-introduction.md ├── security │ ├── credential-process.md │ ├── credentials-generation │ │ ├── aws.md │ │ └── azure.md │ ├── intro.md │ ├── system-vault.md │ └── zero-knowledge.md ├── sessions.md ├── stylesheets │ └── extra.css ├── troubleshooting │ ├── app-data.md │ └── faq.md ├── usefull-scripts │ └── export-profile.md ├── videos │ ├── Azure.gif │ ├── Chained.gif │ ├── Federated.gif │ ├── SSM.gif │ ├── SSO.gif │ ├── User.gif │ ├── aws_iam_user.mp4 │ ├── intro.gif │ └── newuxui │ │ ├── aws-iam-chained.mp4 │ │ ├── aws-iam-federated.mp4 │ │ ├── aws-iam-user.mp4 │ │ ├── aws-sso.mp4 │ │ ├── azure-integration.mp4 │ │ ├── azure.mp4 │ │ └── ssm.mp4 └── workspaces.md ├── docs_extra ├── 404.html ├── images │ └── 7.png ├── main.html └── sitemap.xml ├── dpapi-addon ├── bin │ └── darwin-x64-89 │ │ └── dpapi-addon.node ├── binding.gyp ├── build │ ├── Makefile │ ├── binding.Makefile │ ├── config.gypi │ ├── dpapi.target.mk │ └── gyp-mac-tool ├── dpapi-addon │ ├── Dpapi.js │ ├── dpapi_addon.h │ ├── dpapi_not_supported.cpp │ ├── dpapi_win.cpp │ └── main.cpp └── package.json ├── gushio ├── bootstrap.js ├── clean-and-bootstrap.js ├── delete-func.js ├── get-nightly-version.js ├── leapp-core-bootstrap.js ├── make-badges.js ├── read-package-json-func.js ├── release.js ├── set-dev-environment.js ├── set-pro-environment.js └── write-package-json-func.js ├── jest.preset.js ├── mkdocs.insiders.yml ├── mkdocs.yml ├── package-lock.json ├── package.json ├── packages ├── cli │ ├── README.md │ ├── babel.config.js │ ├── bin │ │ ├── dev │ │ ├── dev.cmd │ │ ├── run │ │ └── run.cmd │ ├── gushio │ │ ├── check-npm-core-version.js │ │ ├── compile-func.js │ │ ├── delete-func.js │ │ ├── homebrew │ │ │ ├── get-formula.js │ │ │ └── get-installer-formula.js │ │ ├── replace-header-cli-index-doc.js │ │ ├── target-brew-release.js │ │ ├── target-build.js │ │ ├── target-clean.js │ │ ├── target-nightly.js │ │ ├── target-npm-release.js │ │ └── target-post-pack.js │ ├── index.md │ ├── jest.config.js │ ├── package-lock.json │ ├── package.json │ ├── scopes │ │ ├── help.md │ │ ├── idp-url.md │ │ ├── integration.md │ │ ├── profile.md │ │ ├── region.md │ │ ├── session.md │ │ ├── set-workspace.md │ │ ├── team.md │ │ ├── version.md │ │ └── workspace.md │ ├── src │ │ ├── commands │ │ │ ├── idp-url │ │ │ │ ├── create.spec.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.spec.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── edit.spec.ts │ │ │ │ ├── edit.ts │ │ │ │ ├── list.spec.ts │ │ │ │ └── list.ts │ │ │ ├── integration │ │ │ │ ├── create.spec.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.spec.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── list.spec.ts │ │ │ │ ├── list.ts │ │ │ │ ├── login.spec.ts │ │ │ │ ├── login.ts │ │ │ │ ├── logout.spec.ts │ │ │ │ ├── logout.ts │ │ │ │ ├── sync.spec.ts │ │ │ │ └── sync.ts │ │ │ ├── profile │ │ │ │ ├── create.spec.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.spec.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── edit.spec.ts │ │ │ │ ├── edit.ts │ │ │ │ ├── list.spec.ts │ │ │ │ └── list.ts │ │ │ ├── region │ │ │ │ ├── get-default.spec.ts │ │ │ │ ├── get-default.ts │ │ │ │ ├── set-default.spec.ts │ │ │ │ └── set-default.ts │ │ │ ├── session │ │ │ │ ├── add.spec.ts │ │ │ │ ├── add.ts │ │ │ │ ├── change-profile.spec.ts │ │ │ │ ├── change-profile.ts │ │ │ │ ├── change-region.spec.ts │ │ │ │ ├── change-region.ts │ │ │ │ ├── current.spec.ts │ │ │ │ ├── current.ts │ │ │ │ ├── delete.spec.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── generate.spec.ts │ │ │ │ ├── generate.ts │ │ │ │ ├── get-id.ts │ │ │ │ ├── list.spec.ts │ │ │ │ ├── list.ts │ │ │ │ ├── open-web-console.spec.ts │ │ │ │ ├── open-web-console.ts │ │ │ │ ├── run-aws-credential-plugin.spec.ts │ │ │ │ ├── run-aws-credential-plugin.ts │ │ │ │ ├── start-ssm-session.spec.ts │ │ │ │ ├── start-ssm-session.ts │ │ │ │ ├── start.spec.ts │ │ │ │ ├── start.ts │ │ │ │ ├── stop.spec.ts │ │ │ │ └── stop.ts │ │ │ ├── set-workspace.spec.ts │ │ │ ├── set-workspace.ts │ │ │ ├── team │ │ │ │ ├── login.spec.ts │ │ │ │ ├── login.ts │ │ │ │ ├── logout.spec.ts │ │ │ │ ├── logout.ts │ │ │ │ ├── status.spec.ts │ │ │ │ └── status.ts │ │ │ ├── version.spec.ts │ │ │ ├── version.ts │ │ │ ├── workspace.spec.ts │ │ │ └── workspace.ts │ │ ├── flags.ts │ │ ├── http │ │ │ ├── http-client.provider.spec.ts │ │ │ └── http-client.provider.ts │ │ ├── index.ts │ │ ├── leapp-command.spec.ts │ │ ├── leapp-command.ts │ │ └── service │ │ │ ├── cli-aws-authentication-service.spec.ts │ │ │ ├── cli-aws-authentication-service.ts │ │ │ ├── cli-aws-saml-authentication-service.spec.ts │ │ │ ├── cli-aws-saml-authentication-service.ts │ │ │ ├── cli-aws-sso-oidc-cerification-window-service.spec.ts │ │ │ ├── cli-aws-sso-oidc-verification-window-service.ts │ │ │ ├── cli-native-logger-service.ts │ │ │ ├── cli-native-service.ts │ │ │ ├── cli-open-web-console-service.spec.ts │ │ │ ├── cli-open-web-console-service.ts │ │ │ ├── cli-provider-service.spec.ts │ │ │ ├── cli-provider-service.ts │ │ │ ├── cli-rpc-aws-saml-authentication-service.ts │ │ │ ├── cli-rpc-aws-sso-oidc-verification-window-service.ts │ │ │ ├── cli-rpc-keychain-service.spec.ts │ │ │ ├── cli-rpc-keychain-service.ts │ │ │ ├── cli-verification-window-service.spec.ts │ │ │ ├── local-cli-mfa-code-prompt-service.spec.ts │ │ │ ├── local-cli-mfa-code-prompt-service.ts │ │ │ ├── remote-cli-mfa-code-prompt-service.spec.ts │ │ │ ├── remote-cli-mfa-code-prompt-service.ts │ │ │ └── team-service-stub.ts │ └── tsconfig.json ├── core │ ├── .npmignore │ ├── README.md │ ├── babel.config.js │ ├── gushio │ │ ├── compile-func.js │ │ ├── delete-func.js │ │ ├── target-build.js │ │ ├── target-clean.js │ │ ├── target-nightly.js │ │ └── target-release.js │ ├── jest.config.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── errors │ │ │ ├── leapp-aws-sts-error.spec.ts │ │ │ ├── leapp-aws-sts-error.ts │ │ │ ├── leapp-base-error.ts │ │ │ ├── leapp-execute-error.spec.ts │ │ │ ├── leapp-execute-error.ts │ │ │ ├── leapp-link-error.spec.ts │ │ │ ├── leapp-link-error.ts │ │ │ ├── leapp-missing-mfa-token-error.spec.ts │ │ │ ├── leapp-missing-mfa-token-error.ts │ │ │ ├── leapp-modal-closed-error.spec.ts │ │ │ ├── leapp-modal-closed-error.ts │ │ │ ├── leapp-not-aws-account-error.spec.ts │ │ │ ├── leapp-not-aws-account-error.ts │ │ │ ├── leapp-not-found-error.spec.ts │ │ │ ├── leapp-not-found-error.ts │ │ │ ├── leapp-parse-error.spec.ts │ │ │ ├── leapp-parse-error.ts │ │ │ ├── leapp-saml-error.spec.ts │ │ │ └── leapp-saml-error.ts │ │ ├── http │ │ │ ├── http-client.provider.spec.ts │ │ │ └── http-client.provider.ts │ │ ├── interfaces │ │ │ ├── i-aws-integration-delegate.ts │ │ │ ├── i-aws-saml-authentication-service.ts │ │ │ ├── i-aws-sso-oidc-verification-window-service.ts │ │ │ ├── i-behavioural-notifier.ts │ │ │ ├── i-browser-window-closing.ts │ │ │ ├── i-global-settings.ts │ │ │ ├── i-http-client.ts │ │ │ ├── i-integration-service.ts │ │ │ ├── i-keychain-service.ts │ │ │ ├── i-logger.ts │ │ │ ├── i-mfa-code-prompter.ts │ │ │ ├── i-msal-encryption-service.ts │ │ │ ├── i-native-service.ts │ │ │ ├── i-open-external-url-service.ts │ │ │ └── i-team-service.ts │ │ ├── models │ │ │ ├── access-method-field-type.ts │ │ │ ├── access-method-field.ts │ │ │ ├── access-method.spec.ts │ │ │ ├── access-method.ts │ │ │ ├── aws │ │ │ │ ├── aws-iam-role-chained-session.spec.ts │ │ │ │ ├── aws-iam-role-chained-session.ts │ │ │ │ ├── aws-iam-role-federated-session.spec.ts │ │ │ │ ├── aws-iam-role-federated-session.ts │ │ │ │ ├── aws-iam-user-session.spec.ts │ │ │ │ ├── aws-iam-user-session.ts │ │ │ │ ├── aws-named-profile.spec.ts │ │ │ │ ├── aws-named-profile.ts │ │ │ │ ├── aws-process-credential.spec.ts │ │ │ │ ├── aws-process-credential.ts │ │ │ │ ├── aws-sso-integration-creation-params.spec.ts │ │ │ │ ├── aws-sso-integration-creation-params.ts │ │ │ │ ├── aws-sso-integration-token-info.spec.ts │ │ │ │ ├── aws-sso-integration-token-info.ts │ │ │ │ ├── aws-sso-integration.spec.ts │ │ │ │ ├── aws-sso-integration.ts │ │ │ │ ├── aws-sso-role-session.spec.ts │ │ │ │ └── aws-sso-role-session.ts │ │ │ ├── azure │ │ │ │ ├── azure-integration-creation-params.ts │ │ │ │ ├── azure-integration.spec.ts │ │ │ │ ├── azure-integration.ts │ │ │ │ └── azure-session.ts │ │ │ ├── cloud-provider-type.ts │ │ │ ├── constants.spec.ts │ │ │ ├── constants.ts │ │ │ ├── credentials-info.ts │ │ │ ├── credentials.ts │ │ │ ├── folder.ts │ │ │ ├── idp-url-access-method-field.spec.ts │ │ │ ├── idp-url-access-method-field.ts │ │ │ ├── idp-url.ts │ │ │ ├── integration-method.ts │ │ │ ├── integration-params.ts │ │ │ ├── integration-type.ts │ │ │ ├── integration.ts │ │ │ ├── localstack │ │ │ │ ├── localstack-session.spec.ts │ │ │ │ └── localstack-session.ts │ │ │ ├── notification.spec.ts │ │ │ ├── notification.ts │ │ │ ├── operating-system.ts │ │ │ ├── plugin-status.ts │ │ │ ├── remote-workspace-settings-map.ts │ │ │ ├── segment.ts │ │ │ ├── session-selection-state.ts │ │ │ ├── session-status.ts │ │ │ ├── session-type.ts │ │ │ ├── session.spec.ts │ │ │ ├── session.ts │ │ │ ├── workspace.spec.ts │ │ │ └── workspace.ts │ │ ├── plugin-sdk │ │ │ ├── aws-credentials-plugin.spec.ts │ │ │ ├── aws-credentials-plugin.ts │ │ │ ├── interfaces │ │ │ │ ├── aws-iam-role-chained-session-data.ts │ │ │ │ ├── aws-iam-role-federated-session-data.ts │ │ │ │ ├── aws-iam-user-session-data.ts │ │ │ │ ├── i-plugin-environment.ts │ │ │ │ ├── i-plugin.ts │ │ │ │ └── session-data.ts │ │ │ ├── plugin-environment.spec.ts │ │ │ ├── plugin-environment.ts │ │ │ ├── plugin-log-level.ts │ │ │ ├── plugin-manager-service.spec.ts │ │ │ └── plugin-manager-service.ts │ │ └── services │ │ │ ├── aws-assumer-session-types.spec.ts │ │ │ ├── aws-assumer-session-types.ts │ │ │ ├── aws-core-service.spec.ts │ │ │ ├── aws-core-service.ts │ │ │ ├── aws-saml-assertion-extraction-service.spec.ts │ │ │ ├── aws-saml-assertion-extraction-service.ts │ │ │ ├── aws-sso-oidc.service.ts │ │ │ ├── azure-core-service.spec.ts │ │ │ ├── azure-core-service.ts │ │ │ ├── azure-location.ts │ │ │ ├── azure-persistence-service.spec.ts │ │ │ ├── azure-persistence-service.ts │ │ │ ├── behavioural-subject-service.spec.ts │ │ │ ├── behavioural-subject-service.ts │ │ │ ├── cloud-provider-service.spec.ts │ │ │ ├── cloud-provider-service.ts │ │ │ ├── execute-service.spec.ts │ │ │ ├── execute-service.ts │ │ │ ├── field-choice.ts │ │ │ ├── file-service.spec.ts │ │ │ ├── file-service.ts │ │ │ ├── idp-urls-service.spec.ts │ │ │ ├── idp-urls-service.ts │ │ │ ├── integration-factory.spec.ts │ │ │ ├── integration-factory.ts │ │ │ ├── integration │ │ │ ├── aws-sso-integration-service.spec.ts │ │ │ ├── aws-sso-integration-service.ts │ │ │ ├── azure-integration-service.spec.ts │ │ │ ├── azure-integration-service.ts │ │ │ ├── integration-is-online-state-refresh-service.spec.ts │ │ │ └── integration-is-online-state-refresh-service.ts │ │ │ ├── keychain-service.ts │ │ │ ├── log-service.spec.ts │ │ │ ├── log-service.ts │ │ │ ├── named-profiles-service.spec.ts │ │ │ ├── named-profiles-service.ts │ │ │ ├── notification-service.spec.ts │ │ │ ├── notification-service.ts │ │ │ ├── region-service.spec.ts │ │ │ ├── regions-service.ts │ │ │ ├── remote-procedures-client.ts │ │ │ ├── remote-procedures-server.ts │ │ │ ├── remote-procedures.spec.ts │ │ │ ├── repository.spec.ts │ │ │ ├── repository.ts │ │ │ ├── retro-compatibility-service.spec.ts │ │ │ ├── retro-compatibility-service.ts │ │ │ ├── rotation-service.spec.ts │ │ │ ├── rotation-service.ts │ │ │ ├── segment-service.spec.ts │ │ │ ├── segment-service.ts │ │ │ ├── session-factory.spec.ts │ │ │ ├── session-factory.ts │ │ │ ├── session-management-service.spec.ts │ │ │ ├── session-management-service.ts │ │ │ ├── session │ │ │ ├── aws │ │ │ │ ├── aws-iam-role-chained-service.spec.ts │ │ │ │ ├── aws-iam-role-chained-service.ts │ │ │ │ ├── aws-iam-role-chained-session-request.ts │ │ │ │ ├── aws-iam-role-federated-service.spec.ts │ │ │ │ ├── aws-iam-role-federated-service.ts │ │ │ │ ├── aws-iam-role-federated-session-request.ts │ │ │ │ ├── aws-iam-user-service.spec.ts │ │ │ │ ├── aws-iam-user-service.ts │ │ │ │ ├── aws-iam-user-session-request.ts │ │ │ │ ├── aws-parent-session.factory.ts │ │ │ │ ├── aws-session-service.spec.ts │ │ │ │ ├── aws-session-service.ts │ │ │ │ ├── aws-sso-role-service.spec.ts │ │ │ │ ├── aws-sso-role-service.ts │ │ │ │ └── aws-sso-role-session-request.ts │ │ │ ├── azure │ │ │ │ ├── azure-session-request.ts │ │ │ │ ├── azure-session-service.spec.ts │ │ │ │ └── azure-session-service.ts │ │ │ ├── create-aws-session-request.ts │ │ │ ├── create-session-request.ts │ │ │ ├── localstack │ │ │ │ ├── localstack-session-request.ts │ │ │ │ ├── localstack-session-service.spec.ts │ │ │ │ └── localstack-session-service.ts │ │ │ ├── session-service.spec.ts │ │ │ └── session-service.ts │ │ │ ├── ssm-service.spec.ts │ │ │ ├── ssm-service.ts │ │ │ ├── throttle-service.spec.ts │ │ │ ├── throttle-service.ts │ │ │ ├── timer-service.ts │ │ │ ├── web-console-service.spec.ts │ │ │ ├── web-console-service.ts │ │ │ ├── workspace-consistency-service.spec.ts │ │ │ ├── workspace-consistency-service.ts │ │ │ ├── workspace-service.spec.ts │ │ │ └── workspace-service.ts │ └── tsconfig.json └── desktop-app │ ├── angular.json │ ├── browserslist │ ├── build │ ├── entitlements.mac.plist │ └── info.plist │ ├── dev-app-update.yml │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json │ ├── electron │ ├── assets │ │ └── images │ │ │ ├── Leapp.icns │ │ │ ├── Leapp.ico │ │ │ └── Leapp.png │ ├── build │ │ ├── Makefile │ │ ├── binding.Makefile │ │ ├── config.gypi │ │ ├── dpapi.target.mk │ │ └── gyp-mac-tool │ ├── context-menu.ts │ ├── main.js │ ├── main.ts │ └── tsconfig.json │ ├── gushio │ ├── compile-func.js │ ├── copy-func.js │ ├── delete-func.js │ ├── makedir-func.js │ ├── set-target-arch.js │ ├── target-build-and-run.js │ ├── target-build.js │ ├── target-clean.js │ ├── target-nightly.js │ ├── target-release-dev.js │ └── target-release.js │ ├── karma-process-mock.js │ ├── karma.conf.js │ ├── package-lock.json │ ├── package.json │ ├── scripts │ └── windows-sign.js │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── components │ │ │ ├── bottom-bar │ │ │ │ ├── bottom-bar.component.html │ │ │ │ ├── bottom-bar.component.scss │ │ │ │ └── bottom-bar.component.ts │ │ │ ├── check-icon-svg │ │ │ │ ├── check-icon-svg.component.html │ │ │ │ ├── check-icon-svg.component.scss │ │ │ │ ├── check-icon-svg.component.spec.ts │ │ │ │ └── check-icon-svg.component.ts │ │ │ ├── command-bar │ │ │ │ ├── command-bar.component.html │ │ │ │ ├── command-bar.component.scss │ │ │ │ ├── command-bar.component.spec.ts │ │ │ │ └── command-bar.component.ts │ │ │ ├── components.module.ts │ │ │ ├── contextual-menu │ │ │ │ ├── contextual-menu.component.html │ │ │ │ ├── contextual-menu.component.scss │ │ │ │ └── contextual-menu.component.ts │ │ │ ├── dialogs │ │ │ │ ├── authorization-dialog │ │ │ │ │ ├── authorization-dialog.component.html │ │ │ │ │ ├── authorization-dialog.component.scss │ │ │ │ │ └── authorization-dialog.component.ts │ │ │ │ ├── change-named-profile-dialog │ │ │ │ │ ├── change-named-profile-dialog.component.html │ │ │ │ │ ├── change-named-profile-dialog.component.scss │ │ │ │ │ └── change-named-profile-dialog.component.ts │ │ │ │ ├── change-region-dialog │ │ │ │ │ ├── change-region-dialog.component.html │ │ │ │ │ ├── change-region-dialog.component.scss │ │ │ │ │ └── change-region-dialog.component.ts │ │ │ │ ├── column-dialog │ │ │ │ │ ├── column-dialog.component.html │ │ │ │ │ ├── column-dialog.component.scss │ │ │ │ │ ├── column-dialog.component.spec.ts │ │ │ │ │ └── column-dialog.component.ts │ │ │ │ ├── confirmation-dialog │ │ │ │ │ ├── confirmation-dialog.component.html │ │ │ │ │ ├── confirmation-dialog.component.scss │ │ │ │ │ ├── confirmation-dialog.component.spec.ts │ │ │ │ │ └── confirmation-dialog.component.ts │ │ │ │ ├── create-dialog │ │ │ │ │ ├── create-dialog.component.html │ │ │ │ │ ├── create-dialog.component.scss │ │ │ │ │ ├── create-dialog.component.spec.ts │ │ │ │ │ └── create-dialog.component.ts │ │ │ │ ├── credential-process-dialog │ │ │ │ │ ├── credential-process-dialog.component.html │ │ │ │ │ ├── credential-process-dialog.component.scss │ │ │ │ │ ├── credential-process-dialog.component.spec.ts │ │ │ │ │ └── credential-process-dialog.component.ts │ │ │ │ ├── edit-dialog │ │ │ │ │ ├── edit-dialog.component.html │ │ │ │ │ ├── edit-dialog.component.scss │ │ │ │ │ └── edit-dialog.component.ts │ │ │ │ ├── info-dialog │ │ │ │ │ ├── info-dialog.component.html │ │ │ │ │ ├── info-dialog.component.scss │ │ │ │ │ ├── info-dialog.component.spec.ts │ │ │ │ │ └── info-dialog.component.ts │ │ │ │ ├── input-dialog │ │ │ │ │ ├── input-dialog.component.html │ │ │ │ │ ├── input-dialog.component.scss │ │ │ │ │ ├── input-dialog.component.spec.ts │ │ │ │ │ └── input-dialog.component.ts │ │ │ │ ├── leapp-pro-pre-checkout-dialog │ │ │ │ │ ├── leapp-pro-pre-checkout-dialog.component.html │ │ │ │ │ ├── leapp-pro-pre-checkout-dialog.component.scss │ │ │ │ │ ├── leapp-pro-pre-checkout-dialog.component.spec.ts │ │ │ │ │ └── leapp-pro-pre-checkout-dialog.component.ts │ │ │ │ ├── login-team-dialog │ │ │ │ │ ├── login-workspace-dialog.component.html │ │ │ │ │ ├── login-workspace-dialog.component.scss │ │ │ │ │ └── login-workspace-dialog.component.ts │ │ │ │ ├── manage-team-workspaces-dialog │ │ │ │ │ ├── manage-team-workspaces-dialog.component.html │ │ │ │ │ ├── manage-team-workspaces-dialog.component.scss │ │ │ │ │ └── manage-team-workspaces-dialog.component.ts │ │ │ │ ├── noovolari-dialog │ │ │ │ │ ├── noovolari-dialog.component.html │ │ │ │ │ ├── noovolari-dialog.component.scss │ │ │ │ │ ├── noovolari-dialog.component.spec.ts │ │ │ │ │ └── noovolari-dialog.component.ts │ │ │ │ ├── options-dialog │ │ │ │ │ ├── options-dialog.component.html │ │ │ │ │ ├── options-dialog.component.scss │ │ │ │ │ ├── options-dialog.component.spec.ts │ │ │ │ │ └── options-dialog.component.ts │ │ │ │ ├── segment-dialog │ │ │ │ │ ├── segment-dialog.component.html │ │ │ │ │ ├── segment-dialog.component.scss │ │ │ │ │ ├── segment-dialog.component.spec.ts │ │ │ │ │ └── segment-dialog.component.ts │ │ │ │ ├── ssm-modal-dialog │ │ │ │ │ ├── ssm-modal-dialog.component.html │ │ │ │ │ ├── ssm-modal-dialog.component.scss │ │ │ │ │ └── ssm-modal-dialog.component.ts │ │ │ │ └── update-dialog │ │ │ │ │ ├── update-dialog.component.html │ │ │ │ │ ├── update-dialog.component.scss │ │ │ │ │ ├── update-dialog.component.spec.ts │ │ │ │ │ └── update-dialog.component.ts │ │ │ ├── filter-menu │ │ │ │ ├── filter-menu.component.html │ │ │ │ ├── filter-menu.component.scss │ │ │ │ ├── filter-menu.component.spec.ts │ │ │ │ └── filter-menu.component.ts │ │ │ ├── integration-bar │ │ │ │ ├── integration-bar.component.html │ │ │ │ ├── integration-bar.component.scss │ │ │ │ ├── integration-bar.component.spec.ts │ │ │ │ └── integration-bar.component.ts │ │ │ ├── leapp-select │ │ │ │ ├── leapp-select.component.html │ │ │ │ ├── leapp-select.component.scss │ │ │ │ ├── leapp-select.component.spec.ts │ │ │ │ └── leapp-select.component.ts │ │ │ ├── lock-page │ │ │ │ ├── lock-page.component.html │ │ │ │ ├── lock-page.component.scss │ │ │ │ ├── lock-page.component.spec.ts │ │ │ │ └── lock-page.component.ts │ │ │ ├── sessions │ │ │ │ ├── pipes │ │ │ │ │ ├── detail.pipe.ts │ │ │ │ │ ├── filtering.pipe.spec.ts │ │ │ │ │ ├── filtering.pipe.ts │ │ │ │ │ ├── ordering.pipe.spec.ts │ │ │ │ │ ├── ordering.pipe.ts │ │ │ │ │ └── querying.pipe.ts │ │ │ │ ├── session-card │ │ │ │ │ ├── session-card.component.html │ │ │ │ │ ├── session-card.component.scss │ │ │ │ │ └── session-card.component.ts │ │ │ │ ├── sessions.component.html │ │ │ │ ├── sessions.component.scss │ │ │ │ └── sessions.component.ts │ │ │ ├── side-bar │ │ │ │ ├── side-bar.component.html │ │ │ │ ├── side-bar.component.scss │ │ │ │ ├── side-bar.component.spec.ts │ │ │ │ └── side-bar.component.ts │ │ │ ├── snackbar │ │ │ │ ├── snackbar.component.html │ │ │ │ ├── snackbar.component.scss │ │ │ │ ├── snackbar.component.spec.ts │ │ │ │ └── snackbar.component.ts │ │ │ ├── sync-pro-widget │ │ │ │ ├── sync-pro-widget.component.html │ │ │ │ ├── sync-pro-widget.component.scss │ │ │ │ ├── sync-pro-widget.component.spec.ts │ │ │ │ └── sync-pro-widget.component.ts │ │ │ └── tray-menu │ │ │ │ ├── tray-menu.component.html │ │ │ │ ├── tray-menu.component.scss │ │ │ │ ├── tray-menu.component.spec.ts │ │ │ │ └── tray-menu.component.ts │ │ ├── layout │ │ │ ├── layout.module.ts │ │ │ └── main-layout │ │ │ │ ├── main-layout.component.html │ │ │ │ ├── main-layout.component.scss │ │ │ │ └── main-layout.component.ts │ │ └── services │ │ │ ├── analytics.service.spec.ts │ │ │ ├── analytics.service.ts │ │ │ ├── app-aws-authentication.service.ts │ │ │ ├── app-keychain-service.ts │ │ │ ├── app-mfa-code-prompt.service.spec.ts │ │ │ ├── app-mfa-code-prompt.service.ts │ │ │ ├── app-native-logger-service.ts │ │ │ ├── app-native.service.spec.ts │ │ │ ├── app-native.service.ts │ │ │ ├── app-provider.service.spec.ts │ │ │ ├── app-provider.service.ts │ │ │ ├── app-ssm.service.spec.ts │ │ │ ├── app-ssm.service.ts │ │ │ ├── app-verification-window.service.ts │ │ │ ├── app.service.spec.ts │ │ │ ├── app.service.ts │ │ │ ├── extension-websocket.service.ts │ │ │ ├── message-toaster.service.ts │ │ │ ├── middleware │ │ │ ├── error.service.spec.ts │ │ │ └── error.service.ts │ │ │ ├── msal-encryption.service.ts │ │ │ ├── options.service.ts │ │ │ ├── selected-session-actions.service.ts │ │ │ ├── team-service-stub.ts │ │ │ ├── updater.service.spec.ts │ │ │ ├── updater.service.ts │ │ │ └── window.service.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── fonts │ │ │ ├── icomoon-2.ttf │ │ │ └── icomoon.ttf │ │ ├── i18n │ │ │ ├── en.json │ │ │ └── it.json │ │ ├── icons │ │ │ ├── background.png │ │ │ ├── icon.icns │ │ │ ├── icon.ico │ │ │ └── icon.png │ │ ├── images │ │ │ ├── Home_icon.png │ │ │ ├── Leapp-rounded.png │ │ │ ├── Leapp.icns │ │ │ ├── Leapp.ico │ │ │ ├── Leapp.png │ │ │ ├── LeappMini.png │ │ │ ├── LeappMini@2x.png │ │ │ ├── LeappTemplate.png │ │ │ ├── LeappTemplate@2x.png │ │ │ ├── Leapp_Logo_Blu.png │ │ │ ├── Leapp_Logo_white.png │ │ │ ├── account-hero.png │ │ │ ├── alibaba.png │ │ │ ├── arrows-clockwise-fill.svg │ │ │ ├── aws-dark.png │ │ │ ├── aws-logo.svg │ │ │ ├── aws-old.png │ │ │ ├── aws-sso-logo.png │ │ │ ├── aws.png │ │ │ ├── azure-dark.png │ │ │ ├── azure-logo.svg │ │ │ ├── azure.png │ │ │ ├── back.png │ │ │ ├── bars.svg │ │ │ ├── be-auth-logo.svg │ │ │ ├── book-open-text.svg │ │ │ ├── books.svg │ │ │ ├── bug.svg │ │ │ ├── buildings.svg │ │ │ ├── check.svg │ │ │ ├── dots-three-outline-vertical-fill.svg │ │ │ ├── edit-light.png │ │ │ ├── error.png │ │ │ ├── fake_blur.png │ │ │ ├── favicon.png │ │ │ ├── fingerprint.png │ │ │ ├── gear.svg │ │ │ ├── google.png │ │ │ ├── home-offline.png │ │ │ ├── home-online.png │ │ │ ├── icon-offline.png │ │ │ ├── icon-online-aws.png │ │ │ ├── icon-online-azure.png │ │ │ ├── in-browser.png │ │ │ ├── leapp-logo-dark-theme.png │ │ │ ├── leapp-logo-white-theme.png │ │ │ ├── leapp-team-early-access.png │ │ │ ├── lightbulb.svg │ │ │ ├── lines.png │ │ │ ├── loading-pc.png │ │ │ ├── localstack.png │ │ │ ├── lock-key-fill.svg │ │ │ ├── logout.png │ │ │ ├── medal.svg │ │ │ ├── more.svg │ │ │ ├── no-result-found-filter.png │ │ │ ├── no-result-found.png │ │ │ ├── no-sessions.png │ │ │ ├── noovolari-logo-dark-theme.png │ │ │ ├── noovolari-logo-white-theme.png │ │ │ ├── notifications.svg │ │ │ ├── question-fill.svg │ │ │ ├── read-notification.svg │ │ │ ├── sign-in.svg │ │ │ ├── sign-out.svg │ │ │ ├── slack.svg │ │ │ ├── start-screen.png │ │ │ ├── stop-circle-light-dark.png │ │ │ ├── stop-circle-light.png │ │ │ ├── survey-infographic.png │ │ │ ├── sync.svg │ │ │ ├── syncerror.svg │ │ │ ├── syncfailed.svg │ │ │ ├── syncprogress.svg │ │ │ ├── trash-alt-light.png │ │ │ ├── unread-notification.svg │ │ │ ├── unsync.png │ │ │ ├── unsync.svg │ │ │ ├── user-offline.png │ │ │ ├── user-online.png │ │ │ ├── white-background.png │ │ │ ├── windows_close.png │ │ │ ├── windows_close_dark.png │ │ │ ├── windows_maximize.png │ │ │ ├── windows_maximize_dark.png │ │ │ ├── windows_minimize.png │ │ │ └── windows_minimize_dark.png │ │ ├── locales │ │ │ ├── en.json │ │ │ └── it.json │ │ └── scss │ │ │ ├── dark-theme.scss │ │ │ ├── form.scss │ │ │ ├── global.scss │ │ │ ├── icon-font.scss │ │ │ ├── loader.scss │ │ │ ├── media-query.scss │ │ │ ├── mixins │ │ │ ├── palette.scss │ │ │ └── utility.scss │ │ │ ├── modals.scss │ │ │ ├── ng-select.scss │ │ │ └── toast.scss │ ├── base-injectables.ts │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts │ ├── tsconfig.json │ └── tsconfig.spec.json └── tsconfig.json /.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@commitlint/config-conventional"] 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | tab_width = 2 9 | max_line_length = 150 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | max_line_length = off 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [Noovolari] 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Changelog** 2 | 3 | List of new feature and/or fixes here. 4 | 5 | **Bugfixes** 6 | 7 | Describe the fixes and specifying the issue if related. 8 | 9 | **Enhancements** 10 | 11 | Describe the enhancements specifying the issue if related. 12 | 13 | **Notes** 14 | 15 | Write eventual notes or reminders specifying if you have any sort of reference 16 | 17 | -------------------------------------------------------------------------------- /.github/images/AWS_SSO.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/AWS_SSO.gif -------------------------------------------------------------------------------- /.github/images/Leapp-Keynote-pitch.001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/Leapp-Keynote-pitch.001.png -------------------------------------------------------------------------------- /.github/images/Leapp-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/Leapp-animation.gif -------------------------------------------------------------------------------- /.github/images/PROJECT_STRUCTURE_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/PROJECT_STRUCTURE_1.png -------------------------------------------------------------------------------- /.github/images/README-1-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/README-1-dark.png -------------------------------------------------------------------------------- /.github/images/README-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/README-1.png -------------------------------------------------------------------------------- /.github/images/README-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/README-2.png -------------------------------------------------------------------------------- /.github/images/azure-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/azure-gif.gif -------------------------------------------------------------------------------- /.github/images/federated-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/federated-gif.gif -------------------------------------------------------------------------------- /.github/images/mfa-ex-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/mfa-ex-1.png -------------------------------------------------------------------------------- /.github/images/options-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/options-proxy.png -------------------------------------------------------------------------------- /.github/images/plain-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/plain-gif.gif -------------------------------------------------------------------------------- /.github/images/truster-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/.github/images/truster-gif.gif -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request semantic versioning check 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | - edited 8 | - synchronize 9 | 10 | jobs: 11 | lint_pr: 12 | name: Lint PR 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: amannn/action-semantic-pull-request@v3.4.0 16 | env: 17 | GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} 18 | with: 19 | validateSingleCommit: true 20 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit 5 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 16.14.0 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrow-parens": ["error", "always"], 3 | "trailing-spaces": "off" 4 | } 5 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | docs.leapp.cloud -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | docs.leapp.cloud 2 | -------------------------------------------------------------------------------- /docs/cli/scopes/help.md: -------------------------------------------------------------------------------- 1 | `leapp help` 2 | ============ 3 | 4 | Display help for leapp. 5 | 6 | * [`leapp help [COMMANDS]`](#leapp-help-commands) 7 | 8 | ## `leapp help [COMMANDS]` 9 | 10 | Display help for leapp. 11 | 12 | ```console 13 | USAGE 14 | $ leapp help [COMMANDS] [-n] 15 | 16 | ARGUMENTS 17 | COMMANDS Command to show help for. 18 | 19 | FLAGS 20 | -n, --nested-commands Include all nested commands in the output. 21 | 22 | DESCRIPTION 23 | Display help for leapp. 24 | ``` 25 | 26 | _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ 27 | -------------------------------------------------------------------------------- /docs/cli/scopes/region.md: -------------------------------------------------------------------------------- 1 | `leapp region` 2 | ============== 3 | 4 | Leapp regions management 5 | 6 | * [`leapp region get-default`](#leapp-region-get-default) 7 | * [`leapp region set-default`](#leapp-region-set-default) 8 | 9 | ## `leapp region get-default` 10 | 11 | Displays the default region 12 | 13 | ```console 14 | USAGE 15 | $ leapp region get-default 16 | 17 | DESCRIPTION 18 | Displays the default region 19 | 20 | EXAMPLES 21 | $leapp region get-default 22 | ``` 23 | 24 | ## `leapp region set-default` 25 | 26 | Change the default region 27 | 28 | ```console 29 | USAGE 30 | $ leapp region set-default [--region ] 31 | 32 | FLAGS 33 | --region= Session Region for AWS sessions in Leapp 34 | 35 | DESCRIPTION 36 | Change the default region 37 | 38 | EXAMPLES 39 | $leapp region set-default 40 | 41 | $leapp region set-default --region AWSREGION 42 | ``` 43 | -------------------------------------------------------------------------------- /docs/cli/scopes/set-workspace.md: -------------------------------------------------------------------------------- 1 | `leapp set-workspace` 2 | ===================== 3 | 4 | Set the current Leapp workspace 5 | 6 | * [`leapp set-workspace [WORKSPACENAME]`](#leapp-set-workspace-workspacename) 7 | 8 | ## `leapp set-workspace [WORKSPACENAME]` 9 | 10 | Set the current Leapp workspace 11 | 12 | ```console 13 | USAGE 14 | $ leapp set-workspace [WORKSPACENAME] 15 | 16 | ARGUMENTS 17 | WORKSPACENAME name of the Leapp Team remote workspace or local 18 | 19 | DESCRIPTION 20 | Set the current Leapp workspace 21 | 22 | EXAMPLES 23 | $leapp team set-workspace 24 | 25 | $leapp team set-workspace local 26 | 27 | $leapp team set-workspace WORKSPACE-NAME 28 | ``` 29 | 30 | _See code: [dist/commands/set-workspace.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/set-workspace.ts)_ 31 | -------------------------------------------------------------------------------- /docs/cli/scopes/version.md: -------------------------------------------------------------------------------- 1 | `leapp version` 2 | =============== 3 | 4 | Displays the Cli and Core versions 5 | 6 | * [`leapp version`](#leapp-version) 7 | 8 | ## `leapp version` 9 | 10 | Displays the Cli and Core versions 11 | 12 | ```console 13 | USAGE 14 | $ leapp version 15 | 16 | DESCRIPTION 17 | Displays the Cli and Core versions 18 | 19 | EXAMPLES 20 | $leapp version 21 | ``` 22 | 23 | _See code: [dist/commands/version.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/version.ts)_ 24 | -------------------------------------------------------------------------------- /docs/cli/scopes/workspace.md: -------------------------------------------------------------------------------- 1 | `leapp workspace` 2 | ================= 3 | 4 | Show the current workspace 5 | 6 | * [`leapp workspace`](#leapp-workspace) 7 | 8 | ## `leapp workspace` 9 | 10 | Show the current workspace 11 | 12 | ```console 13 | USAGE 14 | $ leapp workspace 15 | 16 | DESCRIPTION 17 | Show the current workspace 18 | 19 | EXAMPLES 20 | $leapp workspace 21 | ``` 22 | 23 | _See code: [dist/commands/workspace.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/workspace.ts)_ 24 | -------------------------------------------------------------------------------- /docs/contributing/get-involved.md: -------------------------------------------------------------------------------- 1 | # Get involved 2 | 3 | Contributions and questions are not just welcome, they’re essential! Please open issues with ideas on how to improve Leapp, including feedback, critiques, and information about how you’re using it. Discussion is at the heart of the project and your thoughts and ideas will help make it better for everyone, thank you. :blue_heart: 4 | 5 | Read our [contribution guide](https://github.com/Noovolari/leapp/blob/master/CONTRIBUTING.md){: target='_blank'} to learn more. 6 | 7 | You can chat with us in our community, so join us, or feel free to contact us via the [website](https://www.leapp.cloud/contacts){: target='_blank'}! 8 | 9 | [Join our Community :fontawesome-brands-slack:](https://join.slack.com/t/noovolari/shared_invite/zt-opn8q98k-HDZfpJ2_2U3RdTnN~u_B~Q){ .md-button .md-button--primary .centered-button } 10 | -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_AWS_SSO_ROLE_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_AWS_SSO_ROLE_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_FEDERATED_ROLE_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_FEDERATED_ROLE_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_USER_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_IAM_CHAINED_ROLE_FROM_USER_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_IAM_FEDERATED_ROLE_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_IAM_FEDERATED_ROLE_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_IAM_USER_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_IAM_USER_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AWS_SSO_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AWS_SSO_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/access_schemas/AZURE_ACCESS_SCHEMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/access_schemas/AZURE_ACCESS_SCHEMA.png -------------------------------------------------------------------------------- /docs/images/built-in-features/enable-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/enable-option.png -------------------------------------------------------------------------------- /docs/images/built-in-features/extension-communication-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/extension-communication-error.png -------------------------------------------------------------------------------- /docs/images/built-in-features/extension-uninstall-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/extension-uninstall-1.png -------------------------------------------------------------------------------- /docs/images/built-in-features/extension-uninstall-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/extension-uninstall-2.png -------------------------------------------------------------------------------- /docs/images/built-in-features/leapp-browser-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/leapp-browser-ui.png -------------------------------------------------------------------------------- /docs/images/built-in-features/leapp-extension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/leapp-extension.png -------------------------------------------------------------------------------- /docs/images/built-in-features/opening-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/opening-screen.png -------------------------------------------------------------------------------- /docs/images/built-in-features/opening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/opening.png -------------------------------------------------------------------------------- /docs/images/built-in-features/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/plus.png -------------------------------------------------------------------------------- /docs/images/built-in-features/ssm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/built-in-features/ssm.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_1.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_2.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_3.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_4.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_named_profiles/AWS_NAMED_PROFILES_5.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_sso/AWS_SSO-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_sso/AWS_SSO-1.png -------------------------------------------------------------------------------- /docs/images/contributing/aws_sso/AWS_SSO-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/aws_sso/AWS_SSO-2.png -------------------------------------------------------------------------------- /docs/images/contributing/default_options/DEFAULT_OPTIONS-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/default_options/DEFAULT_OPTIONS-1.png -------------------------------------------------------------------------------- /docs/images/contributing/default_options/DEFAULT_OPTIONS-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/default_options/DEFAULT_OPTIONS-2.png -------------------------------------------------------------------------------- /docs/images/contributing/project_structure/PROJECT_STRUCTURE-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/contributing/project_structure/PROJECT_STRUCTURE-1.png -------------------------------------------------------------------------------- /docs/images/editsession.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/editsession.png -------------------------------------------------------------------------------- /docs/images/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/gear.png -------------------------------------------------------------------------------- /docs/images/hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/hamburger.png -------------------------------------------------------------------------------- /docs/images/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/icon.ico -------------------------------------------------------------------------------- /docs/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/icon.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-app-pro-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-app-pro-workspace.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-app-settings-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-app-settings-button.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-app-settings-plans-upgrade-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-app-settings-plans-upgrade-button.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-app-upgrade-pro-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-app-upgrade-pro-dialog.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-pro-sign-up-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-pro-sign-up-page.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-pro-upgrade-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-pro-upgrade-email.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/leapp-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/leapp-pro.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/local-workspace-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/local-workspace-button.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/local-workspace-sign-in-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/local-workspace-sign-in-option.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/lock-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/lock-screen.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/pro-workspace-area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/pro-workspace-area.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/pro-workspace-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/pro-workspace-button.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/pro-workspace-lock-option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/pro-workspace-lock-option.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/sign-in-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/sign-in-dialog.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/syncfailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/syncfailed.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/syncok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/syncok.png -------------------------------------------------------------------------------- /docs/images/leapp-pro/syncprogress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp-pro/syncprogress.png -------------------------------------------------------------------------------- /docs/images/leapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/leapp.png -------------------------------------------------------------------------------- /docs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/logo.png -------------------------------------------------------------------------------- /docs/images/main-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/main-window.png -------------------------------------------------------------------------------- /docs/images/meta/social/aws-iam-role-chained-session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/aws-iam-role-chained-session.png -------------------------------------------------------------------------------- /docs/images/meta/social/aws-iam-role-federated-session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/aws-iam-role-federated-session.png -------------------------------------------------------------------------------- /docs/images/meta/social/aws-iam-user-session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/aws-iam-user-session.png -------------------------------------------------------------------------------- /docs/images/meta/social/aws-single-sign-on-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/aws-single-sign-on-integration.png -------------------------------------------------------------------------------- /docs/images/meta/social/azure-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/azure-integration.png -------------------------------------------------------------------------------- /docs/images/meta/social/configure-ec2-connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/configure-ec2-connect.png -------------------------------------------------------------------------------- /docs/images/meta/social/configure-multi-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/configure-multi-console.png -------------------------------------------------------------------------------- /docs/images/meta/social/configure-named-profiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/configure-named-profiles.png -------------------------------------------------------------------------------- /docs/images/meta/social/configure-open-web-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/meta/social/configure-open-web-console.png -------------------------------------------------------------------------------- /docs/images/modalcredentialprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/modalcredentialprocess.png -------------------------------------------------------------------------------- /docs/images/plugin-system/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/plugin-system/screen1.png -------------------------------------------------------------------------------- /docs/images/plugin-system/screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/plugin-system/screen2.png -------------------------------------------------------------------------------- /docs/images/plugin-system/screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/plugin-system/screen3.png -------------------------------------------------------------------------------- /docs/images/plugin-system/screen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/plugin-system/screen4.png -------------------------------------------------------------------------------- /docs/images/screens/aws-iam-role-chained.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/aws-iam-role-chained.png -------------------------------------------------------------------------------- /docs/images/screens/aws-iam-role-federated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/aws-iam-role-federated.png -------------------------------------------------------------------------------- /docs/images/screens/aws-iam-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/aws-iam-user.png -------------------------------------------------------------------------------- /docs/images/screens/aws-ssm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/aws-ssm.png -------------------------------------------------------------------------------- /docs/images/screens/aws-sso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/aws-sso.png -------------------------------------------------------------------------------- /docs/images/screens/azure-tenant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/azure-tenant.png -------------------------------------------------------------------------------- /docs/images/screens/azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/azure.png -------------------------------------------------------------------------------- /docs/images/screens/create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/create.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/aws-iam-role-chained.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/aws-iam-role-chained.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/aws-iam-role-federated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/aws-iam-role-federated.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/aws-iam-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/aws-iam-user.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/aws-ssm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/aws-ssm.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/aws-sso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/aws-sso.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/azure-tenant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/azure-tenant.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/leapp-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/leapp-dark.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/leapp-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/leapp-options.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/main-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/main-window.png -------------------------------------------------------------------------------- /docs/images/screens/newuxui/update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/newuxui/update.png -------------------------------------------------------------------------------- /docs/images/screens/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/screens/select.png -------------------------------------------------------------------------------- /docs/images/startsession.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/startsession.png -------------------------------------------------------------------------------- /docs/images/testconnection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/testconnection.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_4.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_5.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_6.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_7.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/aws_sso/SETUP_IN_LEAPP_8.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_IN_LEAPP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_TRUST_RELATIONSHIP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_chained_role/AWS_IAM_CHAINED_ROLE_SETUP_TRUST_RELATIONSHIP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/ASSIGN_ROLE_TO_GSUITE_PRINCIPAL-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/AWS_FEDERATION_SETUP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/AWS_FEDERATION_SETUP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/AWS_FEDERATION_SETUP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/AWS_FEDERATION_SETUP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/ENABLE_ROLE_FEDERATED_ACCESS-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/ENABLE_ROLE_FEDERATED_ACCESS-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-10.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-11.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-12.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-13.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-14.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-4.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-5.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-6.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-7.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-8.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/G_SUITE_FEDERATION_SETUP-9.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_federated_role/SETUP_IN_LEAPP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws/iam_user/SETUP_IN_LEAPP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-4.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-5.png -------------------------------------------------------------------------------- /docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/aws_ssm_connect/AWS_SSM_CONNECT-6.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/G_SUITE_FEDERATION_SETUP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/SETUP_IN_LEAPP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/SETUP_IN_LEAPP-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/SETUP_IN_LEAPP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/SETUP_IN_LEAPP-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/azure/SETUP_IN_LEAPP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/azure/SETUP_IN_LEAPP-3.png -------------------------------------------------------------------------------- /docs/images/tutorials/export-pro-workspace/export-pro-workspace-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/export-pro-workspace/export-pro-workspace-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/export-pro-workspace/export-pro-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/export-pro-workspace/export-pro-workspace.png -------------------------------------------------------------------------------- /docs/images/tutorials/first_access/FIRST_ACCESS-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/first_access/FIRST_ACCESS-1.png -------------------------------------------------------------------------------- /docs/images/tutorials/first_access/FIRST_ACCESS-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/first_access/FIRST_ACCESS-2.png -------------------------------------------------------------------------------- /docs/images/tutorials/first_access/FIRST_ACCESS-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/images/tutorials/first_access/FIRST_ACCESS-3.png -------------------------------------------------------------------------------- /docs/videos/Azure.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/Azure.gif -------------------------------------------------------------------------------- /docs/videos/Chained.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/Chained.gif -------------------------------------------------------------------------------- /docs/videos/Federated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/Federated.gif -------------------------------------------------------------------------------- /docs/videos/SSM.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/SSM.gif -------------------------------------------------------------------------------- /docs/videos/SSO.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/SSO.gif -------------------------------------------------------------------------------- /docs/videos/User.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/User.gif -------------------------------------------------------------------------------- /docs/videos/aws_iam_user.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/aws_iam_user.mp4 -------------------------------------------------------------------------------- /docs/videos/intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/intro.gif -------------------------------------------------------------------------------- /docs/videos/newuxui/aws-iam-chained.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/aws-iam-chained.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/aws-iam-federated.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/aws-iam-federated.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/aws-iam-user.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/aws-iam-user.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/aws-sso.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/aws-sso.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/azure-integration.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/azure-integration.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/azure.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/azure.mp4 -------------------------------------------------------------------------------- /docs/videos/newuxui/ssm.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs/videos/newuxui/ssm.mp4 -------------------------------------------------------------------------------- /docs_extra/404.html: -------------------------------------------------------------------------------- 1 | {% extends "main.html" %} 2 | 3 | 4 | {% block content %} 5 |

The page you are looking for does not exist

6 |
7 | 404 image 8 |
9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /docs_extra/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/docs_extra/images/7.png -------------------------------------------------------------------------------- /dpapi-addon/bin/darwin-x64-89/dpapi-addon.node: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/dpapi-addon/bin/darwin-x64-89/dpapi-addon.node -------------------------------------------------------------------------------- /dpapi-addon/binding.gyp: -------------------------------------------------------------------------------- 1 | { 2 | "targets": [ 3 | { 4 | 'target_name': 'dpapi', 5 | 'version': '0.1.0', 6 | 'sources': [ 7 | 'dpapi-addon/main.cpp', 8 | 'dpapi-addon/dpapi_addon.h' 9 | ], 10 | 'include_dirs': [ 11 | " 7 | 8 | v8::Local CreateUtf8String(v8::Isolate* isolate, char* strData) 9 | { 10 | return v8::String::NewFromUtf8(isolate, strData, v8::NewStringType::kNormal).ToLocalChecked(); 11 | } 12 | 13 | void ProtectDataCommon(bool protect, Nan::NAN_METHOD_ARGS_TYPE info) 14 | { 15 | v8::Isolate* isolate = info.GetIsolate(); 16 | 17 | isolate->ThrowException(v8::Exception::Error( 18 | CreateUtf8String(isolate, "Data protection API is not available on macOs or Linux"))); 19 | } 20 | -------------------------------------------------------------------------------- /dpapi-addon/dpapi-addon/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | #include 7 | #include "dpapi_addon.h" 8 | 9 | NAN_METHOD(protectData) 10 | { 11 | ProtectDataCommon(true, info); 12 | } 13 | 14 | NAN_METHOD(unprotectData) 15 | { 16 | ProtectDataCommon(false, info); 17 | } 18 | 19 | NAN_MODULE_INIT(init) 20 | { 21 | Nan::Set( 22 | target, 23 | Nan::New("protectData").ToLocalChecked(), 24 | Nan::GetFunction(Nan::New(protectData)).ToLocalChecked()); 25 | 26 | Nan::Set( 27 | target, 28 | Nan::New("unprotectData").ToLocalChecked(), 29 | Nan::GetFunction(Nan::New(unprotectData)).ToLocalChecked()); 30 | } 31 | 32 | NODE_MODULE_INIT() 33 | { 34 | init(exports); 35 | } 36 | -------------------------------------------------------------------------------- /dpapi-addon/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@noovolari/dpapi-addon", 3 | "version": "0.1.2", 4 | "author": { 5 | "name": "Noovolari", 6 | "email": "info@noovolari.com" 7 | }, 8 | "description": "Leapp dpapi addon.", 9 | "main": "dpapi-addon/Dpapi.js", 10 | "homepage": "https://github.com/Noovolari/leapp", 11 | "scripts": { 12 | }, 13 | "dependencies": { 14 | "bindings": "^1.5.0", 15 | "nan": "^2.13.2" 16 | }, 17 | "devDependencies": { 18 | "electron-rebuild": "3.2.3" 19 | }, 20 | "publishConfig": { 21 | "access": "public" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gushio/delete-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function deleteFunction(path, ...relativePath) { 2 | const dirPath = path.join(__dirname, ...relativePath) 3 | await fs.remove(dirPath) 4 | } 5 | -------------------------------------------------------------------------------- /gushio/get-nightly-version.js: -------------------------------------------------------------------------------- 1 | module.exports = function getNightlyVersion(onlyDay = false) { 2 | const jsDate = new Date(); 3 | return jsDate.getFullYear() + 4 | ('0' + (jsDate.getMonth() + 1)).slice(-2) + 5 | ('0' + (jsDate.getDate())).slice(-2) + 6 | (onlyDay ? "" : 7 | ('0' + (jsDate.getHours())).slice(-2) + 8 | ('0' + (jsDate.getMinutes())).slice(-2)); 9 | } 10 | -------------------------------------------------------------------------------- /gushio/read-package-json-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function readPackageJsonFunction(path, packageName) { 2 | const packageFile = await fs.readFile(path.join(__dirname, '..', 'packages', packageName, 'package.json')) 3 | return JSON.parse(packageFile) 4 | } 5 | -------------------------------------------------------------------------------- /gushio/set-dev-environment.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'set-dev-environment', 4 | description: 'Set the environment in development mode (enable monorepo dependencies symlinks)', 5 | version: '0.1', 6 | arguments: [], 7 | }, 8 | run: async () => { 9 | const leappCoreBootstrap = require('./leapp-core-bootstrap') 10 | const packageNames = ['desktop-app', 'cli'] 11 | 12 | try { 13 | for (const packageName of packageNames) { 14 | console.log(`enabling monorepo dependencies symlinks for ${packageName}...`) 15 | await leappCoreBootstrap(packageName, () => 'file:../core'); 16 | } 17 | } catch (e) { 18 | e.message = e.stack.red 19 | throw e 20 | } 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /gushio/set-pro-environment.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'set-pro-environment', 4 | description: 'Set the environment in production mode (disable monorepo dependencies symlinks)', 5 | version: '0.1', 6 | arguments: [], 7 | }, 8 | run: async () => { 9 | const leappCoreBootstrap = require('./leapp-core-bootstrap') 10 | const packageNames = ['desktop-app', 'cli'] 11 | try { 12 | for (const packageName of packageNames) { 13 | console.log(`disabling monorepo dependencies symlinks for ${packageName}...`) 14 | await leappCoreBootstrap(packageName, (corePackage) => corePackage['version']); 15 | } 16 | } catch (e) { 17 | e.message = e.stack.red 18 | throw e 19 | } 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /gushio/write-package-json-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function writePackageJsonFunction(path, packageName, packageJson) { 2 | await fs.writeFile(path.join(__dirname, '..', 'packages', packageName, 'package.json'), 3 | JSON.stringify(packageJson, undefined, 2)) 4 | } 5 | -------------------------------------------------------------------------------- /jest.preset.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | verbose: true, 3 | silent: false, 4 | testMatch: [ 5 | "**/*.spec.ts", 6 | "!dist/", 7 | "!node_modules/" 8 | ], 9 | moduleNameMapper: { 10 | "^@noovolari/leapp-core/(.*)$": "@noovolari/leapp-core/dist/$1", 11 | "axios": "axios/dist/node/axios.cjs" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /mkdocs.insiders.yml: -------------------------------------------------------------------------------- 1 | INHERIT: mkdocs.yml 2 | plugins: 3 | - search 4 | - social 5 | - tags 6 | -------------------------------------------------------------------------------- /packages/cli/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | ['@babel/preset-env', {targets: {node: 'current'}}], 4 | '@babel/preset-typescript', 5 | 6 | ], 7 | plugins: [ 8 | ["@babel/plugin-proposal-decorators", { "legacy": true }] 9 | ] 10 | } 11 | 12 | -------------------------------------------------------------------------------- /packages/cli/bin/dev: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const oclif = require('@oclif/core') 4 | 5 | const path = require('path') 6 | const project = path.join(__dirname, '..', 'tsconfig.json') 7 | 8 | // In dev mode -> use ts-node and dev plugins 9 | process.env.NODE_ENV = 'development' 10 | 11 | require('ts-node').register({project}) 12 | 13 | // In dev mode, always show stack traces 14 | oclif.settings.debug = true; 15 | 16 | // Start the CLI 17 | oclif.run().then(oclif.flush).catch(oclif.Errors.handle) 18 | -------------------------------------------------------------------------------- /packages/cli/bin/dev.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | node "%~dp0\dev" %* -------------------------------------------------------------------------------- /packages/cli/bin/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const oclif = require('@oclif/core') 4 | 5 | oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle')) 6 | -------------------------------------------------------------------------------- /packages/cli/bin/run.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | node "%~dp0\run" %* 4 | -------------------------------------------------------------------------------- /packages/cli/gushio/compile-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function compileFunction(path, shellJs) { 2 | shellJs.cd(path.join(__dirname, '..')) 3 | const result = shellJs.exec('npx tsc') 4 | if (result.code !== 0) { 5 | throw new Error(result.stderr) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/cli/gushio/delete-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function deleteFunction(path, ...relativePath) { 2 | const dirPath = path.join(__dirname, ...relativePath) 3 | await fs.remove(dirPath) 4 | } 5 | -------------------------------------------------------------------------------- /packages/cli/gushio/homebrew/get-formula.js: -------------------------------------------------------------------------------- 1 | module.exports = (version, tarballUrl, tarballSha256) => `require "language/node" 2 | 3 | class LeappCli < Formula 4 | desc "Install Leapp CLI" 5 | homepage "https://leapp.cloud" 6 | version "${version}" 7 | url "${tarballUrl}" 8 | sha256 "${tarballSha256}" 9 | 10 | depends_on "node" 11 | depends_on "libsecret" 12 | depends_on "python" => :build 13 | 14 | def install 15 | system "npm", "install", *Language::Node.std_npm_install_args(libexec).reject { |a| a == "--build-from-source" } 16 | bin.install_symlink Dir["#{libexec}/bin/*"] 17 | end 18 | 19 | test do 20 | system bin/"leapp", "version" 21 | end 22 | end` 23 | -------------------------------------------------------------------------------- /packages/cli/gushio/homebrew/get-installer-formula.js: -------------------------------------------------------------------------------- 1 | module.exports = (version, tarballUrl, tarballSha256) => 2 | `class LeappCliDarwinArm64 < Formula 3 | desc "Install Leapp CLI" 4 | homepage "https://leapp.cloud" 5 | version "${version}" 6 | url "${tarballUrl}" 7 | sha256 "${tarballSha256}" 8 | 9 | def install 10 | inreplace "bin/leapp", /^CLIENT_HOME=/, "export LEAPP_OCLIF_CLIENT_HOME=#{lib/"client"}\\nCLIENT_HOME=" 11 | libexec.install Dir["*"] 12 | bin.install_symlink libexec/"bin/leapp" 13 | end 14 | 15 | test do 16 | system bin/"leapp", "version" 17 | end 18 | end` 19 | -------------------------------------------------------------------------------- /packages/cli/gushio/target-clean.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'clean', 4 | description: 'Cleanup all files built previously', 5 | version: '0.1' 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const deleteFunction = require('./delete-func') 10 | 11 | try { 12 | console.log('Performing cleanup... ') 13 | await deleteFunction(path, "..", "dist") 14 | await deleteFunction(path, "..", "build") 15 | await deleteFunction(path, "..", "coverage") 16 | await deleteFunction(path, "..", "tmp") 17 | console.log('Cleanup completed successfully') 18 | } catch (e) { 19 | e.message = e.stack.red 20 | throw e 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/cli/gushio/target-npm-release.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'release', 4 | description: 'Release the leapp-cli tool on NPM', 5 | version: '0.1', 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const shellJs = require('shelljs') 10 | const checkNpmCoreVersion = require('./check-npm-core-version') 11 | 12 | try { 13 | console.log('Publishing leapp-cli tool... ') 14 | 15 | await checkNpmCoreVersion(path, shellJs) 16 | 17 | shellJs.cd(path.join(__dirname, '..')) 18 | const result = shellJs.exec('npm publish') 19 | if (result.code !== 0) { 20 | throw new Error(result.stderr) 21 | } 22 | console.log('leapp-cli published on npm successfully') 23 | } catch (e) { 24 | e.message = e.stack.red 25 | throw e 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/cli/gushio/target-post-pack.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'clean', 4 | description: 'Post pack actions', 5 | version: '0.1' 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const deleteFunction = require('./delete-func') 10 | 11 | try { 12 | console.log('Performing post-pack actions... ') 13 | await deleteFunction(path, "..", "oclif.manifest.json") 14 | console.log('post-pack actions completed successfully') 15 | } catch (e) { 16 | e.message = e.stack.red 17 | throw e 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/cli/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "../../jest.preset.js", 3 | testTimeout: 10000, 4 | collectCoverageFrom: [ 5 | "src/**/*.ts", 6 | "!src/**/cli-native-service.ts", 7 | "!src/**/team-service.ts", 8 | "!src/**/team-service-stub.ts", 9 | "!src/**/leapp-team-core/**" 10 | ], 11 | coverageReporters: [ 12 | "lcov", 13 | "json-summary", 14 | "text", 15 | "text-summary" 16 | ] 17 | }; 18 | 19 | -------------------------------------------------------------------------------- /packages/cli/scopes/help.md: -------------------------------------------------------------------------------- 1 | `leapp help` 2 | ============ 3 | 4 | Display help for leapp. 5 | 6 | * [`leapp help [COMMANDS]`](#leapp-help-commands) 7 | 8 | ## `leapp help [COMMANDS]` 9 | 10 | Display help for leapp. 11 | 12 | ``` 13 | USAGE 14 | $ leapp help [COMMANDS] [-n] 15 | 16 | ARGUMENTS 17 | COMMANDS Command to show help for. 18 | 19 | FLAGS 20 | -n, --nested-commands Include all nested commands in the output. 21 | 22 | DESCRIPTION 23 | Display help for leapp. 24 | ``` 25 | 26 | _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ 27 | -------------------------------------------------------------------------------- /packages/cli/scopes/region.md: -------------------------------------------------------------------------------- 1 | `leapp region` 2 | ============== 3 | 4 | Leapp regions management 5 | 6 | * [`leapp region get-default`](#leapp-region-get-default) 7 | * [`leapp region set-default`](#leapp-region-set-default) 8 | 9 | ## `leapp region get-default` 10 | 11 | Displays the default region 12 | 13 | ``` 14 | USAGE 15 | $ leapp region get-default 16 | 17 | DESCRIPTION 18 | Displays the default region 19 | 20 | EXAMPLES 21 | $leapp region get-default 22 | ``` 23 | 24 | ## `leapp region set-default` 25 | 26 | Change the default region 27 | 28 | ``` 29 | USAGE 30 | $ leapp region set-default [--region ] 31 | 32 | FLAGS 33 | --region= Session Region for AWS sessions in Leapp 34 | 35 | DESCRIPTION 36 | Change the default region 37 | 38 | EXAMPLES 39 | $leapp region set-default 40 | 41 | $leapp region set-default --region AWSREGION 42 | ``` 43 | -------------------------------------------------------------------------------- /packages/cli/scopes/set-workspace.md: -------------------------------------------------------------------------------- 1 | `leapp set-workspace` 2 | ===================== 3 | 4 | Set the current Leapp workspace 5 | 6 | * [`leapp set-workspace [WORKSPACENAME]`](#leapp-set-workspace-workspacename) 7 | 8 | ## `leapp set-workspace [WORKSPACENAME]` 9 | 10 | Set the current Leapp workspace 11 | 12 | ``` 13 | USAGE 14 | $ leapp set-workspace [WORKSPACENAME] 15 | 16 | ARGUMENTS 17 | WORKSPACENAME name of the Leapp Team remote workspace or local 18 | 19 | DESCRIPTION 20 | Set the current Leapp workspace 21 | 22 | EXAMPLES 23 | $leapp team set-workspace 24 | 25 | $leapp team set-workspace local 26 | 27 | $leapp team set-workspace WORKSPACE-NAME 28 | ``` 29 | 30 | _See code: [dist/commands/set-workspace.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/set-workspace.ts)_ 31 | -------------------------------------------------------------------------------- /packages/cli/scopes/team.md: -------------------------------------------------------------------------------- 1 | `leapp team` 2 | ============ 3 | 4 | Login to your Team account 5 | 6 | * [`leapp team login`](#leapp-team-login) 7 | * [`leapp team logout`](#leapp-team-logout) 8 | * [`leapp team status`](#leapp-team-status) 9 | 10 | ## `leapp team login` 11 | 12 | Login to your Team account 13 | 14 | ``` 15 | USAGE 16 | $ leapp team login 17 | 18 | DESCRIPTION 19 | Login to your Team account 20 | 21 | EXAMPLES 22 | $leapp team login 23 | ``` 24 | 25 | ## `leapp team logout` 26 | 27 | Logout from your Team account 28 | 29 | ``` 30 | USAGE 31 | $ leapp team logout 32 | 33 | DESCRIPTION 34 | Logout from your Team account 35 | 36 | EXAMPLES 37 | $leapp team logout 38 | ``` 39 | 40 | ## `leapp team status` 41 | 42 | Get the team login status 43 | 44 | ``` 45 | USAGE 46 | $ leapp team status 47 | 48 | DESCRIPTION 49 | Get the team login status 50 | 51 | EXAMPLES 52 | $leapp team status 53 | ``` 54 | -------------------------------------------------------------------------------- /packages/cli/scopes/version.md: -------------------------------------------------------------------------------- 1 | `leapp version` 2 | =============== 3 | 4 | Displays the Cli and Core versions 5 | 6 | * [`leapp version`](#leapp-version) 7 | 8 | ## `leapp version` 9 | 10 | Displays the Cli and Core versions 11 | 12 | ``` 13 | USAGE 14 | $ leapp version 15 | 16 | DESCRIPTION 17 | Displays the Cli and Core versions 18 | 19 | EXAMPLES 20 | $leapp version 21 | ``` 22 | 23 | _See code: [dist/commands/version.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/version.ts)_ 24 | -------------------------------------------------------------------------------- /packages/cli/scopes/workspace.md: -------------------------------------------------------------------------------- 1 | `leapp workspace` 2 | ================= 3 | 4 | Show the current workspace 5 | 6 | * [`leapp workspace`](#leapp-workspace) 7 | 8 | ## `leapp workspace` 9 | 10 | Show the current workspace 11 | 12 | ``` 13 | USAGE 14 | $ leapp workspace 15 | 16 | DESCRIPTION 17 | Show the current workspace 18 | 19 | EXAMPLES 20 | $leapp workspace 21 | ``` 22 | 23 | _See code: [dist/commands/workspace.ts](https://github.com/noovolari/leapp/blob/v0.1.65/dist/commands/workspace.ts)_ 24 | -------------------------------------------------------------------------------- /packages/cli/src/commands/region/get-default.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, jest, test } from "@jest/globals"; 2 | import GetDefaultRegion from "./get-default"; 3 | 4 | describe("GetDefaultRegion", () => { 5 | test("run", async () => { 6 | const cliProviderService = { regionsService: { getDefaultAwsRegion: () => "defaultRegion" } } as any; 7 | 8 | const command = new GetDefaultRegion([], {} as any); 9 | (command as any).cliProviderService = cliProviderService; 10 | command.log = jest.fn(); 11 | 12 | await command.run(); 13 | 14 | expect(command.log).toHaveBeenCalledWith("defaultRegion"); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/cli/src/commands/region/get-default.ts: -------------------------------------------------------------------------------- 1 | import { LeappCommand } from "../../leapp-command"; 2 | import { Config } from "@oclif/core/lib/config/config"; 3 | 4 | export default class GetDefaultRegion extends LeappCommand { 5 | static description = "Displays the default region"; 6 | 7 | static examples = [`$leapp region get-default`]; 8 | 9 | constructor(argv: string[], config: Config) { 10 | super(argv, config); 11 | } 12 | 13 | async run(): Promise { 14 | const defaultAwsRegion = this.cliProviderService.regionsService.getDefaultAwsRegion(); 15 | this.log(defaultAwsRegion); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/cli/src/commands/team/status.ts: -------------------------------------------------------------------------------- 1 | import { LeappCommand } from "../../leapp-command"; 2 | import { Config } from "@oclif/core/lib/config/config"; 3 | 4 | export default class TeamStatus extends LeappCommand { 5 | static description = "Get the team login status"; 6 | 7 | static examples = [`$leapp team status`]; 8 | 9 | static flags = {}; 10 | 11 | constructor(argv: string[], config: Config) { 12 | super(argv, config); 13 | } 14 | 15 | async run(): Promise { 16 | try { 17 | const teamStatus = await this.cliProviderService.teamService.getTeamStatus(); 18 | this.log(teamStatus); 19 | } catch (error) { 20 | this.error(error instanceof Error ? error.message : `Unknown error: ${error}`); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/cli/src/commands/version.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, jest, test } from "@jest/globals"; 2 | import Version from "./version"; 3 | 4 | describe("Version", () => { 5 | test("run", async () => { 6 | const cliProviderService = { logService: { getCoreVersion: () => "test-core" } } as any; 7 | 8 | const command = new Version([], {} as any); 9 | (command as any).cliProviderService = cliProviderService; 10 | command.log = jest.fn(); 11 | const cliVersion = require("../../package.json").version; 12 | 13 | await command.run(); 14 | 15 | expect(command.log).toHaveBeenCalledWith(`Leapp Cli\n` + `Version ${cliVersion} (Core: test-core)\n` + "© 2022 Noovolari"); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/cli/src/commands/version.ts: -------------------------------------------------------------------------------- 1 | import { LeappCommand } from "../leapp-command"; 2 | import { Config } from "@oclif/core/lib/config/config"; 3 | 4 | export default class Version extends LeappCommand { 5 | static description = "Displays the Cli and Core versions"; 6 | 7 | static examples = [`$leapp version`]; 8 | 9 | constructor(argv: string[], config: Config) { 10 | super(argv, config); 11 | } 12 | 13 | async run(): Promise { 14 | const cliVersion = require("../../package.json").version; 15 | const coreVersion = this.cliProviderService.logService.getCoreVersion(); 16 | this.log(`Leapp Cli\n` + `Version ${cliVersion} (Core: ${coreVersion})\n` + "© 2022 Noovolari"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/cli/src/index.ts: -------------------------------------------------------------------------------- 1 | export { run } from "@oclif/core"; 2 | -------------------------------------------------------------------------------- /packages/cli/src/service/cli-native-logger-service.ts: -------------------------------------------------------------------------------- 1 | import { ILogger } from "@noovolari/leapp-core/interfaces/i-logger"; 2 | import { LogLevel } from "@noovolari/leapp-core/services/log-service"; 3 | 4 | export class CliNativeLoggerService implements ILogger { 5 | constructor() {} 6 | 7 | log(_message: string, _level: LogLevel): void { 8 | // TODO: add a file logger if needed 9 | } 10 | 11 | show(message: string, level: LogLevel): void { 12 | if (level === LogLevel.info || level === LogLevel.success) { 13 | global.console.info(message); 14 | } else if (level === LogLevel.warn) { 15 | global.console.warn(message); 16 | } else { 17 | global.console.error(message); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/cli/src/service/cli-open-web-console-service.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, jest, expect } from "@jest/globals"; 2 | 3 | describe("CliOpenWebConsoleService", () => { 4 | test("openExternalUrl", async () => { 5 | const mockOpenFunction = jest.fn(); 6 | jest.mock("open", () => mockOpenFunction); 7 | const { CliOpenWebConsoleService: serviceClass } = await import("./cli-open-web-console-service"); 8 | 9 | const cliOpenWebConsoleService = new serviceClass(); 10 | const url = "http://www.url.com"; 11 | await cliOpenWebConsoleService.openExternalUrl(url); 12 | expect(mockOpenFunction).toHaveBeenCalledWith(url); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/cli/src/service/cli-open-web-console-service.ts: -------------------------------------------------------------------------------- 1 | import { IOpenExternalUrlService } from "@noovolari/leapp-core/interfaces/i-open-external-url-service"; 2 | import open from "open"; 3 | 4 | export class CliOpenWebConsoleService implements IOpenExternalUrlService { 5 | async openExternalUrl(url: string): Promise { 6 | await open(url); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/cli/src/service/cli-rpc-aws-saml-authentication-service.ts: -------------------------------------------------------------------------------- 1 | import { IAwsSamlAuthenticationService } from "@noovolari/leapp-core/interfaces/i-aws-saml-authentication-service"; 2 | import { RemoteProceduresClient } from "@noovolari/leapp-core/services/remote-procedures-client"; 3 | 4 | export class CliRpcAwsSamlAuthenticationService implements IAwsSamlAuthenticationService { 5 | constructor(private remoteProceduresClient: RemoteProceduresClient) {} 6 | 7 | async needAuthentication(idpUrl: string): Promise { 8 | return this.remoteProceduresClient.needAuthentication(idpUrl); 9 | } 10 | 11 | async awsSignIn(idpUrl: string, needToAuthenticate: boolean): Promise { 12 | return this.remoteProceduresClient.awsSignIn(idpUrl, needToAuthenticate); 13 | } 14 | 15 | async closeAuthenticationWindow(): Promise { 16 | // TODO: not yet implemented in desktop app 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/cli/src/service/local-cli-mfa-code-prompt-service.ts: -------------------------------------------------------------------------------- 1 | import { IMfaCodePrompter } from "@noovolari/leapp-core/interfaces/i-mfa-code-prompter"; 2 | import CliInquirer from "inquirer"; 3 | 4 | export class LocalCliMfaCodePromptService implements IMfaCodePrompter { 5 | constructor(private inquirer: CliInquirer.Inquirer) {} 6 | 7 | promptForMFACode(sessionName: string, callback: (code: string) => void): void { 8 | this.inquirer 9 | .prompt([ 10 | { 11 | name: "mfaCode", 12 | message: `Insert MFA code for session ${sessionName}`, 13 | type: "input", 14 | }, 15 | ]) 16 | .then((mfaResponse: any) => callback(mfaResponse.mfaCode)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/cli/src/service/remote-cli-mfa-code-prompt-service.ts: -------------------------------------------------------------------------------- 1 | import { IMfaCodePrompter } from "@noovolari/leapp-core/interfaces/i-mfa-code-prompter"; 2 | import { RemoteProceduresClient } from "@noovolari/leapp-core/services/remote-procedures-client"; 3 | 4 | export class RemoteCliMfaCodePromptService implements IMfaCodePrompter { 5 | constructor(private remoteProcedureClient: RemoteProceduresClient) {} 6 | 7 | promptForMFACode(sessionName: string, callback: (code: string) => void): void { 8 | this.remoteProcedureClient.needMfa(sessionName).then((code: string) => { 9 | callback(code); 10 | }); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/.npmignore: -------------------------------------------------------------------------------- 1 | # CDK asset staging directory 2 | **/.cdk.staging 3 | **/cdk.out 4 | -------------------------------------------------------------------------------- /packages/core/README.md: -------------------------------------------------------------------------------- 1 | Leapp Core 2 | ================= 3 | 4 | Leapp Core is a library that decouples Leapp's domain logic from the Client that is going to use it. 5 | 6 | There are two different Clients that rely on it: Leapp CLI and Leapp Desktop App. 7 | 8 | For more information about the project visit the [site](https://www.leapp.cloud). 9 | -------------------------------------------------------------------------------- /packages/core/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | ['@babel/preset-env', {targets: {node: 'current'}}], 4 | '@babel/preset-typescript', 5 | 6 | ], 7 | plugins: [ 8 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 9 | ["@babel/plugin-proposal-class-properties", { "loose": true }], 10 | ["@babel/plugin-proposal-private-property-in-object", { "loose": true }] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/gushio/compile-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function compileFunction(path, shellJs) { 2 | shellJs.cd(path.join(__dirname, '..')) 3 | const result = shellJs.exec('npx tsc') 4 | if (result.code !== 0) { 5 | throw new Error(result.stderr) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/gushio/delete-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function deleteFunction(path, ...relativePath) { 2 | const dirPath = path.join(__dirname, ...relativePath) 3 | await fs.remove(dirPath) 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/gushio/target-build.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'build', 4 | description: 'Build the leapp core library', 5 | version: '0.1', 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const shellJs = require('shelljs') 10 | const compileFunction = require('./compile-func') 11 | const fs = require('fs') 12 | 13 | try { 14 | await gushio.run(path.join(__dirname, './target-clean.js')) 15 | 16 | console.log('Building leapp-core library... ') 17 | await compileFunction(path, shellJs) 18 | console.log('Build completed successfully') 19 | 20 | fs.copyFileSync("README.md", "dist/README.md"); 21 | } catch (e) { 22 | e.message = e.stack.red 23 | throw e 24 | } 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/gushio/target-clean.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'clean', 4 | description: 'Cleanup all files built previously', 5 | version: '0.1' 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const deleteFunction = require('./delete-func') 10 | 11 | try { 12 | console.log('Performing cleanup... ') 13 | await deleteFunction(path, "..", "dist") 14 | await deleteFunction(path, "..", "coverage") 15 | console.log('Cleanup completed successfully') 16 | } catch (e) { 17 | e.message = e.stack.red 18 | throw e 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/core/gushio/target-release.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'release', 4 | description: 'Release the leapp-core library on NPM', 5 | version: '0.1', 6 | }, 7 | deps: [], 8 | run: async () => { 9 | const path = await gushio.import('path') 10 | const shellJs = await gushio.import('shelljs') 11 | 12 | try { 13 | console.log('Publishing leapp-core library... ') 14 | 15 | shellJs.cd(path.join(__dirname, '..')) 16 | const result = shellJs.exec('npm publish') 17 | if (result.code !== 0) { 18 | throw new Error(result.stderr) 19 | } 20 | console.log('leapp-core published on npm') 21 | } catch (e) { 22 | e.message = e.stack.red 23 | throw e 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: "../../jest.preset.js", 3 | testMatch: [ 4 | "**/*.spec.ts", 5 | "**/**/*.spec.ts", 6 | "log-service.spec.ts" 7 | ], 8 | collectCoverageFrom: [ 9 | "**/*.ts", 10 | "!**/node_modules/**", 11 | "!**/vendor/**", 12 | "!**/dist/**" 13 | ], 14 | coverageReporters: [ 15 | "lcov", 16 | "json-summary", 17 | "text", 18 | "text-summary" 19 | ] 20 | }; 21 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-aws-sts-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappAwsStsError } from "./leapp-aws-sts-error"; 3 | import { LeappBaseError } from "./leapp-base-error"; 4 | import { LogLevel } from "../services/log-service"; 5 | 6 | describe("LeappAwsStsError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappAwsStsError(this, "sts error"); 9 | 10 | expect(error).toBeInstanceOf(LeappAwsStsError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("sts error"); 13 | expect(error.name).toBe("Leapp Aws Sts Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-aws-sts-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappAwsStsError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Aws Sts Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-base-error.ts: -------------------------------------------------------------------------------- 1 | import { LogLevel } from "../services/log-service"; 2 | 3 | export class LeappBaseError extends Error { 4 | private readonly _context: any; 5 | private readonly _severity: LogLevel; 6 | 7 | constructor(name: string, context: any, severity: LogLevel, message?: string) { 8 | super(message); 9 | this.name = name; 10 | this._context = context; 11 | this._severity = severity; 12 | Object.setPrototypeOf(this, new.target.prototype); 13 | } 14 | 15 | public get severity(): LogLevel { 16 | return this._severity; 17 | } 18 | 19 | public get context(): any { 20 | return this._context; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-execute-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappExecuteError } from "./leapp-execute-error"; 5 | 6 | describe("LeappExecuteError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappExecuteError(this, "exec error"); 9 | 10 | expect(error).toBeInstanceOf(LeappExecuteError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("exec error"); 13 | expect(error.name).toBe("Leapp Execute Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-execute-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappExecuteError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Execute Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-link-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappLinkError } from "./leapp-link-error"; 5 | 6 | describe("LeappLinkError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappLinkError("", this, "link error"); 9 | 10 | expect(error).toBeInstanceOf(LeappLinkError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("link error"); 13 | expect(error.name).toBe("Error"); 14 | expect(error.severity).toBe(LogLevel.error); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-link-error.ts: -------------------------------------------------------------------------------- 1 | import { LogLevel } from "../services/log-service"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | 4 | export class LeappLinkError extends LeappBaseError { 5 | link; 6 | constructor(link: string, context: any, message?: string) { 7 | super("Error", context, LogLevel.error, message); 8 | this.link = link; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-missing-mfa-token-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappMissingMfaTokenError } from "./leapp-missing-mfa-token-error"; 5 | 6 | describe("LeappMissingMfaTokenError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappMissingMfaTokenError(this, "mfa token error"); 9 | 10 | expect(error).toBeInstanceOf(LeappMissingMfaTokenError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("mfa token error"); 13 | expect(error.name).toBe("Leapp Missing Mfa Token Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-missing-mfa-token-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappMissingMfaTokenError extends LeappBaseError { 5 | constructor(context: any, message: string) { 6 | super("Leapp Missing Mfa Token Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-modal-closed-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappModalClosedError } from "./leapp-modal-closed-error"; 5 | 6 | describe("LeappModalClosedError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappModalClosedError(this, "modal closed error"); 9 | 10 | expect(error).toBeInstanceOf(LeappModalClosedError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("modal closed error"); 13 | expect(error.name).toBe("Leapp Modal Closed"); 14 | expect(error.severity).toBe(LogLevel.info); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-modal-closed-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappModalClosedError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Modal Closed", context, LogLevel.info, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-not-aws-account-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappNotAwsAccountError } from "./leapp-not-aws-account-error"; 5 | 6 | describe("LeappNotAwsAccountError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappNotAwsAccountError(this, "not aws error"); 9 | 10 | expect(error).toBeInstanceOf(LeappNotAwsAccountError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("not aws error"); 13 | expect(error.name).toBe("Leapp Not aws Account Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-not-aws-account-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappNotAwsAccountError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Not aws Account Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-not-found-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappNotFoundError } from "./leapp-not-found-error"; 5 | 6 | describe("LeappNotFoundError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappNotFoundError(this, "not found error"); 9 | 10 | expect(error).toBeInstanceOf(LeappNotFoundError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("not found error"); 13 | expect(error.name).toBe("Leapp Not Found Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-not-found-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappNotFoundError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Not Found Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-parse-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappParseError } from "./leapp-parse-error"; 5 | 6 | describe("LeappParseError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappParseError(this, "parse error"); 9 | 10 | expect(error).toBeInstanceOf(LeappParseError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("parse error"); 13 | expect(error.name).toBe("Leapp Parse Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-parse-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappParseError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Parse Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-saml-error.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { LeappBaseError } from "./leapp-base-error"; 3 | import { LogLevel } from "../services/log-service"; 4 | import { LeappSamlError } from "./leapp-saml-error"; 5 | 6 | describe("LeappSamlError", () => { 7 | test("validate existence and super parameters", () => { 8 | const error = new LeappSamlError(this, "saml error"); 9 | 10 | expect(error).toBeInstanceOf(LeappSamlError); 11 | expect(error).toBeInstanceOf(LeappBaseError); 12 | expect(error.message).toBe("saml error"); 13 | expect(error.name).toBe("Leapp Saml Error"); 14 | expect(error.severity).toBe(LogLevel.warn); 15 | expect(error.context).toBe(this); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/core/src/errors/leapp-saml-error.ts: -------------------------------------------------------------------------------- 1 | import { LeappBaseError } from "./leapp-base-error"; 2 | import { LogLevel } from "../services/log-service"; 3 | 4 | export class LeappSamlError extends LeappBaseError { 5 | constructor(context: any, message?: string) { 6 | super("Leapp Saml Error", context, LogLevel.warn, message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-aws-integration-delegate.ts: -------------------------------------------------------------------------------- 1 | import { GetRoleCredentialsResponse } from "@aws-sdk/client-sso"; 2 | 3 | export interface IAwsIntegrationDelegate { 4 | getAccessToken(configurationId: string, region: string, portalUrl: string, forceRefresh?: boolean): Promise; 5 | 6 | getRoleCredentials(accessToken: string, region: string, roleArn: string): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-aws-saml-authentication-service.ts: -------------------------------------------------------------------------------- 1 | export interface IAwsSamlAuthenticationService { 2 | needAuthentication(idpUrl: string): Promise; 3 | 4 | awsSignIn(idpUrl: string, needToAuthenticate: boolean): Promise; 5 | 6 | closeAuthenticationWindow(): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-aws-sso-oidc-verification-window-service.ts: -------------------------------------------------------------------------------- 1 | import { RegisterClientResponse, StartDeviceAuthorizationResponse, VerificationResponse } from "../services/session/aws/aws-sso-role-service"; 2 | 3 | export interface IAwsSsoOidcVerificationWindowService { 4 | openVerificationWindow( 5 | registerClientResponse: RegisterClientResponse, 6 | startDeviceAuthorizationResponse: StartDeviceAuthorizationResponse, 7 | windowModality: string, 8 | onWindowClose: () => void 9 | ): Promise; 10 | } 11 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-behavioural-notifier.ts: -------------------------------------------------------------------------------- 1 | import { Session } from "../models/session"; 2 | import { Integration } from "../models/integration"; 3 | 4 | export interface IBehaviouralNotifier { 5 | getSessions(): Session[]; 6 | 7 | getSessionById(sessionId: string): Session; 8 | 9 | setSessions(sessions: Session[]): void; 10 | 11 | getIntegrations(): Integration[]; 12 | 13 | setIntegrations(integrations: Integration[]): void; 14 | 15 | setFetchingIntegrations(fetchingState: string | undefined): void; 16 | } 17 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-browser-window-closing.ts: -------------------------------------------------------------------------------- 1 | export interface BrowserWindowClosing { 2 | catchClosingBrowserWindow(): void; 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-global-settings.ts: -------------------------------------------------------------------------------- 1 | import PluginStatus from "../models/plugin-status"; 2 | import Segment from "../models/segment"; 3 | import { LeappNotification } from "../models/notification"; 4 | import { RemoteWorkspacesSettingsMap } from "../models/remote-workspace-settings-map"; 5 | 6 | export interface GlobalSettings { 7 | defaultRegion: string; 8 | defaultLocation: string; 9 | macOsTerminal: string; 10 | pluginsStatus: PluginStatus[]; 11 | pinned: string[]; 12 | segments: Segment[]; 13 | colorTheme: string; 14 | extensionEnabled: boolean; 15 | credentialMethod: string; 16 | samlRoleSessionDuration: number; 17 | ssmRegionBehaviour: string; 18 | notifications: LeappNotification[]; 19 | requirePassword: number; 20 | touchIdEnabled: boolean; 21 | remoteWorkspacesSettingsMap: RemoteWorkspacesSettingsMap; 22 | } 23 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-http-client.ts: -------------------------------------------------------------------------------- 1 | export interface IHttpClient { 2 | post(url: string, body: any | null): Promise; 3 | 4 | put(url: string, body: any | null): Promise; 5 | 6 | get(url: string): Promise; 7 | 8 | delete(url: string): Promise; 9 | } 10 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-keychain-service.ts: -------------------------------------------------------------------------------- 1 | export interface IKeychainService { 2 | /** 3 | * Save your secret in the keychain 4 | * 5 | * @param service - environment.appName 6 | * @param account - unique identifier 7 | * @param password - secret 8 | */ 9 | saveSecret(service: string, account: string, password: string): Promise; 10 | 11 | /** 12 | * Retrieve a Secret from the keychain 13 | * 14 | * @param service - environment.appName 15 | * @param account - unique identifier 16 | * @returns the secret 17 | */ 18 | getSecret(service: string, account: string): Promise; 19 | 20 | /** 21 | * Delete a secret from the keychain 22 | * 23 | * @param service - environment.appName 24 | * @param account - unique identifier 25 | */ 26 | deleteSecret(service: string, account: string): Promise; 27 | } 28 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-logger.ts: -------------------------------------------------------------------------------- 1 | import { LogLevel } from "../services/log-service"; 2 | 3 | export interface ILogger { 4 | log(message: string, level: LogLevel); 5 | show(message: string, level: LogLevel); 6 | } 7 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-mfa-code-prompter.ts: -------------------------------------------------------------------------------- 1 | export interface IMfaCodePrompter { 2 | promptForMFACode(sessionName: string, callback: any): void; 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-msal-encryption-service.ts: -------------------------------------------------------------------------------- 1 | export interface IMsalEncryptionService { 2 | protectData(dataToEncrypt: Uint8Array, optionalEntropy: Uint8Array, scope: string): Promise; 3 | unprotectData(encryptedData: Uint8Array, optionalEntropy: Uint8Array, scope: string): Promise; 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-native-service.ts: -------------------------------------------------------------------------------- 1 | import * as ipc from "node-ipc"; 2 | import { IMsalEncryptionService } from "./i-msal-encryption-service"; 3 | 4 | export interface INativeService { 5 | url: any; 6 | fs: any; 7 | rimraf: any; 8 | os: any; 9 | ini: any; 10 | exec: any; 11 | unzip: any; 12 | copydir: any; 13 | sudo: any; 14 | path: any; 15 | semver: any; 16 | machineId: any; 17 | keytar: any; 18 | followRedirects: any; 19 | httpProxyAgent: any; 20 | httpsProxyAgent: any; 21 | process: any; 22 | nodeIpc: typeof ipc; 23 | msalEncryptionService: IMsalEncryptionService; 24 | hashElement: any; 25 | requireModule: any; 26 | crypto: any; 27 | fixPath: any; 28 | tar: any; 29 | fetch: any; 30 | systemPreferences: any; 31 | } 32 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-open-external-url-service.ts: -------------------------------------------------------------------------------- 1 | export interface IOpenExternalUrlService { 2 | openExternalUrl(url: string): void; 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/interfaces/i-team-service.ts: -------------------------------------------------------------------------------- 1 | export interface ITeamService { 2 | /** 3 | * Refresh the workspace state 4 | * 5 | * @param callback - function to call before refreshing the UI 6 | */ 7 | refreshWorkspaceState(callback?: () => Promise): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/models/access-method-field-type.ts: -------------------------------------------------------------------------------- 1 | export enum AccessMethodFieldType { 2 | input = "input", 3 | list = "list", 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/models/access-method-field.ts: -------------------------------------------------------------------------------- 1 | import { FieldChoice } from "../services/field-choice"; 2 | import { AccessMethodFieldType } from "./access-method-field-type"; 3 | 4 | export class AccessMethodField { 5 | constructor( 6 | public creationRequestField: string, 7 | public message: string, 8 | public type: AccessMethodFieldType, 9 | public choices?: FieldChoice[], 10 | public fieldValidator?: (alias: string) => boolean | string 11 | ) {} 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/src/models/access-method.ts: -------------------------------------------------------------------------------- 1 | import { CreateSessionRequest } from "../services/session/create-session-request"; 2 | import { AccessMethodField } from "./access-method-field"; 3 | import { SessionType } from "./session-type"; 4 | 5 | export class AccessMethod { 6 | constructor(public sessionType: SessionType, public label: string, public accessMethodFields: AccessMethodField[], public creatable: boolean) {} 7 | 8 | getSessionCreationRequest(fieldValues: Map): CreateSessionRequest { 9 | const requestToFill = {} as CreateSessionRequest; 10 | for (const field of this.accessMethodFields) { 11 | requestToFill[field.creationRequestField] = fieldValues.get(field.creationRequestField); 12 | } 13 | 14 | return requestToFill; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-iam-role-federated-session.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../session-type"; 2 | import { Session } from "../session"; 3 | 4 | export class AwsIamRoleFederatedSession extends Session { 5 | idpUrlId: string; 6 | idpArn: string; 7 | roleArn: string; 8 | profileId: string; 9 | awsAccount?: { accountName: string; accountId: string }; 10 | 11 | constructor( 12 | sessionName: string, 13 | region: string, 14 | idpUrlId: string, 15 | idpArn: string, 16 | roleArn: string, 17 | profileId: string, 18 | awsAccount?: { accountName: string; accountId: string } 19 | ) { 20 | super(sessionName, region); 21 | 22 | this.idpUrlId = idpUrlId; 23 | this.idpArn = idpArn; 24 | this.roleArn = roleArn; 25 | this.profileId = profileId; 26 | this.type = SessionType.awsIamRoleFederated; 27 | 28 | this.awsAccount = awsAccount; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-iam-user-session.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../session-type"; 2 | import { Session } from "../session"; 3 | 4 | export class AwsIamUserSession extends Session { 5 | mfaDevice?: string; 6 | profileId: string; 7 | awsAccount?: { accountName: string; accountId: string }; 8 | 9 | constructor(sessionName: string, region: string, profileId: string, mfaDevice?: string, awsAccount?: { accountName: string; accountId: string }) { 10 | super(sessionName, region); 11 | 12 | this.mfaDevice = mfaDevice; 13 | this.type = SessionType.awsIamUser; 14 | this.profileId = profileId; 15 | 16 | this.awsAccount = awsAccount; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-named-profile.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AwsNamedProfile } from "./aws-named-profile"; 3 | 4 | describe("AWS Named Profile", () => { 5 | test("should create", () => { 6 | const awsNamedProfile = new AwsNamedProfile("fake-profile-id", "fake-profile-name"); 7 | expect(awsNamedProfile).toBeInstanceOf(AwsNamedProfile); 8 | expect(awsNamedProfile).toBeTruthy(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-named-profile.ts: -------------------------------------------------------------------------------- 1 | export class AwsNamedProfile { 2 | constructor(public id: string, public name: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-process-credential.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AwsProcessCredentials } from "./aws-process-credential"; 3 | 4 | describe("AWS Process Credential", () => { 5 | test("should create", () => { 6 | const awsProcessCredentials = new AwsProcessCredentials( 7 | 1, 8 | "fake-access-key-id", 9 | "fake-secret-access-key", 10 | "fake-session-token", 11 | "fake-expiration" 12 | ); 13 | expect(awsProcessCredentials).toBeInstanceOf(AwsProcessCredentials); 14 | expect(awsProcessCredentials).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-process-credential.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/naming-convention */ 2 | 3 | export class AwsProcessCredentials { 4 | constructor( 5 | private Version: number, 6 | private AccessKeyId: string, 7 | private SecretAccessKey: string, 8 | private SessionToken: string, 9 | private Expiration: string 10 | ) {} 11 | } 12 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration-creation-params.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AwsSsoIntegrationCreationParams } from "./aws-sso-integration-creation-params"; 3 | 4 | describe("AWS SSO Integration Creation Params", () => { 5 | test("should create", () => { 6 | const awsSsoIntegrationParams: AwsSsoIntegrationCreationParams = { 7 | portalUrl: "fake-portal-url", 8 | region: "fake-region", 9 | browserOpening: "In-App", 10 | alias: "fake-alias", 11 | }; 12 | expect(awsSsoIntegrationParams).toBeTruthy(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration-creation-params.ts: -------------------------------------------------------------------------------- 1 | import { IntegrationParams } from "../integration-params"; 2 | 3 | export interface AwsSsoIntegrationCreationParams extends IntegrationParams { 4 | portalUrl: string; 5 | region: string; 6 | browserOpening: string; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration-token-info.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AwsSsoIntegrationTokenInfo } from "./aws-sso-integration-token-info"; 3 | 4 | describe("AWS SSO Integration Token Info", () => { 5 | test("should create", () => { 6 | const awsSsoIntegrationTokenInfo: AwsSsoIntegrationTokenInfo = { 7 | accessToken: "fake-access-token", 8 | expiration: 1, 9 | }; 10 | expect(awsSsoIntegrationTokenInfo).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration-token-info.ts: -------------------------------------------------------------------------------- 1 | export interface AwsSsoIntegrationTokenInfo { 2 | accessToken: string; 3 | expiration: number; 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AwsSsoIntegration } from "./aws-sso-integration"; 3 | import { IntegrationType } from "../integration-type"; 4 | 5 | describe("AWS SSO Integration", () => { 6 | test("should create with isOnline set to false", () => { 7 | const awsSsoIntegration = new AwsSsoIntegration("fake-id", "fake-alias", "fake-portal-url", "fake-region", "In-App", "fakeAccessTokenExpiration"); 8 | expect(awsSsoIntegration).toBeInstanceOf(AwsSsoIntegration); 9 | expect(awsSsoIntegration).toBeTruthy(); 10 | expect(awsSsoIntegration.type).toEqual(IntegrationType.awsSso); 11 | expect(awsSsoIntegration.isOnline).toEqual(false); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-integration.ts: -------------------------------------------------------------------------------- 1 | import { Integration } from "../integration"; 2 | import { IntegrationType } from "../integration-type"; 3 | 4 | export class AwsSsoIntegration extends Integration { 5 | constructor( 6 | id: string, 7 | alias: string, 8 | public portalUrl: string, 9 | public region: string, 10 | public browserOpening: string, 11 | public accessTokenExpiration: string 12 | ) { 13 | super(id, alias, IntegrationType.awsSso, false); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/core/src/models/aws/aws-sso-role-session.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../session-type"; 2 | import { Session } from "../session"; 3 | 4 | export class AwsSsoRoleSession extends Session { 5 | email?: string; 6 | roleArn: string; 7 | profileId: string; 8 | awsSsoConfigurationId: string; 9 | 10 | constructor(sessionName: string, region: string, roleArn: string, profileId: string, awsSsoConfigurationId: string, email?: string) { 11 | super(sessionName, region); 12 | 13 | this.email = email; 14 | this.roleArn = roleArn; 15 | this.profileId = profileId; 16 | this.type = SessionType.awsSsoRole; 17 | this.awsSsoConfigurationId = awsSsoConfigurationId; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/core/src/models/azure/azure-integration-creation-params.ts: -------------------------------------------------------------------------------- 1 | import { IntegrationParams } from "../integration-params"; 2 | 3 | export interface AzureIntegrationCreationParams extends IntegrationParams { 4 | tenantId: string; 5 | region?: string; 6 | } 7 | -------------------------------------------------------------------------------- /packages/core/src/models/azure/azure-integration.ts: -------------------------------------------------------------------------------- 1 | import { Integration } from "../integration"; 2 | import { IntegrationType } from "../integration-type"; 3 | 4 | export class AzureIntegration extends Integration { 5 | private _tokenExpiration: string; 6 | 7 | constructor(id: string, alias: string, public tenantId: string, public region: string) { 8 | super(id, alias, IntegrationType.azure, false); 9 | } 10 | 11 | set tokenExpiration(tokenExpiration: string) { 12 | this._tokenExpiration = tokenExpiration; 13 | } 14 | 15 | get tokenExpiration(): string { 16 | return this._tokenExpiration; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/core/src/models/azure/azure-session.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../session-type"; 2 | import { Session } from "../session"; 3 | 4 | export class AzureSession extends Session { 5 | subscriptionId: string; 6 | tenantId: string; 7 | azureIntegrationId: string; 8 | 9 | constructor(sessionName: string, region: string, subscriptionId: string, tenantId: string, azureIntegrationId: string) { 10 | super(sessionName, region); 11 | 12 | this.subscriptionId = subscriptionId; 13 | this.tenantId = tenantId; 14 | this.azureIntegrationId = azureIntegrationId; 15 | this.type = SessionType.azure; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/core/src/models/cloud-provider-type.ts: -------------------------------------------------------------------------------- 1 | export enum CloudProviderType { 2 | aws = "aws", 3 | azure = "azure", 4 | localstack = "localstack", 5 | } 6 | -------------------------------------------------------------------------------- /packages/core/src/models/constants.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { constants } from "./constants"; 3 | 4 | describe("Constants", () => { 5 | test("constansts - samlRoleSessionDuration must be set at 3600", () => { 6 | expect(constants.samlRoleSessionDuration).toBe(3600); 7 | }); 8 | 9 | test("constansts - sessionDuration must be set at 1200", () => { 10 | expect(constants.sessionDuration).toBe(1200); 11 | }); 12 | 13 | test("constansts - sessionTokenDuration must be set at 36000", () => { 14 | expect(constants.sessionTokenDuration).toBe(36000); 15 | }); 16 | 17 | test("constansts - timeout must be set at 10000", () => { 18 | expect(constants.timeout).toBe(10000); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /packages/core/src/models/credentials-info.ts: -------------------------------------------------------------------------------- 1 | export interface CredentialsInfo { 2 | sessionToken: any; 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/models/credentials.ts: -------------------------------------------------------------------------------- 1 | export interface Credentials { 2 | // eslint-disable-next-line @typescript-eslint/naming-convention 3 | aws_access_key_id: string; 4 | // eslint-disable-next-line @typescript-eslint/naming-convention 5 | aws_secret_access_key: string; 6 | // eslint-disable-next-line @typescript-eslint/naming-convention 7 | aws_session_token: string; 8 | region: string; 9 | } 10 | -------------------------------------------------------------------------------- /packages/core/src/models/folder.ts: -------------------------------------------------------------------------------- 1 | export default interface Folder { 2 | name: string; 3 | ids: string[]; 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/models/idp-url-access-method-field.spec.ts: -------------------------------------------------------------------------------- 1 | import { createNewIdpUrlFieldChoice } from "../services/cloud-provider-service"; 2 | import { IdpUrlAccessMethodField } from "./idp-url-access-method-field"; 3 | 4 | describe("IdpUrlAccessMethodField", () => { 5 | test('isIdpUrlToCreate, field is "create new idp url"', () => { 6 | const idpUrlAccessMethodField = new IdpUrlAccessMethodField(null, null, null); 7 | expect(idpUrlAccessMethodField.isIdpUrlToCreate(createNewIdpUrlFieldChoice)).toBe(true); 8 | }); 9 | 10 | test('isIdpUrlToCreate, field is not "create new idp url"', () => { 11 | const idpUrlAccessMethodField = new IdpUrlAccessMethodField(null, null, null); 12 | expect(idpUrlAccessMethodField.isIdpUrlToCreate("anotherChoice")).toBe(false); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/core/src/models/idp-url-access-method-field.ts: -------------------------------------------------------------------------------- 1 | import { FieldChoice } from "../services/field-choice"; 2 | import { AccessMethodFieldType } from "./access-method-field-type"; 3 | import { AccessMethodField } from "./access-method-field"; 4 | import { createNewIdpUrlFieldChoice } from "../services/cloud-provider-service"; 5 | 6 | export class IdpUrlAccessMethodField extends AccessMethodField { 7 | constructor(public creationRequestField: string, public message: string, public type: AccessMethodFieldType, public choices?: FieldChoice[]) { 8 | super(creationRequestField, message, type, choices); 9 | } 10 | 11 | isIdpUrlToCreate(choiceValue: string): boolean { 12 | return choiceValue === createNewIdpUrlFieldChoice; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/core/src/models/idp-url.ts: -------------------------------------------------------------------------------- 1 | export class IdpUrl { 2 | constructor(public id: string, public url: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/models/integration-method.ts: -------------------------------------------------------------------------------- 1 | import { AccessMethodField } from "./access-method-field"; 2 | import { IntegrationType } from "./integration-type"; 3 | 4 | export class IntegrationMethod { 5 | constructor(public integrationType: IntegrationType, public alias: string, public integrationMethodFields: AccessMethodField[]) {} 6 | } 7 | -------------------------------------------------------------------------------- /packages/core/src/models/integration-params.ts: -------------------------------------------------------------------------------- 1 | export interface IntegrationParams { 2 | alias: string; 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/models/integration-type.ts: -------------------------------------------------------------------------------- 1 | export enum IntegrationType { 2 | awsSso = "AWS-SSO", 3 | azure = "AZURE", 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/models/integration.ts: -------------------------------------------------------------------------------- 1 | import { IntegrationType } from "./integration-type"; 2 | 3 | export abstract class Integration { 4 | constructor(public id: string, public alias: string, public type: IntegrationType, public isOnline: boolean) {} 5 | } 6 | -------------------------------------------------------------------------------- /packages/core/src/models/localstack/localstack-session.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { SessionType } from "../session-type"; 3 | import { LocalstackSession } from "./localstack-session"; 4 | 5 | describe("AWS IAM User Session Model", () => { 6 | test("should create with MFA device", () => { 7 | const sessionName = "fake-iam-user-session"; 8 | const region = "fake-region"; 9 | const profileId = "fake-profile-id"; 10 | const mockedIamUserSession = new LocalstackSession(sessionName, region, profileId); 11 | 12 | expect(mockedIamUserSession).toBeInstanceOf(LocalstackSession); 13 | expect(mockedIamUserSession.type).toEqual(SessionType.localstack); 14 | expect(mockedIamUserSession.sessionName).toEqual(sessionName); 15 | expect(mockedIamUserSession.region).toEqual(region); 16 | expect(mockedIamUserSession.profileId).toEqual(profileId); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/core/src/models/localstack/localstack-session.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../session-type"; 2 | import { Session } from "../session"; 3 | 4 | export class LocalstackSession extends Session { 5 | endPointUrl: string; 6 | profileId: string; 7 | 8 | constructor(sessionName: string, region: string, profileId: string) { 9 | super(sessionName, region); 10 | 11 | this.endPointUrl = "http://localhost:4566"; 12 | this.type = SessionType.localstack; 13 | this.profileId = profileId; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/core/src/models/notification.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, test } from "@jest/globals"; 2 | import { LeappNotification, LeappNotificationType } from "./notification"; 3 | 4 | describe("Notification Model", () => { 5 | test("should create", () => { 6 | const mockedNotification = new LeappNotification("fake-uuid", LeappNotificationType.info, "fake-title", "fake-description", false); 7 | expect(mockedNotification).toBeInstanceOf(LeappNotification); 8 | expect(mockedNotification).toBeTruthy(); 9 | expect(mockedNotification.link).toBeUndefined(); 10 | expect(mockedNotification.type).toEqual(LeappNotificationType.info); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/core/src/models/notification.ts: -------------------------------------------------------------------------------- 1 | export enum LeappNotificationType { 2 | info, 3 | warning, 4 | danger, 5 | success, 6 | } 7 | 8 | export class LeappNotification { 9 | constructor( 10 | public uuid: string, 11 | public type: LeappNotificationType, 12 | public title: string, 13 | public buttonActionName: string, 14 | public description: string, 15 | public read: boolean, 16 | public link?: string, 17 | public icon?: string, 18 | public popup?: boolean 19 | ) {} 20 | } 21 | -------------------------------------------------------------------------------- /packages/core/src/models/operating-system.ts: -------------------------------------------------------------------------------- 1 | export enum OperatingSystem { 2 | windows = "windows", 3 | mac = "mac", 4 | linux = "linux", 5 | } 6 | 7 | interface OperatingSystemMap { 8 | [key: string]: OperatingSystem; 9 | } 10 | 11 | export const osMap: OperatingSystemMap = { 12 | linux: OperatingSystem.linux, 13 | darwin: OperatingSystem.mac, 14 | win32: OperatingSystem.windows, 15 | }; 16 | -------------------------------------------------------------------------------- /packages/core/src/models/plugin-status.ts: -------------------------------------------------------------------------------- 1 | export default interface PluginStatus { 2 | id: string; 3 | active: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/models/remote-workspace-settings-map.ts: -------------------------------------------------------------------------------- 1 | interface RemoteSessionSettings { 2 | region: string; 3 | profileName: string; 4 | } 5 | 6 | interface RemoteWorkspaceSettings { 7 | [sessionId: string]: RemoteSessionSettings; 8 | } 9 | 10 | export interface RemoteWorkspacesSettingsMap { 11 | [teamId: string]: RemoteWorkspaceSettings; 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/src/models/segment.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "./session-type"; 2 | 3 | export interface GlobalFilters { 4 | searchFilter: string; 5 | dateFilter: boolean; 6 | pinnedFilter: boolean; 7 | providerFilter: { show: boolean; id: string; name: string; value: boolean }[]; 8 | profileFilter: { show: boolean; id: string; name: string; value: boolean }[]; 9 | regionFilter: { show: boolean; name: string; value: boolean }[]; 10 | integrationFilter: { name: string; value: boolean }[]; 11 | typeFilter: { show: boolean; id: SessionType; category: string; name: string; value: boolean }[]; 12 | } 13 | 14 | export default interface Segment { 15 | name: string; 16 | filterGroup: GlobalFilters; 17 | } 18 | -------------------------------------------------------------------------------- /packages/core/src/models/session-selection-state.ts: -------------------------------------------------------------------------------- 1 | export class SessionSelectionState { 2 | constructor( 3 | public sessionId: string, 4 | public isSelected: boolean, 5 | public menuX: number, 6 | public menuY: number, 7 | public isContextualMenuOpen: boolean 8 | ) {} 9 | } 10 | -------------------------------------------------------------------------------- /packages/core/src/models/session-status.ts: -------------------------------------------------------------------------------- 1 | export enum SessionStatus { 2 | inactive, 3 | pending, 4 | active, 5 | } 6 | -------------------------------------------------------------------------------- /packages/core/src/models/session-type.ts: -------------------------------------------------------------------------------- 1 | export enum SessionType { 2 | anytype = "any", 3 | aws = "aws", 4 | awsIamRoleFederated = "awsIamRoleFederated", 5 | awsIamUser = "awsIamUser", 6 | awsIamRoleChained = "awsIamRoleChained", 7 | awsSsoRole = "awsSsoRole", 8 | azure = "azure", 9 | google = "google", 10 | alibaba = "alibaba", 11 | localstack = "localstack", 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/src/plugin-sdk/plugin-log-level.ts: -------------------------------------------------------------------------------- 1 | export enum PluginLogLevel { 2 | success, 3 | info, 4 | warn, 5 | error, 6 | } 7 | -------------------------------------------------------------------------------- /packages/core/src/services/aws-assumer-session-types.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, test, expect } from "@jest/globals"; 2 | import { AWS_ASSUMER_SESSION_TYPES } from "./aws-assumer-session-types"; 3 | import { SessionType } from "../models/session-type"; 4 | 5 | describe("Aws Assumer Session Types", () => { 6 | test("Check that enum is as expected", () => { 7 | expect(AWS_ASSUMER_SESSION_TYPES).toStrictEqual([SessionType.awsIamUser, SessionType.awsIamRoleFederated, SessionType.awsSsoRole]); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /packages/core/src/services/aws-assumer-session-types.ts: -------------------------------------------------------------------------------- 1 | import { SessionType } from "../models/session-type"; 2 | 3 | export const AWS_ASSUMER_SESSION_TYPES = [SessionType.awsIamUser, SessionType.awsIamRoleFederated, SessionType.awsSsoRole]; 4 | -------------------------------------------------------------------------------- /packages/core/src/services/azure-location.ts: -------------------------------------------------------------------------------- 1 | export class AzureLocation { 2 | constructor(public location: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/services/field-choice.ts: -------------------------------------------------------------------------------- 1 | export class FieldChoice { 2 | constructor(public fieldName: string, public fieldValue: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/src/services/integration/integration-is-online-state-refresh-service.ts: -------------------------------------------------------------------------------- 1 | import { BehaviouralSubjectService } from "../behavioural-subject-service"; 2 | import { IntegrationFactory } from "../integration-factory"; 3 | 4 | export class IntegrationIsOnlineStateRefreshService { 5 | constructor(private integrationFactory: IntegrationFactory, private behaviouralSubjectService: BehaviouralSubjectService) {} 6 | 7 | async refreshIsOnlineState(): Promise { 8 | const integrations = this.integrationFactory.getIntegrations(); 9 | await Promise.all(integrations.map((integration) => this.integrationFactory.setOnline(integration))); 10 | this.behaviouralSubjectService.setIntegrations(this.integrationFactory.getIntegrations()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/src/services/rotation-service.ts: -------------------------------------------------------------------------------- 1 | import { SessionFactory } from "./session-factory"; 2 | import { Repository } from "./repository"; 3 | 4 | export class RotationService { 5 | constructor(private sessionServiceFactory: SessionFactory, private repository: Repository) {} 6 | 7 | rotate(): void { 8 | const activeSessions = this.repository.listActive(); 9 | activeSessions.forEach((session) => { 10 | if (session.expired()) { 11 | const concreteSessionService = this.sessionServiceFactory.getSessionService(session.type); 12 | concreteSessionService.rotate(session.sessionId).then((_) => {}); 13 | } 14 | }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/core/src/services/segment-service.ts: -------------------------------------------------------------------------------- 1 | import Segment from "../models/segment"; 2 | import { Repository } from "./repository"; 3 | 4 | export class SegmentService { 5 | constructor(private repository: Repository) {} 6 | 7 | list(): Segment[] { 8 | return this.repository.getSegments(); 9 | } 10 | 11 | setSegments(segments: Segment[]): void { 12 | this.repository.setSegments(segments); 13 | } 14 | 15 | getSegmentByName(segmentName: string): Segment { 16 | return this.repository.getSegment(segmentName); 17 | } 18 | 19 | removeSegment(segment: Segment): void { 20 | this.repository.removeSegment(segment); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/core/src/services/session/aws/aws-iam-role-chained-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateAwsSessionRequest } from "../create-aws-session-request"; 2 | 3 | export interface AwsIamRoleChainedSessionRequest extends CreateAwsSessionRequest { 4 | roleArn: string; 5 | parentSessionId: string; 6 | roleSessionName?: string; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/services/session/aws/aws-iam-role-federated-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateAwsSessionRequest } from "../create-aws-session-request"; 2 | 3 | export interface AwsIamRoleFederatedSessionRequest extends CreateAwsSessionRequest { 4 | idpUrl: string; 5 | idpArn: string; 6 | roleArn: string; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/services/session/aws/aws-iam-user-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateAwsSessionRequest } from "../create-aws-session-request"; 2 | 3 | export interface AwsIamUserSessionRequest extends CreateAwsSessionRequest { 4 | sessionId?: string; 5 | accessKey: string; 6 | secretKey: string; 7 | mfaDevice?: string; 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/services/session/aws/aws-sso-role-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateAwsSessionRequest } from "../create-aws-session-request"; 2 | 3 | export interface AwsSsoRoleSessionRequest extends CreateAwsSessionRequest { 4 | sessionName: string; 5 | email: string; 6 | roleArn: string; 7 | awsSsoConfigurationId: string; 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/services/session/azure/azure-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateSessionRequest } from "../create-session-request"; 2 | 3 | export interface AzureSessionRequest extends CreateSessionRequest { 4 | region: string; 5 | subscriptionId: string; 6 | tenantId: string; 7 | azureIntegrationId: string; 8 | } 9 | -------------------------------------------------------------------------------- /packages/core/src/services/session/create-aws-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateSessionRequest } from "./create-session-request"; 2 | 3 | export interface CreateAwsSessionRequest extends CreateSessionRequest { 4 | profileId: string; 5 | region: string; 6 | awsAccount?: { accountName: string; accountId: string }; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/services/session/create-session-request.ts: -------------------------------------------------------------------------------- 1 | export interface CreateSessionRequest { 2 | sessionName: string; 3 | sessionId?: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/src/services/session/localstack/localstack-session-request.ts: -------------------------------------------------------------------------------- 1 | import { CreateSessionRequest } from "../create-session-request"; 2 | 3 | export interface LocalstackSessionRequest extends CreateSessionRequest { 4 | sessionId?: string; 5 | profileId: string; 6 | region: string; 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/src/services/timer-service.ts: -------------------------------------------------------------------------------- 1 | export class TimerService { 2 | private timeOutTimer: NodeJS.Timeout; 3 | private timeInterval = 10000; 4 | 5 | constructor() {} 6 | 7 | set timer(value: NodeJS.Timeout) { 8 | this.timeOutTimer = value; 9 | } 10 | 11 | get timer(): NodeJS.Timeout { 12 | return this.timeOutTimer; 13 | } 14 | 15 | start(callback: () => void): void { 16 | if (!this.timer) { 17 | this.timer = setInterval(() => { 18 | callback(); 19 | }, this.timeInterval); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/desktop-app/browserslist: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | chrome >= 80 -------------------------------------------------------------------------------- /packages/desktop-app/build/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-jit 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.allow-dyld-environment-variables 10 | 11 | com.apple.security.cs.disable-library-validation 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/desktop-app/build/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | ... 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/desktop-app/dev-app-update.yml: -------------------------------------------------------------------------------- 1 | owner: Noovolari 2 | repo: leapp 3 | provider: github 4 | releaseType: release 5 | updaterCacheDirName: leapp-updater 6 | -------------------------------------------------------------------------------- /packages/desktop-app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from "./app.po"; 2 | import { browser, logging } from "protractor"; 3 | 4 | describe("workspace-project App", () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | afterEach(async () => { 12 | // Assert that there are no errors emitted from the browser 13 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 14 | expect(logs).not.toContain( 15 | jasmine.objectContaining({ 16 | level: logging.Level.SEVERE, 17 | } as logging.Entry) 18 | ); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /packages/desktop-app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from "protractor"; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css("app-root h1")).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/desktop-app/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "allowSyntheticDefaultImports" : true, 5 | "baseUrl": "./", 6 | "declaration": false, 7 | "experimentalDecorators": true, 8 | "lib": ["ES2019", "DOM"], 9 | "module": "esnext", 10 | "moduleResolution": "node", 11 | "sourceMap": true, 12 | "target": "ES6", 13 | "typeRoots": ["../node_modules/@types"], 14 | "paths": { 15 | "stream": ["node_modules/stream-browserify"], 16 | "assert": ["node_modules/assert"], 17 | "fs": ["node_modules/fs-web"], 18 | }, 19 | "outDir": "../out-tsc/e2e", 20 | "types": [ 21 | "jasmine", 22 | "jasminewd2", 23 | "node" 24 | ] 25 | }, 26 | "angularCompilerOptions": { 27 | "fullTemplateTypeCheck": true, 28 | "strictInjectionParameters": true 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /packages/desktop-app/electron/assets/images/Leapp.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/electron/assets/images/Leapp.icns -------------------------------------------------------------------------------- /packages/desktop-app/electron/assets/images/Leapp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/electron/assets/images/Leapp.ico -------------------------------------------------------------------------------- /packages/desktop-app/electron/assets/images/Leapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/electron/assets/images/Leapp.png -------------------------------------------------------------------------------- /packages/desktop-app/electron/build/binding.Makefile: -------------------------------------------------------------------------------- 1 | # This file is generated by gyp; do not edit. 2 | 3 | export builddir_name ?= ./build/. 4 | .PHONY: all 5 | all: 6 | $(MAKE) dpapi 7 | -------------------------------------------------------------------------------- /packages/desktop-app/electron/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "es2018", 9 | "dom" 10 | ], 11 | "module": "commonjs", 12 | "moduleResolution": "node", 13 | "outDir": "./dist", 14 | "sourceMap": true, 15 | "target": "es5", 16 | "typeRoots": [ 17 | "node_modules/@types" 18 | ], 19 | "types": [ 20 | "node" 21 | ], 22 | }, 23 | "include": ["**/*.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/compile-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function compileFunction(path, shellJs, target) { 2 | const desktopAppModulePath = path.join(__dirname, '..') 3 | shellJs.cd(desktopAppModulePath) 4 | 5 | let result = shellJs.exec(`ng build --${target} --base-href ./`) 6 | if (result.code !== 0) { 7 | throw new Error(result.stderr) 8 | } 9 | 10 | result = shellJs.exec('tsc --p electron') 11 | if (result.code !== 0) { 12 | throw new Error(result.stderr) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/copy-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function copyFunction(path, relativeSourcePath, relativeDestinationPath) { 2 | const sourcePath = path.join(__dirname, relativeSourcePath) 3 | const destinationPath = path.join(__dirname, relativeDestinationPath) 4 | await fs.copy(sourcePath, destinationPath) 5 | } 6 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/delete-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function deleteFunction(path, ...relativePath) { 2 | const dirPath = path.join(__dirname, ...relativePath) 3 | await fs.remove(dirPath) 4 | } 5 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/makedir-func.js: -------------------------------------------------------------------------------- 1 | module.exports = async function makeDirFunction(path, relativeDirPath) { 2 | const dirPath = path.join(__dirname, relativeDirPath) 3 | await fs.mkdirp(dirPath) 4 | } 5 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/set-target-arch.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'change-arch', 4 | description: 'Change macOS build architecture in package.json', 5 | version: '0.1', 6 | arguments: [ 7 | {name: '', choices: ['x64', 'arm64']}, 8 | ], 9 | }, 10 | run: async (args) => { 11 | const path = require('path'); 12 | try { 13 | const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); 14 | packageJson['build']['mac']['target'][0]['arch'][0] = args[0]; 15 | packageJson['build']['mac']['target'][1]['arch'][0] = args[0]; 16 | fs.writeFileSync(path.join(__dirname, '../package.json'), JSON.stringify(packageJson, null, 2)); 17 | } catch (e) { 18 | e.message = e.stack.red; 19 | throw e; 20 | } 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /packages/desktop-app/gushio/target-clean.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: { 3 | name: 'clean', 4 | description: 'Cleanup all files built previously', 5 | version: '0.1', 6 | }, 7 | run: async () => { 8 | const path = require('path') 9 | const deleteFunction = require('./delete-func') 10 | 11 | try { 12 | console.log('Performing cleanup... ') 13 | await deleteFunction(path, "..", "electron", "dist") 14 | await deleteFunction(path, "..", "dist", "leapp-client") 15 | await deleteFunction(path, "..", "coverage") 16 | await deleteFunction(path, "..", ".angular") 17 | console.log('Cleanup completed successfully') 18 | } catch (e) { 19 | e.message = e.stack.red 20 | throw e 21 | } 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /packages/desktop-app/karma-process-mock.js: -------------------------------------------------------------------------------- 1 | var process = { 2 | env: { DEBUG: undefined }, 3 | }; 4 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { RouterModule, Routes } from "@angular/router"; 3 | import { MainLayoutComponent } from "./layout/main-layout/main-layout.component"; 4 | import { LockPageComponent } from "./components/lock-page/lock-page.component"; 5 | 6 | const routes: Routes = [ 7 | { 8 | path: "dashboard", 9 | component: MainLayoutComponent, 10 | }, 11 | { 12 | path: "lock", 13 | component: LockPageComponent, 14 | }, 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [RouterModule.forRoot(routes)], 19 | exports: [RouterModule], 20 | }) 21 | export class AppRoutingModule {} 22 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 | 8 | Loading workspace... 9 |
10 |
11 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | .loading { 2 | position: absolute; 3 | margin: 0 auto; 4 | margin-top: -30px; 5 | top: 50%; 6 | } 7 | 8 | #loader-overlay { 9 | position: fixed; 10 | display: flex; 11 | flex-direction: column; 12 | justify-content: center; 13 | align-items: center; 14 | top: 0; 15 | left: 0; 16 | right: 0; 17 | bottom: 0; 18 | background-color: rgba(0, 0, 0, 0.6); 19 | z-index: 100; 20 | 21 | i { 22 | color: #CCC; 23 | font-size: 30px; 24 | } 25 | 26 | span { 27 | margin-top: 15px; 28 | color: #CCC; 29 | } 30 | 31 | &.hidden { 32 | display: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/check-icon-svg/check-icon-svg.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/check-icon-svg/check-icon-svg.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/app/components/check-icon-svg/check-icon-svg.component.scss -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/contextual-menu/contextual-menu.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/mixins/utility"; 2 | @import "../../../assets/scss/mixins/palette"; 3 | @import "../../../assets/scss/global"; 4 | 5 | .not-displayed { 6 | display: none; 7 | } 8 | 9 | img.moon-stop-outline { 10 | width: 23px; 11 | margin-left: -2px; 12 | margin-bottom: 2px; 13 | } 14 | 15 | .disabled i.moon-Open-Web-Console, 16 | .disabled span { 17 | color: $silver-30; 18 | } 19 | 20 | .userCircle { 21 | display: inline-block; 22 | width: 20px; 23 | height: 20px; 24 | border-radius: 10px; 25 | background: #00aaff; 26 | color: #fff; 27 | font-size: 10px; 28 | text-transform: uppercase; 29 | } 30 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/authorization-dialog/authorization-dialog.component.html: -------------------------------------------------------------------------------- 1 | 2 |

Authorization requested

3 | 4 |
5 |
6 |
AWS user code for this SSO request is
7 |
{{authorizationCode}}
8 |
9 |
10 | 11 |
12 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/authorization-dialog/authorization-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/mixins/palette"; 2 | @import "../../../../assets/scss/modals"; 3 | 4 | ::ng-deep { 5 | .confirm-modal { 6 | max-width: 520px!important; 7 | width: 100%; 8 | padding: $modal-padding; 9 | } 10 | } 11 | 12 | .content { 13 | .message { 14 | max-height: 318px; 15 | overflow-y: auto; 16 | padding-top: 20px; 17 | font-size: 15px; 18 | color: $medium-dark; 19 | text-align: center; 20 | } 21 | .authorization-code { 22 | overflow-y: auto; 23 | padding-top: 20px; 24 | font-size: 30px; 25 | color: $black; 26 | text-align: center; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/authorization-dialog/authorization-dialog.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, OnInit } from "@angular/core"; 2 | import { BsModalRef } from "ngx-bootstrap/modal"; 3 | 4 | @Component({ 5 | selector: "app-authorization-dialog", 6 | templateUrl: "./authorization-dialog.component.html", 7 | styleUrls: ["./authorization-dialog.component.scss"], 8 | }) 9 | export class AuthorizationDialogComponent implements OnInit { 10 | @Input() 11 | authorizationCode: string; 12 | 13 | constructor(private bsModalRef: BsModalRef) {} 14 | 15 | ngOnInit(): void {} 16 | 17 | close(): void { 18 | this.bsModalRef.hide(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/change-named-profile-dialog/change-named-profile-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .named-profile-form { 2 | margin-top: 20px; 3 | 4 | a { 5 | display: inline-block; 6 | margin-left: 10px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/change-region-dialog/change-region-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .select-region-form { 2 | margin-top: 20px; 3 | 4 | a { 5 | display: inline-block; 6 | margin-left: 10px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/column-dialog/column-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/mixins/palette"; 2 | @import "../../../../assets/scss/modals"; 3 | 4 | ::ng-deep { 5 | .column-modal { 6 | max-width: 520px!important; 7 | width: 100%; 8 | } 9 | } 10 | 11 | form { 12 | margin-top: 20px; 13 | 14 | a { 15 | display: inline-block; 16 | margin-left: 10px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/confirmation-dialog/confirmation-dialog.component.html: -------------------------------------------------------------------------------- 1 | 2 |

Action Required

3 | 4 |
5 |
6 |
7 | 8 | 9 | {{cancelText || 'Cancel'}} 10 |
11 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/confirmation-dialog/confirmation-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/mixins/palette"; 2 | @import "../../../../assets/scss/modals"; 3 | 4 | ::ng-deep { 5 | .confirm-modal { 6 | max-width: 520px!important; 7 | width: 100%; 8 | padding: $modal-padding; 9 | } 10 | } 11 | 12 | .content { 13 | .message { 14 | max-height: 318px; 15 | overflow-y: auto; 16 | padding-top: 20px; 17 | font-size: 15px; 18 | color: $medium-dark; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/credential-process-dialog/credential-process-dialog.component.html: -------------------------------------------------------------------------------- 1 | 2 |

Attention

3 | 4 |
5 |
6 | You've selected Credential Process as your credential generation method. You must have the Leapp Cli installed to make it work. 7 |
8 |
9 | 10 | 11 | {{cancelText || 'Cancel'}} 12 |
13 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/credential-process-dialog/credential-process-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/mixins/palette"; 2 | @import "../../../../assets/scss/modals"; 3 | 4 | ::ng-deep { 5 | .confirm-modal { 6 | max-width: 520px!important; 7 | width: 100%; 8 | padding: $modal-padding; 9 | } 10 | } 11 | 12 | .content { 13 | .message { 14 | max-height: 318px; 15 | overflow-y: auto; 16 | padding-top: 20px; 17 | font-size: 15px; 18 | color: $medium-dark; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/edit-dialog/edit-dialog.component.scss: -------------------------------------------------------------------------------- 1 | 2 | @import "../../../../assets/scss/mixins/palette"; 3 | @import "../../../../assets/scss/mixins/utility"; 4 | @import "../../../../assets/scss/global"; 5 | 6 | ::ng-deep { 7 | .edit-modal { 8 | max-width: 520px!important; 9 | width: 100%; 10 | } 11 | } 12 | 13 | .title-img { 14 | width: 32px; 15 | margin-right: 12px; 16 | } 17 | 18 | form { 19 | margin-top: 20px; 20 | 21 | a { 22 | display: inline-block; 23 | margin-left: 10px; 24 | } 25 | } 26 | 27 | .disabled { 28 | background: $silver-dark!important; 29 | } 30 | 31 | .check-validity { margin-left: 20px; margin-right: 10px; } 32 | .cancel { color: $silver-dark; } 33 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/input-dialog/input-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/modals"; 2 | @import "../../../../assets/scss/mixins/palette"; 3 | 4 | ::ng-deep { 5 | .confirm-modal { 6 | max-width: 520px!important; 7 | width: 100%; 8 | } 9 | } 10 | 11 | p { color: $text-color; } 12 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/noovolari-dialog/noovolari-dialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from "@angular/core/testing"; 2 | 3 | import { NoovolariDialogComponent } from "./noovolari-dialog.component"; 4 | 5 | describe("NoovolariDialogComponent", () => { 6 | let component: NoovolariDialogComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [NoovolariDialogComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NoovolariDialogComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it("should create", () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/options-dialog/options-dialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 4 | 5 | import { ProfilePageComponent } from './profile-page.component'; 6 | 7 | describe('ProfilePageComponent', () => { 8 | let component: ProfilePageComponent; 9 | let fixture: ComponentFixture; 10 | 11 | beforeEach(async(() => { 12 | TestBed.configureTestingModule({ 13 | declarations: [ ProfilePageComponent ] 14 | }) 15 | .compileComponents(); 16 | })); 17 | 18 | beforeEach(() => { 19 | fixture = TestBed.createComponent(ProfilePageComponent); 20 | component = fixture.componentInstance; 21 | fixture.detectChanges(); 22 | }); 23 | 24 | it('should create', () => { 25 | expect(component).toBeTruthy(); 26 | }); 27 | }); 28 | 29 | */ 30 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/segment-dialog/segment-dialog.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/scss/mixins/palette"; 2 | @import "../../../../assets/scss/mixins/utility"; 3 | @import "../../../../assets/scss/global"; 4 | 5 | ::ng-deep { 6 | .segment-modal { 7 | max-width: 520px!important; 8 | width: 100%; 9 | } 10 | } 11 | 12 | form { 13 | margin-top: 20px; 14 | 15 | a { 16 | display: inline-block; 17 | margin-left: 10px; 18 | } 19 | } 20 | 21 | .create-new { 22 | border-top: 1px solid $silver-50; 23 | color: $silver-dark; 24 | padding: 5px 0; 25 | 26 | i { 27 | color: $silver-dark; 28 | } 29 | } 30 | 31 | .add { 32 | cursor: pointer; 33 | color: $text-color; 34 | i { 35 | color: $text-color; 36 | } 37 | } 38 | 39 | small { 40 | color: $small-color; 41 | font-size: 12px; 42 | } 43 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/ssm-modal-dialog/ssm-modal-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .ssm-tray-form { 2 | margin-top: 20px; 3 | 4 | a { 5 | display: inline-block; 6 | margin-left: 10px; 7 | } 8 | } 9 | 10 | .loader { 11 | text-align: center; 12 | padding: 10px; 13 | } 14 | 15 | 16 | .ssm-ul { 17 | padding: 20px; 18 | 19 | .ssm-card { 20 | height: 40px; 21 | 22 | button { 23 | padding: 5px 10px !important; 24 | float: right; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/dialogs/update-dialog/update-dialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from "@angular/core/testing"; 2 | 3 | import { UpdateDialogComponent } from "./update-dialog.component"; 4 | 5 | describe("UpdateDialogComponent", () => { 6 | let component: UpdateDialogComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [UpdateDialogComponent], 12 | }).compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(UpdateDialogComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it("should create", () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/leapp-select/leapp-select.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/mixins/palette"; 2 | @import "../../../assets/scss/mixins/utility"; 3 | @import "../../../assets/scss/global"; 4 | 5 | .create-new { 6 | border-top: 1px solid $silver-50; 7 | color: $silver-dark; 8 | padding: 10px 10px 0 10px; 9 | 10 | i { 11 | color: $silver-dark; 12 | font-size: 20px; 13 | position: relative; 14 | top: 3px; 15 | } 16 | } 17 | 18 | .add { 19 | cursor: pointer; 20 | color: $text-color; 21 | i { 22 | color: $text-color; 23 | } 24 | } 25 | 26 | .temp-name { 27 | overflow: hidden; 28 | max-width: 240px; 29 | text-overflow: ellipsis; 30 | white-space: nowrap; 31 | display: inline-block; 32 | position: relative; 33 | top: 6px; 34 | } 35 | 36 | ::ng-deep { 37 | span.ng-option-label { 38 | overflow: hidden; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/sessions/pipes/filtering.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from "@angular/core"; 2 | import { Session } from "@noovolari/leapp-core/models/session"; 3 | import { SessionStatus } from "@noovolari/leapp-core/models/session-status"; 4 | 5 | @Pipe({ 6 | name: "filtering", 7 | }) 8 | export class FilteringPipe implements PipeTransform { 9 | transform(sessions: Session[], activeOrPending: boolean): Session[] { 10 | return sessions.filter((session) => 11 | activeOrPending 12 | ? session.status === SessionStatus.active || session.status === SessionStatus.pending 13 | : session.status === SessionStatus.inactive 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/snackbar/snackbar.component.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/tray-menu/tray-menu.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/components/tray-menu/tray-menu.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/app/components/tray-menu/tray-menu.component.scss -------------------------------------------------------------------------------- /packages/desktop-app/src/app/layout/layout.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | import { TranslateModule } from "@ngx-translate/core"; 4 | import { RouterModule } from "@angular/router"; 5 | import { TabsModule } from "ngx-bootstrap/tabs"; 6 | import { BsDropdownModule } from "ngx-bootstrap/dropdown"; 7 | import { TooltipModule } from "ngx-bootstrap/tooltip"; 8 | import { MainLayoutComponent } from "./main-layout/main-layout.component"; 9 | import { ComponentsModule } from "../components/components.module"; 10 | 11 | @NgModule({ 12 | declarations: [MainLayoutComponent], 13 | exports: [], 14 | imports: [CommonModule, TabsModule.forRoot(), TranslateModule, BsDropdownModule.forRoot(), RouterModule, TooltipModule, ComponentsModule], 15 | }) 16 | export class LayoutModule {} 17 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/layout/main-layout/main-layout.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 7 |
8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/app-mfa-code-prompt.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from "@angular/core/testing"; 2 | 3 | import { AppMfaCodePromptService } from "./app-mfa-code-prompt.service"; 4 | import { mustInjected } from "../../base-injectables"; 5 | 6 | describe("AppMfaCodePromptService", () => { 7 | let service: AppMfaCodePromptService; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | providers: [].concat(mustInjected()), 12 | }); 13 | service = TestBed.inject(AppMfaCodePromptService); 14 | }); 15 | 16 | it("should be created", () => { 17 | expect(service).toBeTruthy(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/app-native.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from "@angular/core/testing"; 2 | 3 | import { AppNativeService } from "./app-native.service"; 4 | 5 | describe("AppNativeService", () => { 6 | let service: AppNativeService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(AppNativeService); 11 | }); 12 | 13 | it("should be created", () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/app-provider.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from "@angular/core/testing"; 2 | 3 | import { AppProviderService } from "./app-provider.service"; 4 | import { mustInjected } from "../../base-injectables"; 5 | 6 | describe("AppProviderService", () => { 7 | let service: AppProviderService; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | providers: [].concat(mustInjected()), 12 | }); 13 | service = TestBed.inject(AppProviderService); 14 | }); 15 | 16 | it("should be created", () => { 17 | expect(service).toBeTruthy(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/app.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from "@angular/core/testing"; 2 | 3 | import { AppService } from "./app.service"; 4 | import { mustInjected } from "../../base-injectables"; 5 | 6 | describe("AppService", () => { 7 | beforeEach(() => 8 | TestBed.configureTestingModule({ 9 | providers: [AppService].concat(mustInjected()), 10 | }) 11 | ); 12 | 13 | it("should be created", () => { 14 | const service: AppService = TestBed.inject(AppService); 15 | expect(service).toBeTruthy(); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/msal-encryption.service.ts: -------------------------------------------------------------------------------- 1 | import { IMsalEncryptionService } from "@noovolari/leapp-core/interfaces/i-msal-encryption-service"; 2 | 3 | // Convert the native sync service to an async service 4 | export class MsalEncryptionService implements IMsalEncryptionService { 5 | constructor(private nativeMsalEncryptionService: any) {} 6 | 7 | async protectData(dataToEncrypt: Uint8Array, optionalEntropy: Uint8Array, scope: string): Promise { 8 | return this.nativeMsalEncryptionService.protectData(dataToEncrypt, optionalEntropy, scope); 9 | } 10 | 11 | async unprotectData(encryptedData: Uint8Array, optionalEntropy: Uint8Array, scope: string): Promise { 12 | return this.nativeMsalEncryptionService.unprotectData(encryptedData, optionalEntropy, scope); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/desktop-app/src/app/services/updater.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from "@angular/core/testing"; 2 | 3 | import { UpdaterService } from "./updater.service"; 4 | import { mustInjected } from "../../base-injectables"; 5 | 6 | describe("UpdaterService", () => { 7 | let service: UpdaterService; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | providers: [].concat(mustInjected()), 12 | }); 13 | service = TestBed.inject(UpdaterService); 14 | }); 15 | 16 | it("should be created", () => { 17 | expect(service).toBeTruthy(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/.gitkeep -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/fonts/icomoon-2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/fonts/icomoon-2.ttf -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/fonts/icomoon.ttf -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADD_WORKSPACE": "next", 3 | "ADD_YOUR_WORKSPACE": "Insert your workspace name*", 4 | "CHANGE_LANGUAGE": "Change Language", 5 | "RESTART_AS_WINDOW": "Restart as window", 6 | "RESTART_IN_MENU": "Restart in menu" 7 | } 8 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/i18n/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADD_WORKSPACE": "", 3 | "ADD_YOUR_WORKSPACE": "", 4 | "CHANGE_LANGUAGE": "", 5 | "RESTART_AS_WINDOW": "", 6 | "RESTART_IN_MENU": "" 7 | } -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/icons/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/icons/background.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/icons/icon.icns -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/icons/icon.ico -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/icons/icon.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Home_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Home_icon.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp-rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp-rounded.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp.icns -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp.ico -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/LeappMini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/LeappMini.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/LeappMini@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/LeappMini@2x.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/LeappTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/LeappTemplate.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/LeappTemplate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/LeappTemplate@2x.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp_Logo_Blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp_Logo_Blu.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/Leapp_Logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/Leapp_Logo_white.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/account-hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/account-hero.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/alibaba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/alibaba.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/arrows-clockwise-fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/aws-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/aws-dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/aws-old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/aws-old.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/aws-sso-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/aws-sso-logo.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/aws.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/azure-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/azure-dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/azure-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/azure.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/back.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/book-open-text.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/books.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/bug.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/buildings.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/dots-three-outline-vertical-fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/edit-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/edit-light.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/error.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/fake_blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/fake_blur.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/favicon.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/fingerprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/fingerprint.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/google.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/home-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/home-offline.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/home-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/home-online.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/icon-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/icon-offline.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/icon-online-aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/icon-online-aws.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/icon-online-azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/icon-online-azure.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/in-browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/in-browser.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/leapp-logo-dark-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/leapp-logo-dark-theme.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/leapp-logo-white-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/leapp-logo-white-theme.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/leapp-team-early-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/leapp-team-early-access.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/lightbulb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/lines.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/loading-pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/loading-pc.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/localstack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/localstack.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/lock-key-fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/logout.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/medal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/no-result-found-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/no-result-found-filter.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/no-result-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/no-result-found.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/no-sessions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/no-sessions.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/noovolari-logo-dark-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/noovolari-logo-dark-theme.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/noovolari-logo-white-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/noovolari-logo-white-theme.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/question-fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/read-notification.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/sign-in.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/sign-out.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/start-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/start-screen.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/stop-circle-light-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/stop-circle-light-dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/stop-circle-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/stop-circle-light.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/survey-infographic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/survey-infographic.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/trash-alt-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/trash-alt-light.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/unread-notification.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/unsync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/unsync.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/user-offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/user-offline.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/user-online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/user-online.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/white-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/white-background.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_close.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_close_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_close_dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_maximize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_maximize.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_maximize_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_maximize_dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_minimize.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/images/windows_minimize_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/assets/images/windows_minimize_dark.png -------------------------------------------------------------------------------- /packages/desktop-app/src/assets/scss/toast.scss: -------------------------------------------------------------------------------- 1 | .toast-error, .toast-warning, .toast-success, .toast-info { 2 | border-radius: 3px; 3 | padding: 10px 20px; 4 | min-width: 400px; 5 | z-index: 9999; 6 | font-size: 14px; 7 | } 8 | 9 | .toast-info { color: #ffffff !important; background: #64BFFC!important; } 10 | .toast-success { color: #ffffff!important; background: rgba(72, 199, 76, 0.8) !important; } 11 | .toast-error { color: #ffffff !important; background: #dc2c29 !important; } 12 | .toast-warning { color: #ffffff !important; background: #ffca25 !important; } 13 | 14 | .toast-container { z-index: 99; } 15 | -------------------------------------------------------------------------------- /packages/desktop-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noovolari/leapp/3894ac12b9fced90afe2fe7e17fd13ca9ab4dd99/packages/desktop-app/src/favicon.ico -------------------------------------------------------------------------------- /packages/desktop-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from "@angular/core"; 2 | import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; 3 | import "reflect-metadata"; 4 | 5 | import { AppModule } from "./app/app.module"; 6 | import { environment } from "./environments/environment"; 7 | 8 | if (environment.production) { 9 | enableProdMode(); 10 | } 11 | 12 | platformBrowserDynamic() 13 | .bootstrapModule(AppModule) 14 | .catch((err) => console.error(err)); 15 | -------------------------------------------------------------------------------- /packages/desktop-app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | import "zone.js/testing"; 3 | import { getTestBed } from "@angular/core/testing"; 4 | import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from "@angular/platform-browser-dynamic/testing"; 5 | 6 | declare const require: any; 7 | 8 | // Initialize the Angular testing environment 9 | getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); 10 | 11 | // Find all the tests 12 | const context = require.context("./", true, /\.spec\.ts$/); 13 | 14 | // Load the modules 15 | context.keys().map(context); 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | {} 2 | --------------------------------------------------------------------------------