gitextract_w_z6e63k/ ├── .dockerignore ├── .github/ │ └── workflows/ │ ├── quix-backend-build.yml │ ├── quix-documentation-publish.yml │ ├── quix-frontend-publish.yml │ └── quix-frontend-release.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── build-selector.sh ├── docker-compose.prebuilt.yml ├── docker-compose.yml ├── documentation/ │ ├── docs/ │ │ ├── about.md │ │ ├── architecture.md │ │ ├── athena.md │ │ ├── bigquery.md │ │ ├── clickhouse.md │ │ ├── installation.md │ │ ├── jdbc.md │ │ ├── mariadb.md │ │ ├── mysql.md │ │ ├── oracle.md │ │ ├── postgresql.md │ │ ├── presto.md │ │ ├── python.md │ │ └── redshift.md │ └── website/ │ ├── README.md │ ├── blog/ │ │ └── 2019-11-25-first-release.md │ ├── core/ │ │ └── Footer.js │ ├── i18n/ │ │ └── en.json │ ├── package.json │ ├── pages/ │ │ └── en/ │ │ ├── help.js │ │ ├── index.js │ │ └── users.js │ ├── sidebars.json │ ├── siteConfig.js │ └── static/ │ └── css/ │ └── custom.css ├── env-example ├── quix-backend/ │ ├── Dockerfile │ ├── README.md │ ├── build.sbt │ ├── quix-api/ │ │ └── src/ │ │ └── main/ │ │ └── scala/ │ │ └── quix/ │ │ └── api/ │ │ ├── v1/ │ │ │ ├── db/ │ │ │ │ └── Db.scala │ │ │ ├── execute/ │ │ │ │ ├── Api.scala │ │ │ │ ├── Batch.scala │ │ │ │ ├── ExecutionEngine.scala │ │ │ │ └── ExecutionProtocol.scala │ │ │ ├── module/ │ │ │ │ └── ExecutionModule.scala │ │ │ └── users/ │ │ │ └── Users.scala │ │ └── v2/ │ │ └── execute/ │ │ ├── Builder.scala │ │ ├── ExecutionModule.scala │ │ ├── Executor.scala │ │ ├── Session.scala │ │ └── SubQuery.scala │ ├── quix-core/ │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── core/ │ │ │ ├── db/ │ │ │ │ ├── DbOps.scala │ │ │ │ ├── RefreshableAutocomplete.scala │ │ │ │ ├── RefreshableCatalogs.scala │ │ │ │ ├── RefreshableDb.scala │ │ │ │ └── State.scala │ │ │ ├── download/ │ │ │ │ ├── DownloadConfig.scala │ │ │ │ └── DownloadableBuilder.scala │ │ │ ├── executions/ │ │ │ │ ├── DelegatingBuilder.scala │ │ │ │ ├── SingleQueryExecutor.scala │ │ │ │ └── SqlModule.scala │ │ │ ├── history/ │ │ │ │ ├── Execution.scala │ │ │ │ ├── HistoryBuilder.scala │ │ │ │ └── dao/ │ │ │ │ ├── HistoryReadDao.scala │ │ │ │ ├── HistoryWriteDao.scala │ │ │ │ ├── InMemoryHistoryDao.scala │ │ │ │ └── MySqlHistoryDao.scala │ │ │ ├── results/ │ │ │ │ ├── MultiBuilder.scala │ │ │ │ └── SingleBuilder.scala │ │ │ ├── sql/ │ │ │ │ ├── PrestoSqlOps.scala │ │ │ │ └── SqlSplitter.scala │ │ │ └── utils/ │ │ │ ├── Chores.scala │ │ │ ├── JsonOps.scala │ │ │ └── TaskOps.scala │ │ └── test/ │ │ ├── resources/ │ │ │ └── db/ │ │ │ └── 001_init.sql │ │ └── scala/ │ │ └── quix/ │ │ └── core/ │ │ ├── db/ │ │ │ ├── DbOpsTest.scala │ │ │ └── DbQueryTest.scala │ │ ├── executions/ │ │ │ └── SqlModuleTest.scala │ │ ├── history/ │ │ │ ├── ExecutionMatchers.scala │ │ │ ├── FakeBuilder.scala │ │ │ ├── FakeClock.scala │ │ │ ├── HistoryBuilderTest.scala │ │ │ └── dao/ │ │ │ ├── HistoryDaoContractTest.scala │ │ │ ├── InMemoryHistoryDaoTest.scala │ │ │ └── MySqlHistoryDaoTest.scala │ │ ├── results/ │ │ │ └── MultiBuilderTest.scala │ │ └── sql/ │ │ ├── PrestoSqlOpsTest.scala │ │ └── StopWordsSplitterTest.scala │ ├── quix-modules/ │ │ ├── quix-athena-module/ │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── scala/ │ │ │ │ └── quix/ │ │ │ │ └── athena/ │ │ │ │ ├── AthenaAutocomplete.scala │ │ │ │ ├── AthenaCatalogs.scala │ │ │ │ ├── AthenaClient.scala │ │ │ │ ├── AthenaConfig.scala │ │ │ │ ├── AthenaQueryExecutor.scala │ │ │ │ ├── AthenaTables.scala │ │ │ │ ├── AwsAthenaClient.scala │ │ │ │ └── TryAthena.scala │ │ │ └── test/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── athena/ │ │ │ └── AthenaQueryExecutorTest.scala │ │ ├── quix-bigquery-module/ │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── scala/ │ │ │ │ └── quix/ │ │ │ │ └── bigquery/ │ │ │ │ ├── BigQueryClient.scala │ │ │ │ ├── BigQueryConfig.scala │ │ │ │ ├── BigQueryQueryExecutor.scala │ │ │ │ ├── BigQueryTestQueryExecutor.scala │ │ │ │ ├── GoogleBigQueryClient.scala │ │ │ │ ├── TryBigQuery.scala │ │ │ │ └── db/ │ │ │ │ ├── BigQueryAutocomplete.scala │ │ │ │ ├── BigQueryCatalogs.scala │ │ │ │ └── BigQueryTables.scala │ │ │ └── test/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── bigquery/ │ │ │ └── BigQueryQueryExecutorTest.scala │ │ ├── quix-dummy-module/ │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── scala/ │ │ │ │ └── quix/ │ │ │ │ └── dummy/ │ │ │ │ └── DummyQueryExecutor.scala │ │ │ └── test/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── dummy/ │ │ │ └── DummyQueryExecutorTest.scala │ │ ├── quix-jdbc-module/ │ │ │ └── src/ │ │ │ ├── it/ │ │ │ │ ├── resources/ │ │ │ │ │ └── db/ │ │ │ │ │ └── 001_init.sql │ │ │ │ └── scala/ │ │ │ │ └── quix/ │ │ │ │ └── jdbc/ │ │ │ │ ├── EmbeddedMysqlDb.scala │ │ │ │ ├── MysqlJdbcIntegrationTest.scala │ │ │ │ ├── MysqlJdbcQueryExecutorIntegrationTest.scala │ │ │ │ └── MysqlJdbcTablesIntegrationTest.scala │ │ │ └── main/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── jdbc/ │ │ │ ├── JdbcAutocomplete.scala │ │ │ ├── JdbcCatalogs.scala │ │ │ ├── JdbcQueryExecutor.scala │ │ │ └── JdbcTables.scala │ │ ├── quix-presto-module/ │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── scala/ │ │ │ │ └── quix/ │ │ │ │ └── presto/ │ │ │ │ ├── PrestoConfig.scala │ │ │ │ ├── QueryExecutor.scala │ │ │ │ ├── TestQueryExecutor.scala │ │ │ │ ├── TryPresto.scala │ │ │ │ ├── db/ │ │ │ │ │ ├── PrestoAutocomplete.scala │ │ │ │ │ ├── PrestoCatalogs.scala │ │ │ │ │ └── PrestoTables.scala │ │ │ │ └── rest/ │ │ │ │ ├── PrestoRestApi.scala │ │ │ │ ├── PrestoStateClient.scala │ │ │ │ ├── ScalaJPrestoOps.scala │ │ │ │ └── ScalaJPrestoStateClient.scala │ │ │ └── test/ │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── presto/ │ │ │ ├── QueryExecutorTest.scala │ │ │ ├── db/ │ │ │ │ ├── PrestoAutocompleteTest.scala │ │ │ │ ├── PrestoCatalogsTest.scala │ │ │ │ └── PrestoTablesTest.scala │ │ │ └── rest/ │ │ │ ├── ScalaJPrestoOpsTest.scala │ │ │ └── ScalaJPrestoStateClientTest.scala │ │ └── quix-python-module/ │ │ └── src/ │ │ ├── main/ │ │ │ ├── resources/ │ │ │ │ ├── activator.py │ │ │ │ ├── packages.py │ │ │ │ └── quix.py │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── python/ │ │ │ ├── PythonApi.scala │ │ │ ├── PythonBridge.scala │ │ │ ├── PythonConfig.scala │ │ │ ├── PythonExecutor.scala │ │ │ ├── PythonModule.scala │ │ │ ├── PythonProcessHandler.scala │ │ │ ├── PythonRunningProcess.scala │ │ │ └── TryPython.scala │ │ └── test/ │ │ └── scala/ │ │ └── quix/ │ │ └── python/ │ │ ├── PythonBridgeTest.scala │ │ └── PythonExecutorTest.scala │ ├── quix-webapps/ │ │ └── quix-web-spring/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── resources/ │ │ │ │ ├── application.properties │ │ │ │ └── logback-spring.xml │ │ │ └── scala/ │ │ │ └── quix/ │ │ │ └── web/ │ │ │ ├── Server.scala │ │ │ ├── auth/ │ │ │ │ ├── DemoUsers.scala │ │ │ │ └── JwtUsers.scala │ │ │ ├── controllers/ │ │ │ │ ├── DbController.scala │ │ │ │ ├── DownloadController.scala │ │ │ │ ├── HealthController.scala │ │ │ │ ├── HistoryController.scala │ │ │ │ └── SqlStreamingController.scala │ │ │ └── spring/ │ │ │ ├── HistoryDaoConfig.scala │ │ │ ├── SpringConfig.scala │ │ │ └── WebsocketsConfig.scala │ │ └── test/ │ │ ├── resources/ │ │ │ ├── db/ │ │ │ │ └── 001_init.sql │ │ │ ├── logback-test.xml │ │ │ └── test.properties │ │ └── scala/ │ │ └── quix/ │ │ └── web/ │ │ ├── E2EContext.scala │ │ ├── SpringConfigWithTestExecutor.scala │ │ ├── auth/ │ │ │ ├── DemoUsersTest.scala │ │ │ └── JwtUsersTest.scala │ │ └── controllers/ │ │ ├── DownloadControllerTest.scala │ │ ├── EmbeddedMySql.scala │ │ ├── ExecutionEventTest.scala │ │ ├── HealthControllerTest.scala │ │ ├── HistoryControllerTest.scala │ │ ├── JdbcSqlStreamingControllerTest.scala │ │ ├── PrestoDbControllerTest.scala │ │ ├── PythonStreamingControllerTest.scala │ │ └── SqlStreamingControllerTest.scala │ └── version.sbt ├── quix-frontend/ │ ├── .dockerignore │ ├── .nvmrc │ ├── Dockerfile │ ├── README.md │ ├── client/ │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .npmrc │ │ ├── .nvmrc │ │ ├── README.md │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.scss │ │ │ ├── app.ts │ │ │ ├── bootstrap.ts │ │ │ ├── components/ │ │ │ │ ├── User/ │ │ │ │ │ ├── UserAvatar.tsx │ │ │ │ │ └── UserAvatarAndName.tsx │ │ │ │ ├── actions/ │ │ │ │ │ ├── actions-testkit.ts │ │ │ │ │ ├── actions-types.ts │ │ │ │ │ ├── actions.html │ │ │ │ │ ├── actions.scss │ │ │ │ │ └── actions.ts │ │ │ │ ├── breadcrumbs/ │ │ │ │ │ ├── breadcrumbs-testkit.ts │ │ │ │ │ ├── breadcrumbs-types.ts │ │ │ │ │ ├── breadcrumbs.html │ │ │ │ │ ├── breadcrumbs.scss │ │ │ │ │ └── breadcrumbs.ts │ │ │ │ ├── db-sidebar/ │ │ │ │ │ ├── db-sidebar-testkit.ts │ │ │ │ │ ├── db-sidebar-types.ts │ │ │ │ │ ├── db-sidebar.html │ │ │ │ │ ├── db-sidebar.scss │ │ │ │ │ └── db-sidebar.ts │ │ │ │ ├── destination-picker/ │ │ │ │ │ ├── destination-picker-testkit.ts │ │ │ │ │ ├── destination-picker-types.ts │ │ │ │ │ ├── destination-picker.html │ │ │ │ │ ├── destination-picker.scss │ │ │ │ │ └── destination-picker.ts │ │ │ │ ├── files-sidebar/ │ │ │ │ │ ├── files-sidebar-testkit.ts │ │ │ │ │ ├── files-sidebar-types.ts │ │ │ │ │ ├── files-sidebar.html │ │ │ │ │ ├── files-sidebar.scss │ │ │ │ │ └── files-sidebar.ts │ │ │ │ ├── header/ │ │ │ │ │ ├── header-testkit.ts │ │ │ │ │ ├── header-types.ts │ │ │ │ │ ├── header.html │ │ │ │ │ ├── header.scss │ │ │ │ │ └── header.ts │ │ │ │ ├── image/ │ │ │ │ │ ├── image-types.ts │ │ │ │ │ ├── image.html │ │ │ │ │ ├── image.scss │ │ │ │ │ └── image.ts │ │ │ │ ├── index.ts │ │ │ │ ├── meta/ │ │ │ │ │ ├── meta-testkit.ts │ │ │ │ │ ├── meta-types.ts │ │ │ │ │ ├── meta.html │ │ │ │ │ ├── meta.scss │ │ │ │ │ └── meta.ts │ │ │ │ ├── note/ │ │ │ │ │ ├── note-events.ts │ │ │ │ │ ├── note-testkit.ts │ │ │ │ │ ├── note-types.ts │ │ │ │ │ ├── note.html │ │ │ │ │ ├── note.scss │ │ │ │ │ └── note.ts │ │ │ │ ├── note-hints/ │ │ │ │ │ ├── note-hints.html │ │ │ │ │ ├── note-hints.scss │ │ │ │ │ └── note-hints.ts │ │ │ │ ├── note-share/ │ │ │ │ │ ├── note-share-testkit.ts │ │ │ │ │ ├── note-share-types.ts │ │ │ │ │ ├── note-share.html │ │ │ │ │ ├── note-share.scss │ │ │ │ │ └── note-share.ts │ │ │ │ ├── npc/ │ │ │ │ │ ├── npc.html │ │ │ │ │ ├── npc.scss │ │ │ │ │ └── npc.ts │ │ │ │ ├── plugin-picker/ │ │ │ │ │ ├── plugin-picker-testkit.ts │ │ │ │ │ ├── plugin-picker-types.ts │ │ │ │ │ ├── plugin-picker.html │ │ │ │ │ ├── plugin-picker.scss │ │ │ │ │ └── plugin-picker.ts │ │ │ │ ├── runner/ │ │ │ │ │ ├── runner-results-formatter.ts │ │ │ │ │ ├── runner-testkit.ts │ │ │ │ │ ├── runner-types.ts │ │ │ │ │ ├── runner.html │ │ │ │ │ ├── runner.scss │ │ │ │ │ └── runner.ts │ │ │ │ ├── search-results/ │ │ │ │ │ ├── search-results-testkit.ts │ │ │ │ │ ├── search-results-types.ts │ │ │ │ │ ├── search-results.html │ │ │ │ │ ├── search-results.scss │ │ │ │ │ └── search-results.ts │ │ │ │ └── temp-query/ │ │ │ │ ├── temp-query-testkit.ts │ │ │ │ ├── temp-query-types.ts │ │ │ │ ├── temp-query.html │ │ │ │ ├── temp-query.scss │ │ │ │ └── temp-query.ts │ │ │ ├── config.ts │ │ │ ├── custom.d.ts │ │ │ ├── data/ │ │ │ │ ├── examples-notebook.ts │ │ │ │ ├── index.ts │ │ │ │ └── quix-folder.ts │ │ │ ├── external-types.d.ts │ │ │ ├── hooks.ts │ │ │ ├── index.vm │ │ │ ├── lib/ │ │ │ │ ├── app/ │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── app.scss │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── login/ │ │ │ │ │ │ ├── login.html │ │ │ │ │ │ ├── login.scss │ │ │ │ │ │ └── login.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── app.ts │ │ │ │ │ │ ├── appStoreProvider.tsx │ │ │ │ │ │ ├── builder.ts │ │ │ │ │ │ ├── navigator.ts │ │ │ │ │ │ ├── plugin-builder.ts │ │ │ │ │ │ ├── sso.ts │ │ │ │ │ │ └── user.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── typings/ │ │ │ │ │ │ ├── story-builder.ts │ │ │ │ │ │ ├── types.d.ts │ │ │ │ │ │ └── window.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── scope-utils.ts │ │ │ │ ├── code-editor/ │ │ │ │ │ ├── ace-extensions/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── language-tools.ts │ │ │ │ │ │ ├── presto-snippets.ts │ │ │ │ │ │ ├── presto.mode.ts │ │ │ │ │ │ └── searchbox.ts │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── code-editor.html │ │ │ │ │ │ ├── code-editor.scss │ │ │ │ │ │ ├── code-editor.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ └── services/ │ │ │ │ │ ├── code-editor-annotator.ts │ │ │ │ │ ├── code-editor-completer.ts │ │ │ │ │ ├── code-editor-instance.ts │ │ │ │ │ ├── code-editor-params.ts │ │ │ │ │ ├── code-editor-selection.ts │ │ │ │ │ ├── code-editor-service.ts │ │ │ │ │ ├── code-editor-shortcuts.ts │ │ │ │ │ └── param-parser/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── param-renderers/ │ │ │ │ │ │ ├── boolean-param-renderer.ts │ │ │ │ │ │ ├── datetime-param-renderer.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── input-param-renderer.ts │ │ │ │ │ │ ├── list-param-renderer.ts │ │ │ │ │ │ ├── option-param-renderer.ts │ │ │ │ │ │ └── textarea-param-renderer.ts │ │ │ │ │ ├── param-serializers/ │ │ │ │ │ │ ├── default-param-serializer.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── param-serializer.ts │ │ │ │ │ │ └── python-param-serializer.ts │ │ │ │ │ ├── param-types.ts │ │ │ │ │ ├── params-parser.ts │ │ │ │ │ └── params-predefined-types.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── ang/ │ │ │ │ │ │ ├── drv/ │ │ │ │ │ │ │ ├── bi-options.drv.ts │ │ │ │ │ │ │ └── bi-validator.drv.ts │ │ │ │ │ │ └── srv/ │ │ │ │ │ │ ├── ng-model/ │ │ │ │ │ │ │ ├── ng-model-test.drv.ts │ │ │ │ │ │ │ ├── ng-model.test.ts │ │ │ │ │ │ │ └── ng-model.ts │ │ │ │ │ │ └── scope/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── scope.test.ts │ │ │ │ │ │ └── scope.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── main.angular.ts │ │ │ │ │ ├── srv/ │ │ │ │ │ │ ├── collections/ │ │ │ │ │ │ │ ├── buffered-collection.test.ts │ │ │ │ │ │ │ ├── buffered-collection.ts │ │ │ │ │ │ │ ├── collection.test.ts │ │ │ │ │ │ │ ├── collection.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── partitioned-collection.test.ts │ │ │ │ │ │ │ └── partitioned-collection.ts │ │ │ │ │ │ ├── event-emitter/ │ │ │ │ │ │ │ ├── event-emitter.test.ts │ │ │ │ │ │ │ ├── event-emitter.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── injector/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── local-storage/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── local-storage.test.ts │ │ │ │ │ │ │ └── local-storage.ts │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── model.test.ts │ │ │ │ │ │ │ └── model.ts │ │ │ │ │ │ ├── socket/ │ │ │ │ │ │ │ └── socket.ts │ │ │ │ │ │ ├── state/ │ │ │ │ │ │ │ ├── localstorage-state-provider.test.ts │ │ │ │ │ │ │ ├── localstorage-state-provider.ts │ │ │ │ │ │ │ ├── state-wrapper.test.ts │ │ │ │ │ │ │ ├── state-wrapper.ts │ │ │ │ │ │ │ ├── state.test.ts │ │ │ │ │ │ │ ├── state.ts │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ ├── url-params.test.ts │ │ │ │ │ │ │ ├── url-params.ts │ │ │ │ │ │ │ ├── url-state-provider.test.ts │ │ │ │ │ │ │ └── url-state-provider.ts │ │ │ │ │ │ └── view-model/ │ │ │ │ │ │ ├── view-model.test.ts │ │ │ │ │ │ └── view-model.ts │ │ │ │ │ ├── types/ │ │ │ │ │ │ └── angular-promise.d.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lodash4-polyfill.ts │ │ │ │ │ ├── lodash4-polyfill.types.ts │ │ │ │ │ ├── utils.test-prepare.ts │ │ │ │ │ └── utils.test.ts │ │ │ │ ├── file-explorer/ │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── file-explorer-dynamic.html │ │ │ │ │ │ ├── file-explorer-static.html │ │ │ │ │ │ ├── file-explorer-vm.ts │ │ │ │ │ │ ├── file-explorer.scss │ │ │ │ │ │ ├── file-explorer.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ └── services/ │ │ │ │ │ ├── file-explorer-controller.ts │ │ │ │ │ ├── file-explorer-instance.ts │ │ │ │ │ ├── file-explorer-models.ts │ │ │ │ │ ├── file-explorer-tools.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── language-parsers/ │ │ │ │ │ ├── presto-grammar/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── presto/ │ │ │ │ │ │ ├── SqlBase.tokens │ │ │ │ │ │ ├── SqlBaseLexer.tokens │ │ │ │ │ │ ├── SqlBaseLexer.ts │ │ │ │ │ │ ├── SqlBaseListener.ts │ │ │ │ │ │ ├── SqlBaseParser.ts │ │ │ │ │ │ └── SqlBaseVisitor.ts │ │ │ │ │ ├── python-grammar/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── python/ │ │ │ │ │ │ ├── Python3Lexer.js │ │ │ │ │ │ ├── Python3Lexer.tokens │ │ │ │ │ │ ├── Python3Listener.js │ │ │ │ │ │ ├── Python3Parser.js │ │ │ │ │ │ ├── Python3Visitor.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── python-parser/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parser/ │ │ │ │ │ │ │ ├── errors-listener.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── parser.spec.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── tokenizer/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── types/ │ │ │ │ │ │ │ ├── 3rd-party.d.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── web-worker/ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── web-worker-entry.ts │ │ │ │ │ │ ├── web-worker-manager.ts │ │ │ │ │ │ └── web-worker.ts │ │ │ │ │ └── sql-parser/ │ │ │ │ │ ├── auto-format/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parser/ │ │ │ │ │ │ ├── errors-listener.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parser.spec.ts │ │ │ │ │ │ ├── presto-listener.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── tokenizer/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── tokenizer.spec.ts │ │ │ │ │ │ └── tokensMap.ts │ │ │ │ │ ├── types/ │ │ │ │ │ │ ├── 3rd-party.d.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── web-worker/ │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── web-worker-entry.ts │ │ │ │ │ ├── web-worker-manager.ts │ │ │ │ │ └── web-worker.ts │ │ │ │ ├── runner/ │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── python-runner/ │ │ │ │ │ │ │ ├── python-runner-init.ts │ │ │ │ │ │ │ ├── python-runner.html │ │ │ │ │ │ │ ├── python-runner.scss │ │ │ │ │ │ │ └── python-runner.ts │ │ │ │ │ │ ├── results/ │ │ │ │ │ │ │ └── console/ │ │ │ │ │ │ │ ├── console-result-testkit.ts │ │ │ │ │ │ │ ├── console-result.html │ │ │ │ │ │ │ ├── console-result.scss │ │ │ │ │ │ │ ├── console-result.ts │ │ │ │ │ │ │ └── console-types.ts │ │ │ │ │ │ ├── runner/ │ │ │ │ │ │ │ ├── runner.html │ │ │ │ │ │ │ ├── runner.scss │ │ │ │ │ │ │ └── runner.ts │ │ │ │ │ │ └── sql-runner/ │ │ │ │ │ │ ├── sql-runner.html │ │ │ │ │ │ ├── sql-runner.scss │ │ │ │ │ │ └── sql-runner.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── autocomplete/ │ │ │ │ │ │ │ ├── autocomplete-service.ts │ │ │ │ │ │ │ ├── autocomplete-utils.ts │ │ │ │ │ │ │ ├── highlight-and-score.ts │ │ │ │ │ │ │ └── old-autocomplete-service.ts │ │ │ │ │ │ ├── db/ │ │ │ │ │ │ │ └── db-service.ts │ │ │ │ │ │ ├── permissions/ │ │ │ │ │ │ │ └── permissions-service.ts │ │ │ │ │ │ ├── runner-event.ts │ │ │ │ │ │ ├── runner-events.ts │ │ │ │ │ │ ├── runner-query.ts │ │ │ │ │ │ ├── runner-service.ts │ │ │ │ │ │ ├── runner-socket.ts │ │ │ │ │ │ ├── runner-state.ts │ │ │ │ │ │ ├── syntax-valdator/ │ │ │ │ │ │ │ └── syntax-validator-service.ts │ │ │ │ │ │ └── workers/ │ │ │ │ │ │ ├── python-parser-worker.ts │ │ │ │ │ │ └── sql-parser-worker.ts │ │ │ │ │ └── typings/ │ │ │ │ │ ├── angular-promise.d.ts │ │ │ │ │ ├── runner-types.ts │ │ │ │ │ └── types.d.ts │ │ │ │ ├── sql-autocomplete/ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ ├── sql-autocomplete-adapter-utills.ts │ │ │ │ │ │ ├── sql-autocomplete-adapter.ts │ │ │ │ │ │ ├── tests/ │ │ │ │ │ │ │ ├── get-completion-tests/ │ │ │ │ │ │ │ │ ├── expected-results.ts │ │ │ │ │ │ │ │ ├── get-completion-Items.spec.ts │ │ │ │ │ │ │ │ └── test-inputs/ │ │ │ │ │ │ │ │ ├── input-query-context.ts │ │ │ │ │ │ │ │ └── input-table.ts │ │ │ │ │ │ │ └── test-utils/ │ │ │ │ │ │ │ ├── mock-db-config.ts │ │ │ │ │ │ │ ├── test-getCompletionItemsFromQueryContext.spec.ts │ │ │ │ │ │ │ └── tests-utils.ts │ │ │ │ │ │ ├── trinoToJs.spec.ts │ │ │ │ │ │ ├── trinoToJs.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── db-info/ │ │ │ │ │ │ ├── db-info-service.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── languge/ │ │ │ │ │ │ └── reserved-words.ts │ │ │ │ │ └── sql-context-evaluator/ │ │ │ │ │ ├── context-evaluator.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── position-evaluator.ts │ │ │ │ │ ├── presto-context-listener.ts │ │ │ │ │ ├── tests/ │ │ │ │ │ │ ├── queries-spec/ │ │ │ │ │ │ │ ├── basic-queries.spec.ts │ │ │ │ │ │ │ ├── join-queries.spec.ts │ │ │ │ │ │ │ ├── nested-queries.spec.ts │ │ │ │ │ │ │ ├── union-queries.spec.ts │ │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ │ └── with-queries.spec.ts │ │ │ │ │ │ └── result-options/ │ │ │ │ │ │ ├── basic-results.ts │ │ │ │ │ │ ├── nested-results.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── with-results.ts │ │ │ │ │ ├── tree-analyzer.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── with-clause-analyzer.ts │ │ │ │ ├── sql-formatter/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── Formatter.ts │ │ │ │ │ │ ├── Indentation.ts │ │ │ │ │ │ ├── InlineBlock.ts │ │ │ │ │ │ ├── Params.ts │ │ │ │ │ │ ├── Tokenizer.ts │ │ │ │ │ │ └── tokenTypes.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── languages/ │ │ │ │ │ │ ├── SqlWithQuixVarFormmater.ts │ │ │ │ │ │ └── StandardSqlFormatter.ts │ │ │ │ │ └── sqlFormatter.ts │ │ │ │ ├── store/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── services/ │ │ │ │ │ ├── store-cache.ts │ │ │ │ │ ├── store-logger.ts │ │ │ │ │ └── store.ts │ │ │ │ ├── ui/ │ │ │ │ │ ├── app.scss │ │ │ │ │ ├── assets/ │ │ │ │ │ │ └── css/ │ │ │ │ │ │ ├── action.scss │ │ │ │ │ │ ├── alert.scss │ │ │ │ │ │ ├── align.scss │ │ │ │ │ │ ├── animations.scss │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── app-header.scss │ │ │ │ │ │ │ └── app-menu.scss │ │ │ │ │ │ ├── badge.scss │ │ │ │ │ │ ├── border.scss │ │ │ │ │ │ ├── button.scss │ │ │ │ │ │ ├── caret.scss │ │ │ │ │ │ ├── colors.scss │ │ │ │ │ │ ├── def/ │ │ │ │ │ │ │ ├── action.def.scss │ │ │ │ │ │ │ ├── alert.def.scss │ │ │ │ │ │ │ ├── align.def.scss │ │ │ │ │ │ │ ├── animations.def.scss │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── app-header.def.scss │ │ │ │ │ │ │ │ └── app-menu.def.scss │ │ │ │ │ │ │ ├── badge.def.scss │ │ │ │ │ │ │ ├── border.def.scss │ │ │ │ │ │ │ ├── button.def.scss │ │ │ │ │ │ │ ├── caret.def.scss │ │ │ │ │ │ │ ├── colors.def.scss │ │ │ │ │ │ │ ├── content.def.scss │ │ │ │ │ │ │ ├── defaults.def.scss │ │ │ │ │ │ │ ├── dropdown.def.scss │ │ │ │ │ │ │ ├── empty-state.def.scss │ │ │ │ │ │ │ ├── flex.def.scss │ │ │ │ │ │ │ ├── header.def.scss │ │ │ │ │ │ │ ├── heading.def.scss │ │ │ │ │ │ │ ├── hint.def.scss │ │ │ │ │ │ │ ├── icon.def.scss │ │ │ │ │ │ │ ├── input.def.scss │ │ │ │ │ │ │ ├── label.def.scss │ │ │ │ │ │ │ ├── link.def.scss │ │ │ │ │ │ │ ├── media.def.scss │ │ │ │ │ │ │ ├── morph.def.scss │ │ │ │ │ │ │ ├── nav-tabs.def.scss │ │ │ │ │ │ │ ├── panel.def.scss │ │ │ │ │ │ │ ├── section.def.scss │ │ │ │ │ │ │ ├── space.def.scss │ │ │ │ │ │ │ ├── spinner.def.scss │ │ │ │ │ │ │ ├── state.def.scss │ │ │ │ │ │ │ ├── table.def.scss │ │ │ │ │ │ │ ├── tag.def.scss │ │ │ │ │ │ │ ├── theme.def.scss │ │ │ │ │ │ │ ├── toggle.def.scss │ │ │ │ │ │ │ └── trim.def.scss │ │ │ │ │ │ ├── dialog.scss │ │ │ │ │ │ ├── dropdown.scss │ │ │ │ │ │ ├── empty-state.scss │ │ │ │ │ │ ├── flex.scss │ │ │ │ │ │ ├── fonts.scss │ │ │ │ │ │ ├── form.scss │ │ │ │ │ │ ├── heading.scss │ │ │ │ │ │ ├── hint.scss │ │ │ │ │ │ ├── home-action.scss │ │ │ │ │ │ ├── hover.scss │ │ │ │ │ │ ├── icon.scss │ │ │ │ │ │ ├── input.scss │ │ │ │ │ │ ├── label.scss │ │ │ │ │ │ ├── link.scss │ │ │ │ │ │ ├── media.scss │ │ │ │ │ │ ├── mouse.scss │ │ │ │ │ │ ├── nav-tabs.scss │ │ │ │ │ │ ├── no-select.scss │ │ │ │ │ │ ├── panel.scss │ │ │ │ │ │ ├── reset.scss │ │ │ │ │ │ ├── scroll.scss │ │ │ │ │ │ ├── section.scss │ │ │ │ │ │ ├── space.scss │ │ │ │ │ │ ├── spinner.scss │ │ │ │ │ │ ├── state.scss │ │ │ │ │ │ ├── table.scss │ │ │ │ │ │ ├── tag.scss │ │ │ │ │ │ ├── text.scss │ │ │ │ │ │ ├── theme.scss │ │ │ │ │ │ ├── toggle.scss │ │ │ │ │ │ └── wrap.scss │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Highlighter.tsx │ │ │ │ │ │ ├── autocomplete/ │ │ │ │ │ │ │ ├── Autocomplete.tsx │ │ │ │ │ │ │ └── autocomplete.hook.ts │ │ │ │ │ │ ├── date-picker/ │ │ │ │ │ │ │ ├── DatePicker.tsx │ │ │ │ │ │ │ ├── date-picker-utils.ts │ │ │ │ │ │ │ └── date-picker.hook.ts │ │ │ │ │ │ ├── dropdown/ │ │ │ │ │ │ │ ├── Dropdown.tsx │ │ │ │ │ │ │ └── dropdown.scss │ │ │ │ │ │ ├── hoc/ │ │ │ │ │ │ │ └── makePagination.tsx │ │ │ │ │ │ ├── input/ │ │ │ │ │ │ │ ├── Input.tsx │ │ │ │ │ │ │ └── input.scss │ │ │ │ │ │ ├── panel/ │ │ │ │ │ │ │ └── Panel.tsx │ │ │ │ │ │ ├── states/ │ │ │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ │ │ ├── ErrorState.tsx │ │ │ │ │ │ │ ├── FilterInitialState.tsx │ │ │ │ │ │ │ ├── InitialState.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── table/ │ │ │ │ │ │ ├── Table.scss │ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ │ ├── TableRow.tsx │ │ │ │ │ │ └── table-testkit.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── breadcrumbs/ │ │ │ │ │ │ │ ├── breadcrumbs.html │ │ │ │ │ │ │ ├── breadcrumbs.scss │ │ │ │ │ │ │ ├── breadcrumbs.story.ts │ │ │ │ │ │ │ └── breadcrumbs.ts │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ └── dropdown-list.ts │ │ │ │ │ │ ├── content-editable/ │ │ │ │ │ │ │ ├── content-editable.scss │ │ │ │ │ │ │ └── content-editable.ts │ │ │ │ │ │ ├── copy-to-clipboard/ │ │ │ │ │ │ │ ├── copy-to-clipboard.html │ │ │ │ │ │ │ ├── copy-to-clipboard.scss │ │ │ │ │ │ │ ├── copy-to-clipboard.story.ts │ │ │ │ │ │ │ └── copy-to-clipboard.ts │ │ │ │ │ │ ├── date-picker/ │ │ │ │ │ │ │ ├── date-picker.scss │ │ │ │ │ │ │ ├── date-picker.story.ts │ │ │ │ │ │ │ └── date-picker.ts │ │ │ │ │ │ ├── draggable/ │ │ │ │ │ │ │ ├── draggable.story.ts │ │ │ │ │ │ │ └── draggable.ts │ │ │ │ │ │ ├── dropdown/ │ │ │ │ │ │ │ ├── dropdown.html │ │ │ │ │ │ │ ├── dropdown.scss │ │ │ │ │ │ │ ├── dropdown.story.ts │ │ │ │ │ │ │ └── dropdown.ts │ │ │ │ │ │ ├── droppable/ │ │ │ │ │ │ │ ├── droppable.story.ts │ │ │ │ │ │ │ └── droppable.ts │ │ │ │ │ │ ├── dual-action/ │ │ │ │ │ │ │ ├── dual-action.html │ │ │ │ │ │ │ ├── dual-action.scss │ │ │ │ │ │ │ └── dual-action.ts │ │ │ │ │ │ ├── editable/ │ │ │ │ │ │ │ ├── editable.html │ │ │ │ │ │ │ ├── editable.scss │ │ │ │ │ │ │ ├── editable.story.ts │ │ │ │ │ │ │ └── editable.ts │ │ │ │ │ │ ├── filter/ │ │ │ │ │ │ │ ├── filter-items.ts │ │ │ │ │ │ │ ├── filter-term.ts │ │ │ │ │ │ │ ├── filter.story.ts │ │ │ │ │ │ │ ├── filter.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── focus/ │ │ │ │ │ │ │ ├── focus-if.ts │ │ │ │ │ │ │ ├── focus.story.ts │ │ │ │ │ │ │ ├── focus.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── foldable/ │ │ │ │ │ │ │ ├── foldable.html │ │ │ │ │ │ │ ├── foldable.scss │ │ │ │ │ │ │ ├── foldable.story.ts │ │ │ │ │ │ │ └── foldable.ts │ │ │ │ │ │ ├── html/ │ │ │ │ │ │ │ └── html.ts │ │ │ │ │ │ ├── icon-badge/ │ │ │ │ │ │ │ ├── icon-badge.html │ │ │ │ │ │ │ ├── icon-badge.scss │ │ │ │ │ │ │ └── icon-badge.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── infinite-scroll/ │ │ │ │ │ │ │ └── infinite-scroll.ts │ │ │ │ │ │ ├── info/ │ │ │ │ │ │ │ ├── info.html │ │ │ │ │ │ │ ├── info.scss │ │ │ │ │ │ │ └── info.ts │ │ │ │ │ │ ├── key-nav/ │ │ │ │ │ │ │ └── key-nav.ts │ │ │ │ │ │ ├── maximizable/ │ │ │ │ │ │ │ ├── maximizable.scss │ │ │ │ │ │ │ ├── maximizable.story.ts │ │ │ │ │ │ │ └── maximizable.ts │ │ │ │ │ │ ├── on-image-load/ │ │ │ │ │ │ │ └── on-image-load.ts │ │ │ │ │ │ ├── progress-gauge/ │ │ │ │ │ │ │ ├── progress-gauge.html │ │ │ │ │ │ │ ├── progress-gauge.scss │ │ │ │ │ │ │ ├── progress-gauge.story.ts │ │ │ │ │ │ │ └── progress-gauge.ts │ │ │ │ │ │ ├── progress-line/ │ │ │ │ │ │ │ ├── progress-line.html │ │ │ │ │ │ │ ├── progress-line.scss │ │ │ │ │ │ │ └── progress-line.ts │ │ │ │ │ │ ├── resizable/ │ │ │ │ │ │ │ └── resizable.ts │ │ │ │ │ │ ├── scroll/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── scroll-to.ts │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ ├── search.html │ │ │ │ │ │ │ ├── search.scss │ │ │ │ │ │ │ ├── search.story.ts │ │ │ │ │ │ │ └── search.ts │ │ │ │ │ │ ├── simple-select/ │ │ │ │ │ │ │ ├── simple-select.html │ │ │ │ │ │ │ ├── simple-select.scss │ │ │ │ │ │ │ ├── simple-select.story.ts │ │ │ │ │ │ │ └── simple-select.ts │ │ │ │ │ │ ├── state-loader/ │ │ │ │ │ │ │ ├── state-loader.scss │ │ │ │ │ │ │ └── state-loader.ts │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ │ ├── table-header.html │ │ │ │ │ │ │ │ ├── table-header.scss │ │ │ │ │ │ │ │ └── table-header.ts │ │ │ │ │ │ │ ├── row/ │ │ │ │ │ │ │ │ └── table-row.ts │ │ │ │ │ │ │ ├── table.html │ │ │ │ │ │ │ ├── table.scss │ │ │ │ │ │ │ ├── table.story.ts │ │ │ │ │ │ │ └── table.ts │ │ │ │ │ │ ├── tabs/ │ │ │ │ │ │ │ ├── tabs-router.html │ │ │ │ │ │ │ ├── tabs-router.ts │ │ │ │ │ │ │ ├── tabs.html │ │ │ │ │ │ │ ├── tabs.scss │ │ │ │ │ │ │ ├── tabs.story.ts │ │ │ │ │ │ │ └── tabs.ts │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ ├── tags.html │ │ │ │ │ │ │ ├── tags.scss │ │ │ │ │ │ │ ├── tags.story.ts │ │ │ │ │ │ │ └── tags.ts │ │ │ │ │ │ └── tooltip/ │ │ │ │ │ │ ├── tooltip.html │ │ │ │ │ │ ├── tooltip.scss │ │ │ │ │ │ ├── tooltip.story.ts │ │ │ │ │ │ └── tooltip.ts │ │ │ │ │ ├── filters/ │ │ │ │ │ │ ├── absolute-date.ts │ │ │ │ │ │ ├── date-utc.ts │ │ │ │ │ │ ├── date.ts │ │ │ │ │ │ ├── highlight.story.ts │ │ │ │ │ │ ├── highlight.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── relative-date.ts │ │ │ │ │ │ └── to-human-case.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── confirm.story.ts │ │ │ │ │ │ ├── confirm.ts │ │ │ │ │ │ ├── date.ts │ │ │ │ │ │ ├── dialog-testkit.ts │ │ │ │ │ │ ├── dialog.story.ts │ │ │ │ │ │ ├── dialog.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── toast.scss │ │ │ │ │ │ ├── toast.story.ts │ │ │ │ │ │ └── toast.ts │ │ │ │ │ ├── stories/ │ │ │ │ │ │ ├── action.story.ts │ │ │ │ │ │ ├── alert.story.ts │ │ │ │ │ │ ├── align.story.ts │ │ │ │ │ │ ├── badge.story.ts │ │ │ │ │ │ ├── border.story.ts │ │ │ │ │ │ ├── button.story.ts │ │ │ │ │ │ ├── colors.story.ts │ │ │ │ │ │ ├── empty-state.story.ts │ │ │ │ │ │ ├── flex.story.ts │ │ │ │ │ │ ├── form.story.ts │ │ │ │ │ │ ├── hint.story.ts │ │ │ │ │ │ ├── home-action.story.ts │ │ │ │ │ │ ├── input.story.ts │ │ │ │ │ │ ├── label.story.ts │ │ │ │ │ │ ├── media.story.ts │ │ │ │ │ │ ├── scroll.story.ts │ │ │ │ │ │ ├── space.story.ts │ │ │ │ │ │ ├── spinner.story.ts │ │ │ │ │ │ ├── tag.story.ts │ │ │ │ │ │ └── text.story.ts │ │ │ │ │ └── typings/ │ │ │ │ │ ├── globals.d.ts │ │ │ │ │ ├── turnerjs.d.ts │ │ │ │ │ └── types.d.ts │ │ │ │ ├── viz/ │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── directives/ │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── chart-renderer.ts │ │ │ │ │ │ │ ├── chart.html │ │ │ │ │ │ │ ├── chart.scss │ │ │ │ │ │ │ ├── chart.ts │ │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ │ ├── chart-filter.html │ │ │ │ │ │ │ ├── chart-filter.scss │ │ │ │ │ │ │ └── chart-filter.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── picker/ │ │ │ │ │ │ │ ├── picker.html │ │ │ │ │ │ │ ├── picker.scss │ │ │ │ │ │ │ └── picker.ts │ │ │ │ │ │ ├── pie/ │ │ │ │ │ │ │ ├── filter/ │ │ │ │ │ │ │ │ ├── pie-filter.html │ │ │ │ │ │ │ │ ├── pie-filter.scss │ │ │ │ │ │ │ │ └── pie-filter.ts │ │ │ │ │ │ │ ├── pie-renderer.ts │ │ │ │ │ │ │ ├── pie.html │ │ │ │ │ │ │ ├── pie.scss │ │ │ │ │ │ │ └── pie.ts │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ ├── table-renderer.ts │ │ │ │ │ │ │ ├── table.html │ │ │ │ │ │ │ ├── table.scss │ │ │ │ │ │ │ └── table.ts │ │ │ │ │ │ ├── viz.html │ │ │ │ │ │ ├── viz.scss │ │ │ │ │ │ └── viz.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── chart-conf.ts │ │ │ │ │ │ │ ├── chart-data-service.ts │ │ │ │ │ │ │ ├── chart-filter-service.ts │ │ │ │ │ │ │ ├── chart-utils.ts │ │ │ │ │ │ │ └── chart-viz-service.ts │ │ │ │ │ │ ├── viz-conf.ts │ │ │ │ │ │ ├── viz-data-service.ts │ │ │ │ │ │ ├── viz-filter-service.ts │ │ │ │ │ │ └── viz-service.ts │ │ │ │ │ ├── transducers/ │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── chart-input-filter-transducer.ts │ │ │ │ │ │ │ ├── chart-meta-transducer.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parse-dates-transducer.ts │ │ │ │ │ │ ├── parse-floats-transducer.ts │ │ │ │ │ │ ├── sort-transducer.ts │ │ │ │ │ │ └── ungroup-transducer.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── web-worker-infra/ │ │ │ │ ├── types.ts │ │ │ │ ├── web-worker/ │ │ │ │ │ └── index.ts │ │ │ │ └── web-worker-manager/ │ │ │ │ └── index.ts │ │ │ ├── plugins/ │ │ │ │ ├── db/ │ │ │ │ │ ├── athena-db-plugin.ts │ │ │ │ │ ├── bigquery-db-plugin.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jdbc-db-plugin.ts │ │ │ │ │ └── presto-db-plugin.ts │ │ │ │ ├── index.ts │ │ │ │ ├── note/ │ │ │ │ │ ├── athena-note-plugin.ts │ │ │ │ │ ├── bigquery-note-plugin.ts │ │ │ │ │ ├── default-note-plugin.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jdbc-note-plugin.ts │ │ │ │ │ ├── presto-note-plugin.ts │ │ │ │ │ └── python-note-plugin.ts │ │ │ │ └── plugin-factory.ts │ │ │ ├── react-components/ │ │ │ │ ├── file-explorer/ │ │ │ │ │ ├── FileExplorerComponent.scss │ │ │ │ │ ├── FileExplorerComponent.tsx │ │ │ │ │ ├── TreeItem.tsx │ │ │ │ │ ├── TreeItemMenu.tsx │ │ │ │ │ ├── file-explorer-testkit.ts │ │ │ │ │ └── file-explorer.ts │ │ │ │ └── index.ts │ │ │ ├── services/ │ │ │ │ ├── db.ts │ │ │ │ ├── dialog.ts │ │ │ │ ├── files.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── use-view-state.ts │ │ │ │ │ └── with-outside-click.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notebook.ts │ │ │ │ ├── notifications.ts │ │ │ │ ├── permissions.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── plugin-manager.ts │ │ │ │ │ └── plugin-types.ts │ │ │ │ ├── popup.ts │ │ │ │ ├── resources.ts │ │ │ │ ├── runners.ts │ │ │ │ ├── scope.ts │ │ │ │ ├── search.ts │ │ │ │ ├── state.ts │ │ │ │ └── subscription.ts │ │ │ ├── state-components/ │ │ │ │ ├── base/ │ │ │ │ │ ├── base.html │ │ │ │ │ └── base.ts │ │ │ │ ├── embed/ │ │ │ │ │ ├── embed.ts │ │ │ │ │ └── note/ │ │ │ │ │ ├── embed-note-events.ts │ │ │ │ │ ├── embed-note-reactions.ts │ │ │ │ │ ├── embed-note-scope.ts │ │ │ │ │ ├── embed-note-url.ts │ │ │ │ │ ├── embed-note-vm.ts │ │ │ │ │ ├── embed-note.html │ │ │ │ │ ├── embed-note.scss │ │ │ │ │ └── embed-note.ts │ │ │ │ ├── favorites/ │ │ │ │ │ ├── FavoritesComponent.tsx │ │ │ │ │ ├── favorites-events.ts │ │ │ │ │ ├── favorites-table-fields.tsx │ │ │ │ │ ├── favorites-testkit.ts │ │ │ │ │ ├── favorites.scss │ │ │ │ │ └── favorites.ts │ │ │ │ ├── files/ │ │ │ │ │ ├── files-events.ts │ │ │ │ │ ├── files-reactions.ts │ │ │ │ │ ├── files-scope.ts │ │ │ │ │ ├── files-table-fields.ts │ │ │ │ │ ├── files-testkit.ts │ │ │ │ │ ├── files-types.ts │ │ │ │ │ ├── files-url.ts │ │ │ │ │ ├── files-vm.ts │ │ │ │ │ ├── files.html │ │ │ │ │ ├── files.scss │ │ │ │ │ └── files.ts │ │ │ │ ├── history/ │ │ │ │ │ ├── HistoryComponent.scss │ │ │ │ │ ├── HistoryComponent.tsx │ │ │ │ │ ├── history-events.ts │ │ │ │ │ ├── history-table-fields.tsx │ │ │ │ │ ├── history-testkit.ts │ │ │ │ │ └── history.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── HomeComponent.tsx │ │ │ │ │ ├── home-testkit.ts │ │ │ │ │ ├── home.scss │ │ │ │ │ └── home.ts │ │ │ │ ├── import/ │ │ │ │ │ ├── import.html │ │ │ │ │ └── import.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notebook/ │ │ │ │ │ ├── notebook-events.ts │ │ │ │ │ ├── notebook-reactions.ts │ │ │ │ │ ├── notebook-scope.ts │ │ │ │ │ ├── notebook-testkit.ts │ │ │ │ │ ├── notebook-types.ts │ │ │ │ │ ├── notebook-url.ts │ │ │ │ │ ├── notebook-vm.ts │ │ │ │ │ ├── notebook.html │ │ │ │ │ ├── notebook.scss │ │ │ │ │ └── notebook.ts │ │ │ │ ├── trash-bin/ │ │ │ │ │ ├── TrashBinComponent.tsx │ │ │ │ │ ├── trash-bin-events.ts │ │ │ │ │ ├── trash-bin-table-fields.tsx │ │ │ │ │ └── trash-bin.ts │ │ │ │ └── users/ │ │ │ │ ├── UsersComponent.tsx │ │ │ │ ├── users-events.ts │ │ │ │ ├── users-table-fields.tsx │ │ │ │ ├── users-testkit.ts │ │ │ │ ├── users.scss │ │ │ │ └── users.ts │ │ │ ├── store/ │ │ │ │ ├── app/ │ │ │ │ │ ├── app-actions.ts │ │ │ │ │ └── app-branch.ts │ │ │ │ ├── db/ │ │ │ │ │ ├── db-actions.ts │ │ │ │ │ ├── db-branch.ts │ │ │ │ │ └── db-cache.ts │ │ │ │ ├── deleted-notebook/ │ │ │ │ │ ├── deleted-notebook-actions.ts │ │ │ │ │ ├── deleted-notebook-branch.ts │ │ │ │ │ └── deleted-notebook-cache.ts │ │ │ │ ├── favorites/ │ │ │ │ │ ├── favorites-actions.ts │ │ │ │ │ ├── favorites-branch.ts │ │ │ │ │ └── favorites-cache.ts │ │ │ │ ├── files/ │ │ │ │ │ ├── files-actions.ts │ │ │ │ │ ├── files-branch.ts │ │ │ │ │ └── files-cache.ts │ │ │ │ ├── folder/ │ │ │ │ │ ├── folder-actions.ts │ │ │ │ │ ├── folder-branch.ts │ │ │ │ │ └── folder-cache.ts │ │ │ │ ├── history/ │ │ │ │ │ ├── history-actions.ts │ │ │ │ │ ├── history-branch.ts │ │ │ │ │ └── history-cache.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notebook/ │ │ │ │ │ ├── notebook-actions.ts │ │ │ │ │ ├── notebook-branch.ts │ │ │ │ │ └── notebook-cache.ts │ │ │ │ └── users/ │ │ │ │ ├── users-actions.ts │ │ │ │ ├── users-branch.ts │ │ │ │ └── users-cache.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── dev/ │ │ │ │ ├── localhost.crt │ │ │ │ ├── localhost.key │ │ │ │ ├── server.ts │ │ │ │ ├── vm.ts │ │ │ │ └── websocket-mock.ts │ │ │ ├── e2e/ │ │ │ │ ├── dbExplorer.e2e.ts │ │ │ │ ├── driver.ts │ │ │ │ ├── e2e-common.ts │ │ │ │ ├── favorites.e2e.ts │ │ │ │ ├── files.e2e.ts │ │ │ │ ├── history.e2e.ts │ │ │ │ ├── home.e2e.ts │ │ │ │ ├── notebook.e2e.ts │ │ │ │ └── users.e2e.ts │ │ │ ├── mocha-setup.ts │ │ │ ├── mocks.ts │ │ │ └── test-common.ts │ │ ├── tsconfig.json │ │ ├── tslint.json │ │ ├── velocity.data.json │ │ ├── velocity.private.data.json │ │ └── wallaby.js │ ├── lerna.json │ ├── npm-deploy.sh │ ├── package.json │ ├── service/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .nvmrc │ │ ├── .prettierrc │ │ ├── .quixroot │ │ ├── .testenv │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── ecosystem.config.js │ │ ├── index.js │ │ ├── nest-cli.json │ │ ├── nodemon-debug.json │ │ ├── nodemon.json │ │ ├── ormconfig.json │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── create_migrations.sh │ │ │ ├── helpers/ │ │ │ │ └── copy-statics.ts │ │ │ ├── ormconfig.json.template │ │ │ ├── run_migrations.sh │ │ │ ├── start.ts │ │ │ └── update-statics.ts │ │ ├── src/ │ │ │ ├── app.controller.spec.ts │ │ │ ├── app.controller.ts │ │ │ ├── app.module.ts │ │ │ ├── base.module.ts │ │ │ ├── common/ │ │ │ │ ├── demo-mode-interceptor.ts │ │ │ │ ├── entity-type.enum.ts │ │ │ │ └── user-sanitizer.ts │ │ │ ├── config/ │ │ │ │ ├── config.module.ts │ │ │ │ ├── config.service.ts │ │ │ │ ├── db-conf.ts │ │ │ │ ├── db-connection.ts │ │ │ │ ├── env/ │ │ │ │ │ ├── computed-settings.ts │ │ │ │ │ ├── engine-settings.ts │ │ │ │ │ ├── env.spec.ts │ │ │ │ │ ├── env.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── static-settings.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── consts.ts │ │ │ ├── entities/ │ │ │ │ ├── deleted-notebook/ │ │ │ │ │ ├── dbdeleted-notebook.entity.ts │ │ │ │ │ └── deleted-notebook.repository.ts │ │ │ │ ├── favorites/ │ │ │ │ │ └── favorites.entity.ts │ │ │ │ ├── filenode/ │ │ │ │ │ ├── filenode.entity.ts │ │ │ │ │ └── filenode.repository.ts │ │ │ │ ├── folder/ │ │ │ │ │ └── folder.entity.ts │ │ │ │ ├── index.ts │ │ │ │ ├── note/ │ │ │ │ │ ├── dbnote.entity.ts │ │ │ │ │ └── note.repository.ts │ │ │ │ ├── notebook/ │ │ │ │ │ ├── dbnotebook.entity.ts │ │ │ │ │ └── notebook.repository.ts │ │ │ │ ├── user/ │ │ │ │ │ └── user.entity.ts │ │ │ │ ├── utils.ts │ │ │ │ └── version-metadata.entity.ts │ │ │ ├── errors/ │ │ │ │ ├── exceptions.ts │ │ │ │ └── index.ts │ │ │ ├── main.ts │ │ │ ├── migrations/ │ │ │ │ ├── 1558528771647-v1.ts │ │ │ │ ├── 1558528771648-v1-metadata.ts │ │ │ │ ├── 1562174176877-v2.ts │ │ │ │ ├── 1614173960671-v3.ts │ │ │ │ ├── 1614712161318-v4.ts │ │ │ │ └── 1634023683491-v5.ts │ │ │ ├── modules/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── auth.controller.ts │ │ │ │ │ ├── auth.module.ts │ │ │ │ │ ├── common-auth.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── user-decorator.ts │ │ │ │ │ └── users.service.ts │ │ │ │ ├── event-sourcing/ │ │ │ │ │ ├── base-action-validation.ts │ │ │ │ │ ├── event-sourcing.module.ts │ │ │ │ │ ├── events.service.ts │ │ │ │ │ ├── infrastructure/ │ │ │ │ │ │ ├── action-store/ │ │ │ │ │ │ │ ├── action-store.spec.ts │ │ │ │ │ │ │ ├── action-store.ts │ │ │ │ │ │ │ ├── entities/ │ │ │ │ │ │ │ │ └── db-action.entity.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── event-bus/ │ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ │ ├── event-bus-builder.ts │ │ │ │ │ │ │ ├── event-bus.drawio │ │ │ │ │ │ │ ├── event-bus.spec.ts │ │ │ │ │ │ │ ├── event-bus.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── deleted-notebook-plugin.ts │ │ │ │ │ │ ├── events-plugin.ts │ │ │ │ │ │ ├── favorites-plugin.ts │ │ │ │ │ │ ├── file-tree-plugin.ts │ │ │ │ │ │ ├── note-plugin.ts │ │ │ │ │ │ ├── notebook-plugin.ts │ │ │ │ │ │ ├── trash-bin-plugin.ts │ │ │ │ │ │ ├── user-plugin.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── quix-event-bus.driver.ts │ │ │ │ │ ├── quix-event-bus.spec.ts │ │ │ │ │ ├── quix-event-bus.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── logger/ │ │ │ │ │ ├── logger.module.ts │ │ │ │ │ └── logger.service.ts │ │ │ │ ├── proxy-backend/ │ │ │ │ │ └── proxy-backend.module.ts │ │ │ │ ├── search/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parser.spec.ts │ │ │ │ │ ├── parser.ts │ │ │ │ │ ├── search.module.ts │ │ │ │ │ ├── search.spec.ts │ │ │ │ │ ├── search.ts │ │ │ │ │ └── types.ts │ │ │ │ └── web-api/ │ │ │ │ ├── autocomplete/ │ │ │ │ │ ├── autocomplete.controller.ts │ │ │ │ │ └── autocomplete.service.ts │ │ │ │ ├── deleted-notebooks/ │ │ │ │ │ ├── deleted-notebook.controller.ts │ │ │ │ │ └── deleted-notebook.service.ts │ │ │ │ ├── events.controller.ts │ │ │ │ ├── events.gateway.ts │ │ │ │ ├── favorites/ │ │ │ │ │ ├── favorites.controller.ts │ │ │ │ │ └── favorites.service.ts │ │ │ │ ├── folders/ │ │ │ │ │ ├── folders.controller.ts │ │ │ │ │ ├── folders.service.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── notebooks/ │ │ │ │ │ ├── notebooks.controller.ts │ │ │ │ │ └── notebooks.service.ts │ │ │ │ ├── search.controller.ts │ │ │ │ ├── user-list.controller.ts │ │ │ │ ├── web-api.driver.ts │ │ │ │ ├── web-api.module.ts │ │ │ │ └── web-api.spec.ts │ │ │ ├── template-engine/ │ │ │ │ └── velocity.ts │ │ │ ├── types/ │ │ │ │ ├── 3rd-party/ │ │ │ │ │ ├── uuid.d.ts │ │ │ │ │ └── velocity.d.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── create-schema-helpers.ts │ │ │ ├── deferred-promise.ts │ │ │ └── retry-promise.ts │ │ ├── test/ │ │ │ ├── app.e2e-spec.ts │ │ │ ├── builder.ts │ │ │ ├── custom-matchers.ts │ │ │ ├── driver.ts │ │ │ └── jest-e2e.js │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── tslint.json │ └── shared/ │ ├── .gitignore │ ├── config-helper/ │ │ ├── config-helper.ts │ │ └── consts.ts │ ├── entities/ │ │ ├── common/ │ │ │ ├── actions.ts │ │ │ ├── common-types.ts │ │ │ ├── create-reducer.spec.ts │ │ │ └── create-reducer.ts │ │ ├── deleted-notebook/ │ │ │ ├── actions.ts │ │ │ ├── deleted-notebook.ts │ │ │ ├── index.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── file/ │ │ │ ├── actions.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── folder/ │ │ │ ├── folder.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── history/ │ │ │ ├── actions.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── note/ │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ ├── note.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── notebook/ │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ ├── notebook.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── trash-bin/ │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ └── user/ │ │ ├── actions.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── user.ts │ ├── index.ts │ ├── package.json │ ├── tsconfig.json │ ├── types/ │ │ └── search-types.ts │ └── utils/ │ └── utils.ts └── terraform/ ├── README.md ├── acme_certificate.tf ├── aws-tf-backend.tf ├── ecs.tf ├── iam.tf ├── initialize.tf ├── lb.tf ├── outputs.tf ├── parameter_store.tf ├── provider.tf ├── rds.tf ├── route_53.tf ├── security_groups.tf ├── variables.tf ├── versions.tf └── vpc.tf