diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c84a85826..88e54007a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,7 +55,6 @@ little bit helps, and credit will always be given. - [Merging DB migrations](#merging-db-migrations) - [SQL Lab Async](#sql-lab-async) - ## Orientation Here's a list of repositories that contain Superset-related packages: @@ -82,7 +81,6 @@ Here's a list of repositories that contain Superset-related packages: Github organization under which we manage Superset-related small tools, forks and Superset-related experimental ideas. - ## Types of Contributions ### Report Bug @@ -203,16 +201,16 @@ Triaging goals First, add **Category labels (a.k.a. hash labels)**. Every issue/PR must have one hash label (except spam entry). Labels that begin with `#` defines issue/PR type: -| Label | for Issue | for PR | -|-------------------|-----------|--------| -| `#bug` | Bug report | Bug fix | -| `#code-quality` | Describe problem with code, architecture or productivity | Refactor, tests, tooling | -| `#feature` | New feature request | New feature implementation | -| `#refine` | Propose improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. | Implementation of improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. | -| `#doc` | Documentation | Documentation | -| `#question` | Troubleshooting: Installation, Running locally, Ask how to do something. Can be changed to `#bug` later. | N/A | -| `#SIP` | Superset Improvement Proposal | N/A | -| `#ASF` | Tasks related to Apache Software Foundation policy | Tasks related to Apache Software Foundation policy | +| Label | for Issue | for PR | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `#bug` | Bug report | Bug fix | +| `#code-quality` | Describe problem with code, architecture or productivity | Refactor, tests, tooling | +| `#feature` | New feature request | New feature implementation | +| `#refine` | Propose improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. | Implementation of improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. | +| `#doc` | Documentation | Documentation | +| `#question` | Troubleshooting: Installation, Running locally, Ask how to do something. Can be changed to `#bug` later. | N/A | +| `#SIP` | Superset Improvement Proposal | N/A | +| `#ASF` | Tasks related to Apache Software Foundation policy | Tasks related to Apache Software Foundation policy | Then add other types of labels as appropriate. @@ -370,8 +368,8 @@ superset load_examples FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger ``` -**Note: the FLASK_APP env var should not need to be set, as it's currently controlled -via `.flaskenv`, however if needed, it should be set to `superset.app:create_app()`** +**Note: the FLASK_APP env var should not need to be set, as it's currently controlled +via `.flaskenv`, however if needed, it should be set to `superset.app:create_app()`** If you have made changes to the FAB-managed templates, which are not built the same way as the newer, React-powered front-end assets, you need to start the app without the `--with-threads` argument like so: `FLASK_ENV=development superset run -p 8088 --reload --debugger` @@ -472,12 +470,15 @@ best practices. #### Feature flags Superset supports a server-wide feature flag system, which eases the incremental development of features. To add a new feature flag, simply modify `superset_config.py` with something like the following: + ``` FEATURE_FLAGS = { 'SCOPED_FILTER': True, } ``` + If you want to use the same flag in the client code, also add it to the FeatureFlag TypeScript enum in `superset/assets/src/featureFlags.ts`. For example, + ``` export enum FeatureFlag { SCOPED_FILTER = 'SCOPED_FILTER', @@ -514,7 +515,6 @@ npm run lint The Python code is auto-formatted using [Black](https://github.com/python/black) which is configured as a pre-commit hook. There are also numerous [editor integrations](https://black.readthedocs.io/en/stable/editor_integration.html). - ## Conventions ### Python @@ -577,7 +577,6 @@ Note per [PEP-484](https://www.python.org/dev/peps/pep-0484/#exceptions) no syntax for listing explicitly raised exceptions is proposed and thus the recommendation is to put this information in a docstring, i.e., - ```python import math from typing import Union @@ -595,7 +594,6 @@ def sqrt(x: Union[float, int]) -> Union[float, int]: return math.sqrt(x) ``` - ### JavaScript Testing We use [Jest](https://jestjs.io/) and [Enzyme](https://airbnb.io/enzyme/) to test Javascript. Tests can be run with: @@ -623,7 +621,9 @@ Run Cypress tests: ```bash cd superset/assets npm run build -npm run install-cypress + +cd cypress-base +npm install npm run cypress run # run tests from a specific file @@ -631,6 +631,9 @@ npm run cypress run -- --spec cypress/integration/explore/link.test.js # run specific file with video capture npm run cypress run -- --spec cypress/integration/dashboard/index.test.js --config video=true + +# to open the cypress ui +npm run cypress open ``` See [`superset/assets/cypress_build.sh`](https://github.com/apache/incubator-superset/blob/master/superset/assets/cypress_build.sh). @@ -656,7 +659,7 @@ In JavaScript, the technique is similar: we import `t` (simple translation), `tn` (translation containing a number). ```javascript -import { t, tn } from '@superset-ui/translation'; +import { t, tn } from "@superset-ui/translation"; ``` ### Enabling language selection @@ -718,20 +721,20 @@ Then, [extract strings for the new language](#extracting-new-strings-for-transla ### Adding a new datasource 1. Create Models and Views for the datasource, add them under superset folder, like a new my_models.py - with models for cluster, datasources, columns and metrics and my_views.py with clustermodelview - and datasourcemodelview. + with models for cluster, datasources, columns and metrics and my_views.py with clustermodelview + and datasourcemodelview. 1. Create DB migration files for the new models 1. Specify this variable to add the datasource model and from which module it is from in config.py: - For example: + For example: - ```python - ADDITIONAL_MODULE_DS_MAP = {'superset.my_models': ['MyDatasource', 'MyOtherDatasource']} - ``` + ```python + ADDITIONAL_MODULE_DS_MAP = {'superset.my_models': ['MyDatasource', 'MyOtherDatasource']} + ``` - This means it'll register MyDatasource and MyOtherDatasource in superset.my_models module in the source registry. + This means it'll register MyDatasource and MyOtherDatasource in superset.my_models module in the source registry. ### Creating a new visualization type @@ -743,51 +746,51 @@ https://github.com/apache/incubator-superset/pull/3013 1. Alter the model you want to change. This example will add a `Column` Annotations model. - [Example commit](https://github.com/apache/incubator-superset/commit/6c25f549384d7c2fc288451222e50493a7b14104) + [Example commit](https://github.com/apache/incubator-superset/commit/6c25f549384d7c2fc288451222e50493a7b14104) 1. Generate the migration file - ```bash - superset db migrate -m 'add_metadata_column_to_annotation_model.py' - ``` + ```bash + superset db migrate -m 'add_metadata_column_to_annotation_model.py' + ``` - This will generate a file in `migrations/version/{SHA}_this_will_be_in_the_migration_filename.py`. + This will generate a file in `migrations/version/{SHA}_this_will_be_in_the_migration_filename.py`. - [Example commit](https://github.com/apache/incubator-superset/commit/d3e83b0fd572c9d6c1297543d415a332858e262) + [Example commit](https://github.com/apache/incubator-superset/commit/d3e83b0fd572c9d6c1297543d415a332858e262) 1. Upgrade the DB - ```bash - superset db upgrade - ``` + ```bash + superset db upgrade + ``` - The output should look like this: + The output should look like this: - ``` - INFO [alembic.runtime.migration] Context impl SQLiteImpl. - INFO [alembic.runtime.migration] Will assume transactional DDL. - INFO [alembic.runtime.migration] Running upgrade 1a1d627ebd8e -> 40a0a483dd12, add_metadata_column_to_annotation_model.py - ``` + ``` + INFO [alembic.runtime.migration] Context impl SQLiteImpl. + INFO [alembic.runtime.migration] Will assume transactional DDL. + INFO [alembic.runtime.migration] Running upgrade 1a1d627ebd8e -> 40a0a483dd12, add_metadata_column_to_annotation_model.py + ``` 1. Add column to view - Since there is a new column, we need to add it to the AppBuilder Model view. + Since there is a new column, we need to add it to the AppBuilder Model view. - [Example commit](https://github.com/apache/incubator-superset/pull/5745/commits/6220966e2a0a0cf3e6d87925491f8920fe8a3458) + [Example commit](https://github.com/apache/incubator-superset/pull/5745/commits/6220966e2a0a0cf3e6d87925491f8920fe8a3458) 1. Test the migration's `down` method - ```bash - superset db downgrade - ``` + ```bash + superset db downgrade + ``` - The output should look like this: + The output should look like this: - ``` - INFO [alembic.runtime.migration] Context impl SQLiteImpl. - INFO [alembic.runtime.migration] Will assume transactional DDL. - INFO [alembic.runtime.migration] Running downgrade 40a0a483dd12 -> 1a1d627ebd8e, add_metadata_column_to_annotation_model.py - ``` + ``` + INFO [alembic.runtime.migration] Context impl SQLiteImpl. + INFO [alembic.runtime.migration] Will assume transactional DDL. + INFO [alembic.runtime.migration] Running downgrade 40a0a483dd12 -> 1a1d627ebd8e, add_metadata_column_to_annotation_model.py + ``` ### Merging DB migrations @@ -804,23 +807,23 @@ To fix it: 1. Get the migration heads - ```bash - superset db heads - ``` + ```bash + superset db heads + ``` - This should list two or more migration hashes. + This should list two or more migration hashes. 1. Create a new merge migration - ```bash - superset db merge {HASH1} {HASH2} - ``` + ```bash + superset db merge {HASH1} {HASH2} + ``` 1. Upgrade the DB to the new checkpoint - ```bash - superset db upgrade - ``` + ```bash + superset db upgrade + ``` ### SQL Lab Async @@ -828,30 +831,33 @@ It's possible to configure a local database to operate in `async` mode, to work on `async` related features. To do this, you'll need to: -* Add an additional database entry. We recommend you copy the connection + +- Add an additional database entry. We recommend you copy the connection string from the database labeled `main`, and then enable `SQL Lab` and the features you want to use. Don't forget to check the `Async` box -* Configure a results backend, here's a local `FileSystemCache` example, +- Configure a results backend, here's a local `FileSystemCache` example, not recommended for production, but perfect for testing (stores cache in `/tmp`) - ```python - from werkzeug.contrib.cache import FileSystemCache - RESULTS_BACKEND = FileSystemCache('/tmp/sqllab') - ``` + ```python + from werkzeug.contrib.cache import FileSystemCache + RESULTS_BACKEND = FileSystemCache('/tmp/sqllab') + ``` + * Start up a celery worker - ```shell script - celery worker --app=superset.tasks.celery_app:app -Ofair - ``` + ```shell script + celery worker --app=superset.tasks.celery_app:app -Ofair + ``` Note that: -* for changes that affect the worker logic, you'll have to + +- for changes that affect the worker logic, you'll have to restart the `celery worker` process for the changes to be reflected. -* The message queue used is a `sqlite` database using the `SQLAlchemy` +- The message queue used is a `sqlite` database using the `SQLAlchemy` experimental broker. Ok for testing, but not recommended in production -* In some cases, you may want to create a context that is more aligned +- In some cases, you may want to create a context that is more aligned to your production environment, and use the similar broker as well as results backend configuration - + ## Chart Parameters Chart parameters are stored as a JSON encoded string the `slices.params` column and are often referenced throughout the code as form-data. Currently the form-data is neither versioned nor typed as thus is somewhat free-formed. Note in the future there may be merit in using something like [JSON Schema](https://json-schema.org/) to both annotate and validate the JSON object in addition to using a Mypy `TypedDict` (introduced in Python 3.8) for typing the form-data in the backend. This section serves as a potential primer for that work. @@ -863,314 +869,312 @@ Note not all fields are correctly catagorized. The fields vary based on visualiz ### Datasource & Chart Type | Field | Type | Notes | -|-------------------|----------|-------------------------------------| -| `database_name` | *string* | *Deprecated?* | -| `datasource` | *string* | `__` | -| `datasource_id` | *string* | *Deprecated?* See `datasource` | -| `datasource_name` | *string* | *Deprecated?* | -| `datasource_type` | *string* | *Deprecated?* See `datasource` | -| `viz_type` | *string* | The **Visualization Type** widget | +| ----------------- | -------- | ----------------------------------- | +| `database_name` | _string_ | _Deprecated?_ | +| `datasource` | _string_ | `__` | +| `datasource_id` | _string_ | _Deprecated?_ See `datasource` | +| `datasource_name` | _string_ | _Deprecated?_ | +| `datasource_type` | _string_ | _Deprecated?_ See `datasource` | +| `viz_type` | _string_ | The **Visualization Type** widget | ### Time | Field | Type | Notes | -|------------------------|-----------------|---------------------------------------| -| `date_filter` | *N/A* | *Deprecated?* | -| `date_time_format` | *N/A* | *Deprecated?* | -| `druid_time_origin` | *string* | The Druid **Origin** widget | -| `granularity` | *string* | The Druid **Time Granularity** widget | -| `granularity_sqla` | *string* | The SQLA **Time Column** widget | -| `time_grain_sqla` | *string* | The SQLA **Time Grain** widget | -| `time_range` | *string* | The **Time range** widget | -| `time_range_endpoints` | *array(string)* | Used by SIP-15 [HIDDEN] | +| ---------------------- | --------------- | ------------------------------------- | +| `date_filter` | _N/A_ | _Deprecated?_ | +| `date_time_format` | _N/A_ | _Deprecated?_ | +| `druid_time_origin` | _string_ | The Druid **Origin** widget | +| `granularity` | _string_ | The Druid **Time Granularity** widget | +| `granularity_sqla` | _string_ | The SQLA **Time Column** widget | +| `time_grain_sqla` | _string_ | The SQLA **Time Grain** widget | +| `time_range` | _string_ | The **Time range** widget | +| `time_range_endpoints` | _array(string)_ | Used by SIP-15 [HIDDEN] | ### GROUP BY | Field | Type | Notes | -|---------------------------|-----------------|-----------------------------| -| `include_time` | *boolean* | The **Include Time** widget | -| `metrics` | *array(string)* | See Query section | +| ------------------------- | --------------- | --------------------------- | +| `include_time` | _boolean_ | The **Include Time** widget | +| `metrics` | _array(string)_ | See Query section | | `order_asc` | - | See Query section | | `percent_metrics` | - | See Query section | | `row_limit` | - | See Query section | | `timeseries_limit_metric` | - | See Query section | - ### NOT GROUPED BY | Field | Type | Notes | -|-----------------|-----------------|-------------------------| -| `all_columns` | *array(string)* | The **Columns** widget | -| `order_by_cols` | *array(string)* | The **Ordering** widget | +| --------------- | --------------- | ----------------------- | +| `all_columns` | _array(string)_ | The **Columns** widget | +| `order_by_cols` | _array(string)_ | The **Ordering** widget | | `row_limit` | - | See Query section | ### Y Axis 1 | Field | Type | Notes | -|-----------------|------|----------------------------------------------------| +| --------------- | ---- | -------------------------------------------------- | | `metric` | - | The **Left Axis Metric** widget. See Query section | | `y_axis_format` | - | See Y Axis section | ### Y Axis 2 -| Field | Type | Notes | -|-------------------|-----------------|-----------------------------------------------------| -| `metric_2` | - | The **Right Axis Metric** widget. See Query section | -| `y_axis_2_format` | *string* | The **Right Axis Format** widget | +| Field | Type | Notes | +| ----------------- | -------- | --------------------------------------------------- | +| `metric_2` | - | The **Right Axis Metric** widget. See Query section | +| `y_axis_2_format` | _string_ | The **Right Axis Format** widget | ### Query -| Field | Type | Notes | -|---------------------------|---------------------------------------------------|---------------------------------------------------| -| `adhoc_filters` | *array(object)* | The **Filters** widget | -| `all_columns_x` | *array(string)* | The **Numeric Columns** widget | -| `columns` | *array(string)* | The **Breakdowns** widget | -| `contribution` | *boolean* | The **Contribution** widget | -| `groupby` | *array(string)* | The **Group by** or **Series** widget | -| `limit` | *number* | The **Series Limit** widget | -| `max_bubble_size` | *number* | The **Max Bubble Size** widget | -| `metric`
`metric_2`
`metrics`
`percent_mertics`
`secondary_metric`
`size`
`x`
`y` | *string*,*object*,*array(string)*,*array(object)* | The metric(s) depending on the visualization type | -| `order_asc` | *boolean* | The **Sort Descending** widget | -| `row_limit` | *number* | The **Row limit** widget | -| `timeseries_limit_metric` | *object* | The **Sort By** widget | +| Field | Type | Notes | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------- | +| `adhoc_filters` | _array(object)_ | The **Filters** widget | +| `all_columns_x` | _array(string)_ | The **Numeric Columns** widget | +| `columns` | _array(string)_ | The **Breakdowns** widget | +| `contribution` | _boolean_ | The **Contribution** widget | +| `groupby` | _array(string)_ | The **Group by** or **Series** widget | +| `limit` | _number_ | The **Series Limit** widget | +| `max_bubble_size` | _number_ | The **Max Bubble Size** widget | +| `metric`
`metric_2`
`metrics`
`percent_mertics`
`secondary_metric`
`size`
`x`
`y` | _string_,_object_,_array(string)_,_array(object)_ | The metric(s) depending on the visualization type | +| `order_asc` | _boolean_ | The **Sort Descending** widget | +| `row_limit` | _number_ | The **Row limit** widget | +| `timeseries_limit_metric` | _object_ | The **Sort By** widget | -The `metric` (or equivalent) and `timeseries_limit_metric` fields are all composed of either metric names or the JSON representation of the `AdhocMetric` JavaScript type. The `adhoc_filters` is composed of the JSON represent of the `AdhocFilter` JavaScript type (which can comprise of columns or metrics depending on whether it is a WHERE or HAVING clause). The `all_columns`, `all_columns_x`, `columns`, `groupby`, and `order_by_cols` fields all represent column names. +The `metric` (or equivalent) and `timeseries_limit_metric` fields are all composed of either metric names or the JSON representation of the `AdhocMetric` JavaScript type. The `adhoc_filters` is composed of the JSON represent of the `AdhocFilter` JavaScript type (which can comprise of columns or metrics depending on whether it is a WHERE or HAVING clause). The `all_columns`, `all_columns_x`, `columns`, `groupby`, and `order_by_cols` fields all represent column names. ### Filters Configuration | Field | Type | Notes | -|------------------|---------------|-----------------------------------| +| ---------------- | ------------- | --------------------------------- | | `filter_configs` | array(object) | The filter-box **Filters** widget | -The filter-box configuration references column names (via the `column` key) and optionally metric names (via the `metric` key) if sorting is defined. +The filter-box configuration references column names (via the `column` key) and optionally metric names (via the `metric` key) if sorting is defined. ### Options | Field | Type | Notes | -|------------------------|-----------|--------------------------------------| -| `compare_lag` | *number* | The **Comparison Period Lag** widget | -| `compare_suffix` | *string* | The **Comparison suffix** widget | -| `show_trend_line` | *boolean* | The **Show Trend Line** widget | -| `start_y_axis_at_zero` | *boolean* | The **Start y-axis at 0** widget | +| ---------------------- | --------- | ------------------------------------ | +| `compare_lag` | _number_ | The **Comparison Period Lag** widget | +| `compare_suffix` | _string_ | The **Comparison suffix** widget | +| `show_trend_line` | _boolean_ | The **Show Trend Line** widget | +| `start_y_axis_at_zero` | _boolean_ | The **Start y-axis at 0** widget | ### Chart Options | Field | Type | Notes | -|-----------------------|-----------|--------------------------------------------------| -| `color_picker` | *object* | The **Fixed Color** widget | -| `donut` | *boolean* | The **Donut** widget | -| `global_opacity` | *number* | The **Opacity** widget | -| `header_font_size` | *number* | The **Big Number Font Size** widget (or similar) | -| `label_colors` | *object* | The **Color Scheme** widget | -| `labels_outside` | *boolean* | The **Put labels outside** widget | -| `line_interpolation` | *string* | The **Line Style** widget | -| `link_length` | *number* | The **No of Bins** widget | -| `normalized` | *boolean* | The **Normalized** widget | -| `number_format` | *string* | The **Number format** widget | -| `pie_label_type` | *string* | [HIDDEN] | -| `rich_tooltip` | *boolean* | The **Rich Tooltip** widget | -| `send_time_range` | *boolean* | The **Show Markers** widget | -| `show_brush` | *string* | The **Show Range Filter** widget | -| `show_legend` | *boolean* | The **Legend** widget | -| `show_markers` | *string* | The **Show Markers** widget | -| `subheader_font_size` | *number* | The **Subheader Font Size** widget | +| --------------------- | --------- | ------------------------------------------------ | +| `color_picker` | _object_ | The **Fixed Color** widget | +| `donut` | _boolean_ | The **Donut** widget | +| `global_opacity` | _number_ | The **Opacity** widget | +| `header_font_size` | _number_ | The **Big Number Font Size** widget (or similar) | +| `label_colors` | _object_ | The **Color Scheme** widget | +| `labels_outside` | _boolean_ | The **Put labels outside** widget | +| `line_interpolation` | _string_ | The **Line Style** widget | +| `link_length` | _number_ | The **No of Bins** widget | +| `normalized` | _boolean_ | The **Normalized** widget | +| `number_format` | _string_ | The **Number format** widget | +| `pie_label_type` | _string_ | [HIDDEN] | +| `rich_tooltip` | _boolean_ | The **Rich Tooltip** widget | +| `send_time_range` | _boolean_ | The **Show Markers** widget | +| `show_brush` | _string_ | The **Show Range Filter** widget | +| `show_legend` | _boolean_ | The **Legend** widget | +| `show_markers` | _string_ | The **Show Markers** widget | +| `subheader_font_size` | _number_ | The **Subheader Font Size** widget | ### X Axis | Field | Type | Notes | -|----------------------|-----------|------------------------------| -| `bottom_margin` | *string* | The **Bottom Margin** widget | -| `x_axis_format` | *string* | The **X Axis Format** widget | -| `x_axis_label` | *string* | The **X Axis Label** widget | -| `x_axis_showminmax` | *boolean* | The **X bounds** widget | -| `x_axis_time_format` | *N/A* | *Deprecated?* | -| `x_log_scale` | *N/A* | *Deprecated?* | -| `x_ticks_layout` | *string* | The **X Tick Layout** widget | +| -------------------- | --------- | ---------------------------- | +| `bottom_margin` | _string_ | The **Bottom Margin** widget | +| `x_axis_format` | _string_ | The **X Axis Format** widget | +| `x_axis_label` | _string_ | The **X Axis Label** widget | +| `x_axis_showminmax` | _boolean_ | The **X bounds** widget | +| `x_axis_time_format` | _N/A_ | _Deprecated?_ | +| `x_log_scale` | _N/A_ | _Deprecated?_ | +| `x_ticks_layout` | _string_ | The **X Tick Layout** widget | ### Y Axis | Field | Type | Notes | -|---------------------|-----------------|------------------------------| -| `left_margin` | *number* | The **Left Margin** widget | -| `y_axis_2_label` | *N/A* | *Deprecated?* | -| `y_axis_bounds` | *array(string)* | The **Y Axis Bounds** widget | -| `y_axis_format` | *string* | The **Y Axis Format** widget | -| `y_axis_label` | *string* | The **Y Axis Label** widget | -| `y_axis_showminmax` | *boolean* | The **Y bounds** widget | -| `y_axis_zero` | *N/A* | *Deprecated?* | -| `y_log_scale` | *boolean* | The **Y Log Scale** widget | -| `yscale_interval` | *N/A* | *Deprecated?* | - +| ------------------- | --------------- | ---------------------------- | +| `left_margin` | _number_ | The **Left Margin** widget | +| `y_axis_2_label` | _N/A_ | _Deprecated?_ | +| `y_axis_bounds` | _array(string)_ | The **Y Axis Bounds** widget | +| `y_axis_format` | _string_ | The **Y Axis Format** widget | +| `y_axis_label` | _string_ | The **Y Axis Label** widget | +| `y_axis_showminmax` | _boolean_ | The **Y bounds** widget | +| `y_axis_zero` | _N/A_ | _Deprecated?_ | +| `y_log_scale` | _boolean_ | The **Y Log Scale** widget | +| `yscale_interval` | _N/A_ | _Deprecated?_ | Note the `y_axis_format` is defined under various section for some charts. ### Other | Field | Type | Notes | -|----------------|----------|--------------| -| `color_scheme` | *string* | | -| `slice_id` | *number* | The slice ID | -| `url_params` | *object* | | +| -------------- | -------- | ------------ | +| `color_scheme` | _string_ | | +| `slice_id` | _number_ | The slice ID | +| `url_params` | _object_ | | ### Unclassified | Field | Type | Notes | -|---------------------------------|-------|-------| -| `add_to_dash` | *N/A* | | -| `align_pn` | *N/A* | | -| `all_columns_y` | *N/A* | | -| `annotation_layers` | *N/A* | | -| `autozoom` | *N/A* | | -| `bar_stacked` | *N/A* | | -| `cache_timeout` | *N/A* | | -| `canvas_image_rendering` | *N/A* | | -| `cell_padding` | *N/A* | | -| `cell_radius` | *N/A* | | -| `cell_size` | *N/A* | | -| `charge` | *N/A* | | -| `clustering_radius` | *N/A* | | -| `code` | *N/A* | | -| `collapsed_fieldsets` | *N/A* | | -| `color_pn` | *N/A* | | -| `column_collection` | *N/A* | | -| `combine_metric` | *N/A* | | -| `comparison type` | *N/A* | | -| `contribution` | *N/A* | | -| `country_fieldtype` | *N/A* | | -| `date_filter` | *N/A* | | -| `deck_slices` | *N/A* | | -| `default_filters` | *N/A* | | -| `dimension` | *N/A* | | -| `domain_granularity` | *N/A* | | -| `end_spatial` | *N/A* | | -| `entity` | *N/A* | | -| `equal_date_size` | *N/A* | | -| `expanded_slices` | *N/A* | | -| `extra_filters` | *N/A* | | -| `extruded` | *N/A* | | -| `fill_color_picker` | *N/A* | | -| `filled` | *N/A* | | -| `filter_immune_slice_fields` | *N/A* | | -| `filter_immune_slices` | *N/A* | | -| `filter_nulls` | *N/A* | | -| `flt_col_0` | *N/A* | | -| `flt_col_1` | *N/A* | | -| `flt_eq_0` | *N/A* | | -| `flt_eq_1` | *N/A* | | -| `flt_op_0` | *N/A* | | -| `flt_op_1` | *N/A* | | -| `goto_dash` | *N/A* | | -| `grid_size` | *N/A* | | -| `horizon_color_scale` | *N/A* | | -| `import_time` | *N/A* | | -| `include_search` | *N/A* | | -| `include_series` | *N/A* | | -| `instant_filtering` | *N/A* | | -| `js_agg_function` | *N/A* | | -| `js_columns` | *N/A* | | -| `label` | *N/A* | | -| `labels_outside` | *N/A* | | -| `legend_position` | *N/A* | | -| `line_charts` | *N/A* | | -| `line_charts_2` | *N/A* | | -| `line_column` | *N/A* | | -| `line_type` | *N/A* | | -| `line_width` | *N/A* | | -| `linear_color_scheme` | *N/A* | | -| `log_scale` | *N/A* | | -| `mapbox_color` | *N/A* | | -| `mapbox_label` | *N/A* | | -| `mapbox_style` | *N/A* | | -| `marker_labels` | *N/A* | | -| `marker_line_labels` | *N/A* | | -| `marker_lines` | *N/A* | | -| `markers` | *N/A* | | -| `markup_type` | *N/A* | | -| `max_radius` | *N/A* | | -| `min_leaf_node_event_count` | *N/A* | | -| `min_periods` | *N/A* | | -| `min_radius` | *N/A* | | -| `multiplier` | *N/A* | | -| `new_dashboard_name` | *N/A* | | -| `new_slice_name` | *N/A* | | -| `normalize_across` | *N/A* | | -| `num_buckets` | *N/A* | | -| `num_period_compare` | *N/A* | | -| `order_bars` | *N/A* | | -| `order_by_entity` | *N/A* | | -| `order_desc` | *N/A* | | -| `page_length` | *N/A* | | -| `pandas_aggfunc` | *N/A* | | -| `partition_limit` | *N/A* | | -| `partition_threshold` | *N/A* | | -| `period_ratio_type` | *N/A* | | -| `perm` | *N/A* | | -| `pivot_margins` | *N/A* | | -| `point_radius` | *N/A* | | -| `point_radius_fixed` | *N/A* | | -| `point_radius_unit` | *N/A* | | -| `point_unit` | *N/A* | | -| `prefix_metric_with_slice_name` | *N/A* | | -| `range_labels` | *N/A* | | -| `ranges` | *N/A* | | -| `rdo_save` | *N/A* | | -| `reduce_x_ticks` | *N/A* | | -| `refresh_frequency` | *N/A* | | -| `remote_id` | *N/A* | | -| `render_while_dragging` | *N/A* | | -| `resample_fillmethod` | *N/A* | | -| `resample_how` | *N/A* | | -| `resample_method` | *N/A* | | -| `resample_rule` | *N/A* | | -| `reverse_long_lat` | *N/A* | | -| `rolling_periods` | *N/A* | | -| `rolling_type` | *N/A* | | -| `rose_area_proportion` | *N/A* | | -| `rotation` | *N/A* | | -| `save_to_dashboard_id` | *N/A* | | -| `schema` | *N/A* | | -| `select_country` | *N/A* | | -| `series` | *N/A* | | -| `series_height` | *N/A* | | -| `show_bar_value` | *N/A* | | -| `show_brush` | *N/A* | | -| `show_bubbles` | *N/A* | | -| `show_controls` | *N/A* | | -| `show_datatable` | *N/A* | | -| `show_druid_time_granularity` | *N/A* | | -| `show_druid_time_origin` | *N/A* | | -| `show_labels` | *N/A* | | -| `show_metric_name` | *N/A* | | -| `show_perc` | *N/A* | | -| `show_sqla_time_column` | *N/A* | | -| `show_sqla_time_granularity` | *N/A* | | -| `show_values` | *N/A* | | -| `size_from` | *N/A* | | -| `size_to` | *N/A* | | -| `slice_name` | *N/A* | | -| `sort_x_axis` | *N/A* | | -| `sort_y_axis` | *N/A* | | -| `spatial` | *N/A* | | -| `stacked_style` | *N/A* | | -| `start_spatial` | *N/A* | | -| `steps` | *N/A* | | -| `stroke_color_picker` | *N/A* | | -| `stroke_width` | *N/A* | | -| `stroked` | *N/A* | | -| `subdomain_granularity` | *N/A* | | -| `subheader` | *N/A* | | -| `table_filter` | *N/A* | | -| `table_timestamp_format` | *N/A* | | -| `time_compare` | *N/A* | | -| `time_series_option` | *N/A* | | -| `timed_refresh_immune_slices` | *N/A* | | -| `toggle_polygons` | *N/A* | | -| `transpose_pivot` | *N/A* | | -| `treemap_ratio` | *N/A* | | -| `url` | *N/A* | | -| `userid` | *N/A* | | -| `viewport` | *N/A* | | -| `viewport_latitude` | *N/A* | | -| `viewport_longitude` | *N/A* | | -| `viewport_zoom` | *N/A* | | -| `whisker_options` | *N/A* | | +| ------------------------------- | ----- | ----- | +| `add_to_dash` | _N/A_ | | +| `align_pn` | _N/A_ | | +| `all_columns_y` | _N/A_ | | +| `annotation_layers` | _N/A_ | | +| `autozoom` | _N/A_ | | +| `bar_stacked` | _N/A_ | | +| `cache_timeout` | _N/A_ | | +| `canvas_image_rendering` | _N/A_ | | +| `cell_padding` | _N/A_ | | +| `cell_radius` | _N/A_ | | +| `cell_size` | _N/A_ | | +| `charge` | _N/A_ | | +| `clustering_radius` | _N/A_ | | +| `code` | _N/A_ | | +| `collapsed_fieldsets` | _N/A_ | | +| `color_pn` | _N/A_ | | +| `column_collection` | _N/A_ | | +| `combine_metric` | _N/A_ | | +| `comparison type` | _N/A_ | | +| `contribution` | _N/A_ | | +| `country_fieldtype` | _N/A_ | | +| `date_filter` | _N/A_ | | +| `deck_slices` | _N/A_ | | +| `default_filters` | _N/A_ | | +| `dimension` | _N/A_ | | +| `domain_granularity` | _N/A_ | | +| `end_spatial` | _N/A_ | | +| `entity` | _N/A_ | | +| `equal_date_size` | _N/A_ | | +| `expanded_slices` | _N/A_ | | +| `extra_filters` | _N/A_ | | +| `extruded` | _N/A_ | | +| `fill_color_picker` | _N/A_ | | +| `filled` | _N/A_ | | +| `filter_immune_slice_fields` | _N/A_ | | +| `filter_immune_slices` | _N/A_ | | +| `filter_nulls` | _N/A_ | | +| `flt_col_0` | _N/A_ | | +| `flt_col_1` | _N/A_ | | +| `flt_eq_0` | _N/A_ | | +| `flt_eq_1` | _N/A_ | | +| `flt_op_0` | _N/A_ | | +| `flt_op_1` | _N/A_ | | +| `goto_dash` | _N/A_ | | +| `grid_size` | _N/A_ | | +| `horizon_color_scale` | _N/A_ | | +| `import_time` | _N/A_ | | +| `include_search` | _N/A_ | | +| `include_series` | _N/A_ | | +| `instant_filtering` | _N/A_ | | +| `js_agg_function` | _N/A_ | | +| `js_columns` | _N/A_ | | +| `label` | _N/A_ | | +| `labels_outside` | _N/A_ | | +| `legend_position` | _N/A_ | | +| `line_charts` | _N/A_ | | +| `line_charts_2` | _N/A_ | | +| `line_column` | _N/A_ | | +| `line_type` | _N/A_ | | +| `line_width` | _N/A_ | | +| `linear_color_scheme` | _N/A_ | | +| `log_scale` | _N/A_ | | +| `mapbox_color` | _N/A_ | | +| `mapbox_label` | _N/A_ | | +| `mapbox_style` | _N/A_ | | +| `marker_labels` | _N/A_ | | +| `marker_line_labels` | _N/A_ | | +| `marker_lines` | _N/A_ | | +| `markers` | _N/A_ | | +| `markup_type` | _N/A_ | | +| `max_radius` | _N/A_ | | +| `min_leaf_node_event_count` | _N/A_ | | +| `min_periods` | _N/A_ | | +| `min_radius` | _N/A_ | | +| `multiplier` | _N/A_ | | +| `new_dashboard_name` | _N/A_ | | +| `new_slice_name` | _N/A_ | | +| `normalize_across` | _N/A_ | | +| `num_buckets` | _N/A_ | | +| `num_period_compare` | _N/A_ | | +| `order_bars` | _N/A_ | | +| `order_by_entity` | _N/A_ | | +| `order_desc` | _N/A_ | | +| `page_length` | _N/A_ | | +| `pandas_aggfunc` | _N/A_ | | +| `partition_limit` | _N/A_ | | +| `partition_threshold` | _N/A_ | | +| `period_ratio_type` | _N/A_ | | +| `perm` | _N/A_ | | +| `pivot_margins` | _N/A_ | | +| `point_radius` | _N/A_ | | +| `point_radius_fixed` | _N/A_ | | +| `point_radius_unit` | _N/A_ | | +| `point_unit` | _N/A_ | | +| `prefix_metric_with_slice_name` | _N/A_ | | +| `range_labels` | _N/A_ | | +| `ranges` | _N/A_ | | +| `rdo_save` | _N/A_ | | +| `reduce_x_ticks` | _N/A_ | | +| `refresh_frequency` | _N/A_ | | +| `remote_id` | _N/A_ | | +| `render_while_dragging` | _N/A_ | | +| `resample_fillmethod` | _N/A_ | | +| `resample_how` | _N/A_ | | +| `resample_method` | _N/A_ | | +| `resample_rule` | _N/A_ | | +| `reverse_long_lat` | _N/A_ | | +| `rolling_periods` | _N/A_ | | +| `rolling_type` | _N/A_ | | +| `rose_area_proportion` | _N/A_ | | +| `rotation` | _N/A_ | | +| `save_to_dashboard_id` | _N/A_ | | +| `schema` | _N/A_ | | +| `select_country` | _N/A_ | | +| `series` | _N/A_ | | +| `series_height` | _N/A_ | | +| `show_bar_value` | _N/A_ | | +| `show_brush` | _N/A_ | | +| `show_bubbles` | _N/A_ | | +| `show_controls` | _N/A_ | | +| `show_datatable` | _N/A_ | | +| `show_druid_time_granularity` | _N/A_ | | +| `show_druid_time_origin` | _N/A_ | | +| `show_labels` | _N/A_ | | +| `show_metric_name` | _N/A_ | | +| `show_perc` | _N/A_ | | +| `show_sqla_time_column` | _N/A_ | | +| `show_sqla_time_granularity` | _N/A_ | | +| `show_values` | _N/A_ | | +| `size_from` | _N/A_ | | +| `size_to` | _N/A_ | | +| `slice_name` | _N/A_ | | +| `sort_x_axis` | _N/A_ | | +| `sort_y_axis` | _N/A_ | | +| `spatial` | _N/A_ | | +| `stacked_style` | _N/A_ | | +| `start_spatial` | _N/A_ | | +| `steps` | _N/A_ | | +| `stroke_color_picker` | _N/A_ | | +| `stroke_width` | _N/A_ | | +| `stroked` | _N/A_ | | +| `subdomain_granularity` | _N/A_ | | +| `subheader` | _N/A_ | | +| `table_filter` | _N/A_ | | +| `table_timestamp_format` | _N/A_ | | +| `time_compare` | _N/A_ | | +| `time_series_option` | _N/A_ | | +| `timed_refresh_immune_slices` | _N/A_ | | +| `toggle_polygons` | _N/A_ | | +| `transpose_pivot` | _N/A_ | | +| `treemap_ratio` | _N/A_ | | +| `url` | _N/A_ | | +| `userid` | _N/A_ | | +| `viewport` | _N/A_ | | +| `viewport_latitude` | _N/A_ | | +| `viewport_longitude` | _N/A_ | | +| `viewport_zoom` | _N/A_ | | +| `whisker_options` | _N/A_ | | diff --git a/superset/assets/cypress.json b/superset/assets/cypress-base/cypress.json similarity index 100% rename from superset/assets/cypress.json rename to superset/assets/cypress-base/cypress.json diff --git a/superset/assets/cypress/.eslintrc b/superset/assets/cypress-base/cypress/.eslintrc similarity index 100% rename from superset/assets/cypress/.eslintrc rename to superset/assets/cypress-base/cypress/.eslintrc diff --git a/superset/assets/cypress-base/cypress/fixtures/example.json b/superset/assets/cypress-base/cypress/fixtures/example.json new file mode 100644 index 000000000..02e425437 --- /dev/null +++ b/superset/assets/cypress-base/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/superset/assets/cypress/integration/dashboard/controls.js b/superset/assets/cypress-base/cypress/integration/dashboard/controls.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/controls.js rename to superset/assets/cypress-base/cypress/integration/dashboard/controls.js diff --git a/superset/assets/cypress/integration/dashboard/dashboard.helper.js b/superset/assets/cypress-base/cypress/integration/dashboard/dashboard.helper.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/dashboard.helper.js rename to superset/assets/cypress-base/cypress/integration/dashboard/dashboard.helper.js diff --git a/superset/assets/cypress/integration/dashboard/edit_mode.js b/superset/assets/cypress-base/cypress/integration/dashboard/edit_mode.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/edit_mode.js rename to superset/assets/cypress-base/cypress/integration/dashboard/edit_mode.js diff --git a/superset/assets/cypress/integration/dashboard/fav_star.js b/superset/assets/cypress-base/cypress/integration/dashboard/fav_star.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/fav_star.js rename to superset/assets/cypress-base/cypress/integration/dashboard/fav_star.js diff --git a/superset/assets/cypress/integration/dashboard/filter.js b/superset/assets/cypress-base/cypress/integration/dashboard/filter.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/filter.js rename to superset/assets/cypress-base/cypress/integration/dashboard/filter.js diff --git a/superset/assets/cypress/integration/dashboard/index.test.js b/superset/assets/cypress-base/cypress/integration/dashboard/index.test.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/index.test.js rename to superset/assets/cypress-base/cypress/integration/dashboard/index.test.js diff --git a/superset/assets/cypress/integration/dashboard/load.js b/superset/assets/cypress-base/cypress/integration/dashboard/load.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/load.js rename to superset/assets/cypress-base/cypress/integration/dashboard/load.js diff --git a/superset/assets/cypress/integration/dashboard/save.js b/superset/assets/cypress-base/cypress/integration/dashboard/save.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/save.js rename to superset/assets/cypress-base/cypress/integration/dashboard/save.js diff --git a/superset/assets/cypress/integration/dashboard/tabs.js b/superset/assets/cypress-base/cypress/integration/dashboard/tabs.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/tabs.js rename to superset/assets/cypress-base/cypress/integration/dashboard/tabs.js diff --git a/superset/assets/cypress/integration/dashboard/url_params.js b/superset/assets/cypress-base/cypress/integration/dashboard/url_params.js similarity index 100% rename from superset/assets/cypress/integration/dashboard/url_params.js rename to superset/assets/cypress-base/cypress/integration/dashboard/url_params.js diff --git a/superset/assets/cypress/integration/explore/chart.test.js b/superset/assets/cypress-base/cypress/integration/explore/chart.test.js similarity index 100% rename from superset/assets/cypress/integration/explore/chart.test.js rename to superset/assets/cypress-base/cypress/integration/explore/chart.test.js diff --git a/superset/assets/cypress/integration/explore/control.test.js b/superset/assets/cypress-base/cypress/integration/explore/control.test.js similarity index 100% rename from superset/assets/cypress/integration/explore/control.test.js rename to superset/assets/cypress-base/cypress/integration/explore/control.test.js diff --git a/superset/assets/cypress/integration/explore/link.test.js b/superset/assets/cypress-base/cypress/integration/explore/link.test.js similarity index 100% rename from superset/assets/cypress/integration/explore/link.test.js rename to superset/assets/cypress-base/cypress/integration/explore/link.test.js diff --git a/superset/assets/cypress/integration/explore/visualizations/area.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/area.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/area.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/area.js diff --git a/superset/assets/cypress/integration/explore/visualizations/big_number.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/big_number.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/big_number.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/big_number.js diff --git a/superset/assets/cypress/integration/explore/visualizations/big_number_total.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/big_number_total.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/big_number_total.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/big_number_total.js diff --git a/superset/assets/cypress/integration/explore/visualizations/box_plot.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/box_plot.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/box_plot.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/box_plot.js diff --git a/superset/assets/cypress/integration/explore/visualizations/bubble.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/bubble.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/bubble.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/bubble.js diff --git a/superset/assets/cypress/integration/explore/visualizations/compare.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/compare.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/compare.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/compare.js diff --git a/superset/assets/cypress/integration/explore/visualizations/dist_bar.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/dist_bar.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/dist_bar.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/dist_bar.js diff --git a/superset/assets/cypress/integration/explore/visualizations/dual_line.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/dual_line.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/dual_line.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/dual_line.js diff --git a/superset/assets/cypress/integration/explore/visualizations/filter_box.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/filter_box.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/filter_box.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/filter_box.js diff --git a/superset/assets/cypress/integration/explore/visualizations/histogram.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/histogram.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/histogram.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/histogram.js diff --git a/superset/assets/cypress/integration/explore/visualizations/index.test.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/index.test.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/index.test.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/index.test.js diff --git a/superset/assets/cypress/integration/explore/visualizations/line.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/line.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/line.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/line.js diff --git a/superset/assets/cypress/integration/explore/visualizations/pie.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/pie.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/pie.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/pie.js diff --git a/superset/assets/cypress/integration/explore/visualizations/pivot_table.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/pivot_table.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/pivot_table.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/pivot_table.js diff --git a/superset/assets/cypress/integration/explore/visualizations/sankey.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/sankey.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/sankey.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/sankey.js diff --git a/superset/assets/cypress/integration/explore/visualizations/shared.helper.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/shared.helper.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/shared.helper.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/shared.helper.js diff --git a/superset/assets/cypress/integration/explore/visualizations/sunburst.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/sunburst.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/sunburst.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/sunburst.js diff --git a/superset/assets/cypress/integration/explore/visualizations/table.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/table.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/table.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/table.js diff --git a/superset/assets/cypress/integration/explore/visualizations/time_table.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/time_table.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/time_table.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/time_table.js diff --git a/superset/assets/cypress/integration/explore/visualizations/treemap.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/treemap.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/treemap.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/treemap.js diff --git a/superset/assets/cypress/integration/explore/visualizations/world_map.js b/superset/assets/cypress-base/cypress/integration/explore/visualizations/world_map.js similarity index 100% rename from superset/assets/cypress/integration/explore/visualizations/world_map.js rename to superset/assets/cypress-base/cypress/integration/explore/visualizations/world_map.js diff --git a/superset/assets/cypress/integration/sqllab/index.test.js b/superset/assets/cypress-base/cypress/integration/sqllab/index.test.js similarity index 100% rename from superset/assets/cypress/integration/sqllab/index.test.js rename to superset/assets/cypress-base/cypress/integration/sqllab/index.test.js diff --git a/superset/assets/cypress/integration/sqllab/query.js b/superset/assets/cypress-base/cypress/integration/sqllab/query.js similarity index 100% rename from superset/assets/cypress/integration/sqllab/query.js rename to superset/assets/cypress-base/cypress/integration/sqllab/query.js diff --git a/superset/assets/cypress/integration/sqllab/sourcePanel.js b/superset/assets/cypress-base/cypress/integration/sqllab/sourcePanel.js similarity index 100% rename from superset/assets/cypress/integration/sqllab/sourcePanel.js rename to superset/assets/cypress-base/cypress/integration/sqllab/sourcePanel.js diff --git a/superset/assets/cypress/integration/sqllab/sqllab.helper.js b/superset/assets/cypress-base/cypress/integration/sqllab/sqllab.helper.js similarity index 100% rename from superset/assets/cypress/integration/sqllab/sqllab.helper.js rename to superset/assets/cypress-base/cypress/integration/sqllab/sqllab.helper.js diff --git a/superset/assets/cypress/integration/sqllab/tabs.js b/superset/assets/cypress-base/cypress/integration/sqllab/tabs.js similarity index 100% rename from superset/assets/cypress/integration/sqllab/tabs.js rename to superset/assets/cypress-base/cypress/integration/sqllab/tabs.js diff --git a/superset/assets/cypress/plugins/index.js b/superset/assets/cypress-base/cypress/plugins/index.js similarity index 100% rename from superset/assets/cypress/plugins/index.js rename to superset/assets/cypress-base/cypress/plugins/index.js diff --git a/superset/assets/cypress/support/commands.js b/superset/assets/cypress-base/cypress/support/commands.js similarity index 100% rename from superset/assets/cypress/support/commands.js rename to superset/assets/cypress-base/cypress/support/commands.js diff --git a/superset/assets/cypress/support/index.js b/superset/assets/cypress-base/cypress/support/index.js similarity index 100% rename from superset/assets/cypress/support/index.js rename to superset/assets/cypress-base/cypress/support/index.js diff --git a/superset/assets/cypress/utils/readResponseBlob.js b/superset/assets/cypress-base/cypress/utils/readResponseBlob.js similarity index 100% rename from superset/assets/cypress/utils/readResponseBlob.js rename to superset/assets/cypress-base/cypress/utils/readResponseBlob.js diff --git a/superset/assets/cypress-base/package-lock.json b/superset/assets/cypress-base/package-lock.json new file mode 100644 index 000000000..7a31042f8 --- /dev/null +++ b/superset/assets/cypress-base/package-lock.json @@ -0,0 +1,1415 @@ +{ + "name": "superset-cypress", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", + "requires": { + "os-homedir": "^1.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=" + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cypress": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.6.1.tgz", + "integrity": "sha512-6n0oqENdz/oQ7EJ6IgESNb2M7Bo/70qX9jSJsAziJTC3kICfEMmJUlrAnP9bn+ut24MlXQST5nRXhUP5nRIx6A==", + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.2.4", + "@types/sizzle": "2.3.2", + "arch": "2.1.1", + "bluebird": "3.5.0", + "cachedir": "1.3.0", + "chalk": "2.4.2", + "check-more-types": "2.24.0", + "commander": "2.15.1", + "common-tags": "1.8.0", + "debug": "3.2.6", + "execa": "0.10.0", + "executable": "4.1.1", + "extract-zip": "1.6.7", + "fs-extra": "5.0.0", + "getos": "3.1.1", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.15", + "log-symbols": "2.2.0", + "minimist": "1.2.0", + "moment": "2.24.0", + "ramda": "0.24.1", + "request": "2.88.0", + "request-progress": "3.0.0", + "supports-color": "5.5.0", + "tmp": "0.1.0", + "untildify": "3.0.3", + "url": "0.11.0", + "yauzl": "2.10.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "requires": { + "pify": "^2.2.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "requires": { + "fd-slicer": "~1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "requires": { + "async": "2.6.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=" + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.2.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.0.0-beta.11", + "stream-to-observable": "^0.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + } + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.7.tgz", + "integrity": "sha512-fmS3qwDldm4bE01HCIRqNk+f255CNjnAoeV3Zzzv0KemObHKqYgirVaZA9DtKcjogicWjYcHkJs4D5A8CjnuVQ==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "requires": { + "throttleit": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shortid": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.15.tgz", + "integrity": "sha512-5EaCy2mx2Jgc/Fdn9uuDuNIIfWBpzY4XIlhoqtXF6qsf+/+SGZ+FxDdX/ZsMZiWupIWNqAEmiNY4RC+LSmCeOw==", + "requires": { + "nanoid": "^2.1.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + }, + "dependencies": { + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + } + } + } + } +} diff --git a/superset/assets/cypress-base/package.json b/superset/assets/cypress-base/package.json new file mode 100644 index 000000000..c6dddefc7 --- /dev/null +++ b/superset/assets/cypress-base/package.json @@ -0,0 +1,15 @@ +{ + "name": "superset-cypress", + "version": "1.0.0", + "description": "run cypress against superset", + "scripts": { + "cypress": "cypress", + "cypress-debug": "cypress open --config watchForFileChanges=true" + }, + "author": "Apcahe", + "license": "Apache-2.0", + "dependencies": { + "cypress": "^3.6.1", + "shortid": "^2.2.15" + } +} diff --git a/superset/assets/cypress_build.sh b/superset/assets/cypress_build.sh index bb1af41e4..a6ca91593 100755 --- a/superset/assets/cypress_build.sh +++ b/superset/assets/cypress_build.sh @@ -29,10 +29,12 @@ flask run -p 8081 --with-threads --reload --debugger & #block on the longer running javascript process time npm ci -time npm run install-cypress time npm run build echo "[completed js build steps]" +#setup cypress +cd cypress-base +time npm ci CYPRESS_PATH='cypress/integration/'${1}'/*' time npm run cypress run -- --spec "$CYPRESS_PATH" --record false --config video=false diff --git a/superset/assets/package.json b/superset/assets/package.json index c01200c04..e2cf2f2b6 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -17,10 +17,7 @@ "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production webpack --mode=production --colors --progress", "lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx . && tslint -c tslint.json ./{src,spec}/**/*.ts{,x}", "lint-fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx . && tslint -c tslint.json --fix ./{src,spec}/**/*.ts{,x} && npm run clean-css", - "clean-css": "prettier --write 'src/**/*.{css,less,sass,scss}'", - "cypress": "cypress", - "cypress-debug": "cypress open --config watchForFileChanges=true", - "install-cypress": "npm install cypress@3.6.1" + "clean-css": "prettier --write 'src/**/*.{css,less,sass,scss}'" }, "repository": { "type": "git",