From cf52cc98e4817117bd9f042c129e84d4d2cc5095 Mon Sep 17 00:00:00 2001 From: Harel M Date: Wed, 14 Jul 2021 08:55:22 +0300 Subject: [PATCH 001/142] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 996be44784..fabdccff4f 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ Use MapLibre GL JS bindings for React (https://visgl.github.io/react-map-gl/docs ### Roadmap +Migrate to typescript + This project's initial plans are outlined in the [Roadmap](https://github.com/maplibre/maplibre-gl-js/projects/2) project. The primary goal is consistency and backwards-compatability with previous releases and continued bug-fixes and maintenance going forward. ### Getting Involved From b5035a37f3925998e5b3bb212061a59efc87180d Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 16 Jul 2021 14:48:17 +0300 Subject: [PATCH 002/142] Initial commit - only rename and flow to typescript conversion --- src/data/{array_types.js => array_types.ts} | 2 - src/data/{bucket.js => bucket.ts} | 118 +++-- ...ill_attributes.js => circle_attributes.ts} | 3 +- .../{circle_bucket.js => circle_bucket.ts} | 14 +- ...ircle_attributes.js => fill_attributes.ts} | 3 +- .../bucket/{fill_bucket.js => fill_bucket.ts} | 18 +- ...ibutes.js => fill_extrusion_attributes.ts} | 3 +- ...ion_bucket.js => fill_extrusion_bucket.ts} | 16 +- .../{heatmap_bucket.js => heatmap_bucket.ts} | 2 - ...{line_attributes.js => line_attributes.ts} | 3 +- ...tributes_ext.js => line_attributes_ext.ts} | 3 +- .../bucket/{line_bucket.js => line_bucket.ts} | 55 ++- ...rn_attributes.js => pattern_attributes.ts} | 3 +- ...features.js => pattern_bucket_features.ts} | 6 +- ...bol_attributes.js => symbol_attributes.ts} | 4 +- .../{symbol_bucket.js => symbol_bucket.ts} | 123 ++--- src/data/{dem_data.js => dem_data.ts} | 3 +- ...ation_feature.js => evaluation_feature.ts} | 20 +- src/data/{extent.js => extent.ts} | 2 - .../{feature_index.js => feature_index.ts} | 90 ++-- ...osition_map.js => feature_position_map.ts} | 22 +- ...ndex_array_type.js => index_array_type.ts} | 8 +- .../{load_geometry.js => load_geometry.ts} | 4 +- .../{pos_attributes.js => pos_attributes.ts} | 3 +- ...figuration.js => program_configuration.ts} | 166 ++++--- ...ributes.js => raster_bounds_attributes.ts} | 3 +- src/data/{segment.js => segment.ts} | 38 +- src/geo/{edge_insets.js => edge_insets.ts} | 10 +- src/geo/{lng_lat.js => lng_lat.ts} | 16 +- .../{lng_lat_bounds.js => lng_lat_bounds.ts} | 6 +- ...r_coordinate.js => mercator_coordinate.ts} | 4 +- src/geo/{transform.js => transform.ts} | 43 +- src/gl/{color_mode.js => color_mode.ts} | 7 +- src/gl/{context.js => context.ts} | 24 +- .../{cull_face_mode.js => cull_face_mode.ts} | 8 +- src/gl/{depth_mode.js => depth_mode.ts} | 5 +- src/gl/{framebuffer.js => framebuffer.ts} | 3 +- src/gl/{index_buffer.js => index_buffer.ts} | 1 - src/gl/{stencil_mode.js => stencil_mode.ts} | 5 +- src/gl/types.js | 84 ---- src/gl/types.ts | 59 +++ src/gl/{value.js => value.ts} | 48 +- src/gl/{vertex_buffer.js => vertex_buffer.ts} | 14 +- src/{index.js => index.ts} | 8 +- ...{draw_background.js => draw_background.ts} | 2 - src/render/{draw_circle.js => draw_circle.ts} | 22 +- ...ision_debug.js => draw_collision_debug.ts} | 16 +- src/render/{draw_custom.js => draw_custom.ts} | 2 - src/render/{draw_debug.js => draw_debug.ts} | 2 - src/render/{draw_fill.js => draw_fill.ts} | 8 +- ...ll_extrusion.js => draw_fill_extrusion.ts} | 8 +- .../{draw_heatmap.js => draw_heatmap.ts} | 4 +- .../{draw_hillshade.js => draw_hillshade.ts} | 2 - src/render/{draw_line.js => draw_line.ts} | 6 +- src/render/{draw_raster.js => draw_raster.ts} | 4 +- src/render/{draw_symbol.js => draw_symbol.ts} | 43 +- src/render/{glyph_atlas.js => glyph_atlas.ts} | 28 +- .../{glyph_manager.js => glyph_manager.ts} | 68 ++- src/render/{image_atlas.js => image_atlas.ts} | 52 +- .../{image_manager.js => image_manager.ts} | 49 +- src/render/{line_atlas.js => line_atlas.ts} | 12 +- src/render/{painter.js => painter.ts} | 70 +-- src/render/{program.js => program.ts} | 52 +- src/render/program/background_program.js | 103 ---- src/render/program/background_program.ts | 100 ++++ .../{circle_program.js => circle_program.ts} | 45 +- ...sk_program.js => clipping_mask_program.ts} | 14 +- src/render/program/collision_program.js | 76 --- src/render/program/collision_program.ts | 62 +++ src/render/program/debug_program.js | 35 -- src/render/program/debug_program.ts | 28 ++ src/render/program/fill_extrusion_program.js | 122 ----- src/render/program/fill_extrusion_program.ts | 122 +++++ src/render/program/fill_program.js | 126 ----- src/render/program/fill_program.ts | 120 +++++ ...{heatmap_program.js => heatmap_program.ts} | 65 ++- ...lshade_program.js => hillshade_program.ts} | 70 ++- .../{line_program.js => line_program.ts} | 179 ++++--- src/render/program/{pattern.js => pattern.ts} | 78 +-- ...rogram_uniforms.js => program_uniforms.ts} | 4 +- src/render/program/raster_program.js | 92 ---- src/render/program/raster_program.ts | 87 ++++ src/render/program/symbol_program.js | 224 --------- src/render/program/symbol_program.ts | 226 +++++++++ src/render/{texture.js => texture.ts} | 55 +-- ...{uniform_binding.js => uniform_binding.ts} | 21 +- ...array_object.js => vertex_array_object.ts} | 34 +- ...ncode_attribute.js => encode_attribute.ts} | 4 +- src/shaders/{index.js => index.ts} | 0 src/shaders/{shaders.js => shaders.ts} | 0 .../{canvas_source.js => canvas_source.ts} | 16 +- .../{geojson_source.js => geojson_source.ts} | 19 +- ...ker_source.js => geojson_worker_source.ts} | 80 ++-- ...{geojson_wrapper.js => geojson_wrapper.ts} | 32 +- .../{image_source.js => image_source.ts} | 15 +- .../{load_tilejson.js => load_tilejson.ts} | 6 +- ..._tile_units.js => pixels_to_tile_units.ts} | 11 +- .../{query_features.js => query_features.ts} | 42 +- ...le_source.js => raster_dem_tile_source.ts} | 8 +- ...ce.js => raster_dem_tile_worker_source.ts} | 6 +- ...r_tile_source.js => raster_tile_source.ts} | 14 +- ...{rtl_text_plugin.js => rtl_text_plugin.ts} | 32 +- src/source/{source.js => source.ts} | 75 ++- .../{source_cache.js => source_cache.ts} | 74 ++- .../{source_state.js => source_state.ts} | 18 +- src/source/{tile.js => tile.ts} | 98 ++-- src/source/{tile_bounds.js => tile_bounds.ts} | 4 +- src/source/{tile_cache.js => tile_cache.ts} | 24 +- src/source/{tile_id.js => tile_id.ts} | 6 +- ...r_tile_source.js => vector_tile_source.ts} | 16 +- ...source.js => vector_tile_worker_source.ts} | 30 +- .../{video_source.js => video_source.ts} | 4 +- src/source/{worker.js => worker.ts} | 75 ++- .../{worker_source.js => worker_source.ts} | 106 +++-- src/source/{worker_tile.js => worker_tile.ts} | 30 +- src/style-spec/{composite.js => composite.ts} | 0 src/style-spec/{declass.js => declass.ts} | 0 src/style-spec/{deref.js => deref.ts} | 0 src/style-spec/{diff.js => diff.ts} | 0 src/style-spec/{empty.js => empty.ts} | 0 .../{parsing_error.js => parsing_error.ts} | 2 - ...alidation_error.js => validation_error.ts} | 10 +- ...d_expression.js => compound_expression.ts} | 33 +- .../{assertion.js => assertion.ts} | 8 +- .../expression/definitions/{at.js => at.ts} | 12 +- .../definitions/{case.js => case.ts} | 8 +- .../definitions/{coalesce.js => coalesce.ts} | 8 +- .../definitions/{coercion.js => coercion.ts} | 8 +- .../definitions/{collator.js => collator.ts} | 8 +- .../{comparison.js => comparison.ts} | 14 +- .../definitions/{format.js => format.ts} | 30 +- .../definitions/{image.js => image.ts} | 6 +- .../expression/definitions/{in.js => in.ts} | 19 +- .../definitions/{index.js => index.ts} | 65 ++- .../definitions/{index_of.js => index_of.ts} | 23 +- .../{interpolate.js => interpolate.ts} | 33 +- .../definitions/{length.js => length.ts} | 6 +- .../expression/definitions/{let.js => let.ts} | 6 +- .../definitions/{literal.js => literal.ts} | 10 +- .../definitions/{match.js => match.ts} | 24 +- .../{number_format.js => number_format.ts} | 36 +- .../definitions/{slice.js => slice.ts} | 22 +- .../definitions/{step.js => step.ts} | 10 +- .../expression/definitions/{var.js => var.ts} | 6 +- .../definitions/{within.js => within.ts} | 15 +- ...ation_context.js => evaluation_context.ts} | 22 +- src/style-spec/expression/expression.js | 27 -- src/style-spec/expression/expression.ts | 27 ++ .../expression/{index.js => index.ts} | 208 +++++--- .../{is_constant.js => is_constant.ts} | 4 +- ...{parsing_context.js => parsing_context.ts} | 33 +- .../{parsing_error.js => parsing_error.ts} | 2 - .../{runtime_error.js => runtime_error.ts} | 2 - .../expression/{scope.js => scope.ts} | 10 +- .../expression/{stops.js => stops.ts} | 2 - .../expression/{types.js => types.ts} | 77 +-- .../types/{collator.js => collator.ts} | 38 +- .../types/{formatted.js => formatted.ts} | 11 +- .../{resolved_image.js => resolved_image.ts} | 6 +- .../expression/{values.js => values.ts} | 10 +- .../feature_filter/{convert.js => convert.ts} | 30 +- .../feature_filter/{index.js => index.ts} | 20 +- src/style-spec/{format.js => format.ts} | 0 .../function/{convert.js => convert.ts} | 6 +- .../function/{index.js => index.ts} | 0 ...{group_by_layout.js => group_by_layout.ts} | 0 src/style-spec/{migrate.js => migrate.ts} | 0 .../{expressions.js => expressions.ts} | 9 +- src/style-spec/migrate/{v8.js => v8.ts} | 0 src/style-spec/migrate/{v9.js => v9.ts} | 0 .../{read_style.js => read_style.ts} | 0 .../reference/{latest.js => latest.ts} | 0 .../{rollup.config.js => rollup.config.ts} | 0 .../{style-spec.js => style-spec.ts} | 98 ++-- src/style-spec/types.js | 432 ----------------- src/style-spec/types.ts | 443 ++++++++++++++++++ src/style-spec/util/{color.js => color.ts} | 4 +- .../util/{color_spaces.js => color_spaces.ts} | 18 +- .../util/{deep_equal.js => deep_equal.ts} | 4 +- src/style-spec/util/{extend.js => extend.ts} | 4 +- .../util/{get_type.js => get_type.ts} | 4 +- .../util/{interpolate.js => interpolate.ts} | 2 - .../util/{properties.js => properties.ts} | 4 +- .../{ref_properties.js => ref_properties.ts} | 0 src/style-spec/util/{result.js => result.ts} | 12 +- ...undle_jsonlint.js => unbundle_jsonlint.ts} | 10 +- .../validate/{latest.js => latest.ts} | 0 .../validate/{validate.js => validate.ts} | 0 .../{validate_array.js => validate_array.ts} | 0 ...alidate_boolean.js => validate_boolean.ts} | 0 .../{validate_color.js => validate_color.ts} | 0 ...ate_constants.js => validate_constants.ts} | 0 .../{validate_enum.js => validate_enum.ts} | 0 ...e_expression.js => validate_expression.ts} | 4 +- ...{validate_filter.js => validate_filter.ts} | 0 ...ate_formatted.js => validate_formatted.ts} | 1 - ...idate_function.js => validate_function.ts} | 0 ...e_glyphs_url.js => validate_glyphs_url.ts} | 0 .../{validate_image.js => validate_image.ts} | 1 - .../{validate_layer.js => validate_layer.ts} | 0 ...roperty.js => validate_layout_property.ts} | 0 .../{validate_light.js => validate_light.ts} | 0 ...{validate_number.js => validate_number.ts} | 0 ...{validate_object.js => validate_object.ts} | 0 ...property.js => validate_paint_property.ts} | 0 ...idate_property.js => validate_property.ts} | 0 ...{validate_source.js => validate_source.ts} | 0 ...{validate_string.js => validate_string.ts} | 0 ...ate_style.min.js => validate_style.min.ts} | 0 .../{validate_style.js => validate_style.ts} | 0 src/style-spec/{visit.js => visit.ts} | 31 +- ...e_style_layer.js => create_style_layer.ts} | 2 - ...parameters.js => evaluation_parameters.ts} | 10 +- ...override.js => format_section_override.ts} | 4 +- src/style/{light.js => light.ts} | 29 +- ...oad_glyph_range.js => load_glyph_range.ts} | 10 +- src/style/{load_sprite.js => load_sprite.ts} | 16 +- ...{parse_glyph_pbf.js => parse_glyph_pbf.ts} | 8 +- ...le_placement.js => pauseable_placement.ts} | 18 +- src/style/{properties.js => properties.ts} | 209 ++++++--- src/style/{query_utils.js => query_utils.ts} | 12 +- src/style/{style.js => style.ts} | 129 +++-- src/style/style_glyph.js | 17 - src/style/style_glyph.ts | 15 + src/style/{style_image.js => style_image.ts} | 34 +- src/style/{style_layer.js => style_layer.ts} | 70 +-- ...yle_layer.js => background_style_layer.ts} | 2 - ...s => background_style_layer_properties.ts} | 15 +- ...e_style_layer.js => circle_style_layer.ts} | 24 +- ...es.js => circle_style_layer_properties.ts} | 40 +- ...m_style_layer.js => custom_style_layer.ts} | 18 +- ...layer.js => fill_extrusion_style_layer.ts} | 20 +- ... fill_extrusion_style_layer_properties.ts} | 25 +- ...ill_style_layer.js => fill_style_layer.ts} | 20 +- ...ties.js => fill_style_layer_properties.ts} | 32 +- ..._style_layer.js => heatmap_style_layer.ts} | 8 +- ...s.js => heatmap_style_layer_properties.ts} | 19 +- ...tyle_layer.js => hillshade_style_layer.ts} | 2 - ...js => hillshade_style_layer_properties.ts} | 21 +- ...ine_style_layer.js => line_style_layer.ts} | 26 +- ...ties.js => line_style_layer_properties.ts} | 48 +- ...r_style_layer.js => raster_style_layer.ts} | 2 - ...es.js => raster_style_layer_properties.ts} | 25 +- ...l_style_layer.js => symbol_style_layer.ts} | 14 +- ...es.js => symbol_style_layer_properties.ts} | 126 ++--- ...ed_style_layer.js => typed_style_layer.ts} | 10 +- ...le_layer_index.js => style_layer_index.ts} | 24 +- .../{validate_style.js => validate_style.ts} | 33 +- .../{zoom_history.js => zoom_history.ts} | 2 - src/symbol/{anchor.js => anchor.ts} | 2 - ...{check_max_angle.js => check_max_angle.ts} | 2 - src/symbol/{clip_line.js => clip_line.ts} | 2 - ...lision_feature.js => collision_feature.ts} | 8 +- ...{collision_index.js => collision_index.ts} | 45 +- ...ol_index.js => cross_tile_symbol_index.ts} | 44 +- src/symbol/{get_anchors.js => get_anchors.ts} | 22 +- src/symbol/{grid_index.js => grid_index.ts} | 20 +- src/symbol/{mergelines.js => mergelines.ts} | 18 +- src/symbol/{one_em.js => one_em.ts} | 1 - .../{opacity_state.js => opacity_state.ts} | 6 +- ...h_interpolator.js => path_interpolator.ts} | 8 +- src/symbol/{placement.js => placement.ts} | 144 ++++-- src/symbol/{projection.js => projection.ts} | 6 +- src/symbol/{quads.js => quads.ts} | 67 +-- src/symbol/{shaping.js => shaping.ts} | 228 +++++---- .../{symbol_layout.js => symbol_layout.ts} | 73 ++- src/symbol/{symbol_size.js => symbol_size.ts} | 51 +- .../{transform_text.js => transform_text.ts} | 4 +- src/types/{callback.js => callback.ts} | 4 +- src/types/cancelable.js | 3 - src/types/cancelable.ts | 3 + src/types/tilejson.js | 17 - src/types/tilejson.ts | 15 + .../{transferable.js => transferable.ts} | 2 - src/types/window.js | 172 ------- src/types/window.ts | 166 +++++++ src/ui/{anchor.js => anchor.ts} | 17 +- src/ui/{camera.js => camera.ts} | 107 ++--- ...tion_control.js => attribution_control.ts} | 14 +- ...creen_control.js => fullscreen_control.ts} | 40 +- ...locate_control.js => geolocate_control.ts} | 26 +- .../{logo_control.js => logo_control.ts} | 2 - ...ation_control.js => navigation_control.ts} | 16 +- .../{scale_control.js => scale_control.ts} | 12 +- .../{default_locale.js => default_locale.ts} | 2 - src/ui/{events.js => events.ts} | 286 +++++------ src/ui/handler/{box_zoom.js => box_zoom.ts} | 8 +- .../handler/{click_zoom.js => click_zoom.ts} | 2 - .../{handler_util.js => handler_util.ts} | 2 - src/ui/handler/{keyboard.js => keyboard.ts} | 2 - src/ui/handler/{map_event.js => map_event.ts} | 8 +- src/ui/handler/{mouse.js => mouse.ts} | 6 +- .../{scroll_zoom.js => scroll_zoom.ts} | 26 +- .../{dblclick_zoom.js => dblclick_zoom.ts} | 2 - .../handler/shim/{drag_pan.js => drag_pan.ts} | 14 +- .../shim/{drag_rotate.js => drag_rotate.ts} | 8 +- ...ch_zoom_rotate.js => touch_zoom_rotate.ts} | 8 +- .../{tap_drag_zoom.js => tap_drag_zoom.ts} | 4 +- .../{tap_recognizer.js => tap_recognizer.ts} | 15 +- src/ui/handler/{tap_zoom.js => tap_zoom.ts} | 4 +- src/ui/handler/{touch_pan.js => touch_pan.ts} | 10 +- ...ch_zoom_rotate.js => touch_zoom_rotate.ts} | 6 +- ...{handler_inertia.js => handler_inertia.ts} | 15 +- ...{handler_manager.js => handler_manager.ts} | 162 ++++--- src/ui/{hash.js => hash.ts} | 14 +- src/ui/{map.js => map.ts} | 210 +++++---- src/ui/{marker.js => marker.ts} | 49 +- src/ui/{popup.js => popup.ts} | 38 +- src/util/{actor.js => actor.ts} | 38 +- src/util/{ajax.js => ajax.ts} | 47 +- src/util/{browser.js => browser.ts} | 4 +- .../browser/{web_worker.js => web_worker.ts} | 6 +- src/util/browser/window.js | 6 - src/util/browser/window.ts | 5 + .../{classify_rings.js => classify_rings.ts} | 6 +- src/util/{color_ramp.js => color_ramp.ts} | 18 +- src/util/{config.js => config.ts} | 14 +- src/util/{debug.js => debug.ts} | 5 +- ...ictionary_coder.js => dictionary_coder.ts} | 6 +- src/util/{dispatcher.js => dispatcher.ts} | 10 +- src/util/{dom.js => dom.ts} | 14 +- src/util/{evented.js => evented.ts} | 33 +- ...ity.js => find_pole_of_inaccessibility.ts} | 8 +- ...l_worker_pool.js => global_worker_pool.ts} | 4 +- src/util/{image.js => image.ts} | 22 +- ...section_tests.js => intersection_tests.ts} | 4 +- ...e_block.js => is_char_in_unicode_block.ts} | 6 +- src/util/{mapbox.js => mapbox.ts} | 59 +-- ...orted.js => offscreen_canvas_supported.ts} | 3 +- src/util/{performance.js => performance.ts} | 20 +- src/util/{primitives.js => primitives.ts} | 4 +- .../{resolve_tokens.js => resolve_tokens.ts} | 8 +- ...cript_detection.js => script_detection.ts} | 2 - src/util/{sku_token.js => sku_token.ts} | 10 +- src/util/{smart_wrap.js => smart_wrap.ts} | 4 +- src/util/{struct_array.js => struct_array.ts} | 40 +- src/util/{task_queue.js => task_queue.ts} | 8 +- src/util/{throttle.js => throttle.ts} | 6 +- ...ottled_invoker.js => throttled_invoker.ts} | 4 +- ...request_cache.js => tile_request_cache.ts} | 16 +- src/util/{util.js => util.ts} | 51 +- ...to_geojson.js => vectortile_to_geojson.ts} | 25 +- ...ctuation.js => verticalize_punctuation.ts} | 6 +- src/util/{web_worker.js => web_worker.ts} | 38 +- ...ker_transfer.js => web_worker_transfer.ts} | 80 ++-- .../{webp_supported.js => webp_supported.ts} | 2 - src/util/{window.js => window.ts} | 2 - src/util/{worker_pool.js => worker_pool.ts} | 8 +- 348 files changed, 5542 insertions(+), 5018 deletions(-) rename src/data/{array_types.js => array_types.ts} (99%) rename src/data/{bucket.js => bucket.ts} (61%) rename src/data/bucket/{fill_attributes.js => circle_attributes.ts} (72%) rename src/data/bucket/{circle_bucket.js => circle_bucket.ts} (95%) rename src/data/bucket/{circle_attributes.js => fill_attributes.ts} (72%) rename src/data/bucket/{fill_bucket.js => fill_bucket.ts} (96%) rename src/data/bucket/{fill_extrusion_attributes.js => fill_extrusion_attributes.ts} (78%) rename src/data/bucket/{fill_extrusion_bucket.js => fill_extrusion_bucket.ts} (97%) rename src/data/bucket/{heatmap_bucket.js => heatmap_bucket.ts} (98%) rename src/data/bucket/{line_attributes.js => line_attributes.ts} (80%) rename src/data/bucket/{line_attributes_ext.js => line_attributes_ext.ts} (81%) rename src/data/bucket/{line_bucket.js => line_bucket.ts} (95%) rename src/data/bucket/{pattern_attributes.js => pattern_attributes.ts} (85%) rename src/data/bucket/{pattern_bucket_features.js => pattern_bucket_features.ts} (94%) rename src/data/bucket/{symbol_attributes.js => symbol_attributes.ts} (98%) rename src/data/bucket/{symbol_bucket.js => symbol_bucket.ts} (94%) rename src/data/{dem_data.js => dem_data.ts} (99%) rename src/data/{evaluation_feature.js => evaluation_feature.ts} (62%) rename src/data/{extent.js => extent.ts} (98%) rename src/data/{feature_index.js => feature_index.ts} (86%) rename src/data/{feature_position_map.js => feature_position_map.ts} (90%) rename src/data/{index_array_type.js => index_array_type.ts} (77%) rename src/data/{load_geometry.js => load_geometry.ts} (96%) rename src/data/{pos_attributes.js => pos_attributes.ts} (58%) rename src/data/{program_configuration.js => program_configuration.ts} (86%) rename src/data/{raster_bounds_attributes.js => raster_bounds_attributes.ts} (70%) rename src/data/{segment.js => segment.ts} (74%) rename src/geo/{edge_insets.js => edge_insets.ts} (93%) rename src/geo/{lng_lat.js => lng_lat.ts} (96%) rename src/geo/{lng_lat_bounds.js => lng_lat_bounds.ts} (98%) rename src/geo/{mercator_coordinate.js => mercator_coordinate.ts} (98%) rename src/geo/{transform.js => transform.ts} (97%) rename src/gl/{color_mode.js => color_mode.ts} (86%) rename src/gl/{context.js => context.ts} (95%) rename src/gl/{cull_face_mode.js => cull_face_mode.ts} (74%) rename src/gl/{depth_mode.js => depth_mode.ts} (81%) rename src/gl/{framebuffer.js => framebuffer.ts} (94%) rename src/gl/{index_buffer.js => index_buffer.ts} (99%) rename src/gl/{stencil_mode.js => stencil_mode.ts} (85%) delete mode 100644 src/gl/types.js create mode 100644 src/gl/types.ts rename src/gl/{value.js => value.ts} (91%) rename src/gl/{vertex_buffer.js => vertex_buffer.ts} (92%) rename src/{index.js => index.ts} (98%) rename src/render/{draw_background.js => draw_background.ts} (99%) rename src/render/{draw_circle.js => draw_circle.ts} (90%) rename src/render/{draw_collision_debug.js => draw_collision_debug.ts} (95%) rename src/render/{draw_custom.js => draw_custom.ts} (99%) rename src/render/{draw_debug.js => draw_debug.ts} (99%) rename src/render/{draw_fill.js => draw_fill.ts} (97%) rename src/render/{draw_fill_extrusion.js => draw_fill_extrusion.ts} (95%) rename src/render/{draw_heatmap.js => draw_heatmap.ts} (98%) rename src/render/{draw_hillshade.js => draw_hillshade.ts} (99%) rename src/render/{draw_line.js => draw_line.ts} (97%) rename src/render/{draw_raster.js => draw_raster.ts} (99%) rename src/render/{draw_symbol.js => draw_symbol.ts} (95%) rename src/render/{glyph_atlas.js => glyph_atlas.ts} (83%) rename src/render/{glyph_manager.js => glyph_manager.ts} (76%) rename src/render/{image_atlas.js => image_atlas.ts} (81%) rename src/render/{image_manager.js => image_manager.ts} (90%) rename src/render/{line_atlas.js => line_atlas.ts} (97%) rename src/render/{painter.js => painter.ts} (94%) rename src/render/{program.js => program.ts} (82%) delete mode 100644 src/render/program/background_program.js create mode 100644 src/render/program/background_program.ts rename src/render/program/{circle_program.js => circle_program.ts} (63%) rename src/render/program/{clipping_mask_program.js => clipping_mask_program.ts} (63%) delete mode 100644 src/render/program/collision_program.js create mode 100644 src/render/program/collision_program.ts delete mode 100644 src/render/program/debug_program.js create mode 100644 src/render/program/debug_program.ts delete mode 100644 src/render/program/fill_extrusion_program.js create mode 100644 src/render/program/fill_extrusion_program.ts delete mode 100644 src/render/program/fill_program.js create mode 100644 src/render/program/fill_program.ts rename src/render/program/{heatmap_program.js => heatmap_program.ts} (50%) rename src/render/program/{hillshade_program.js => hillshade_program.ts} (64%) rename src/render/program/{line_program.js => line_program.ts} (50%) rename src/render/program/{pattern.js => pattern.ts} (67%) rename src/render/program/{program_uniforms.js => program_uniforms.ts} (94%) delete mode 100644 src/render/program/raster_program.js create mode 100644 src/render/program/raster_program.ts delete mode 100644 src/render/program/symbol_program.js create mode 100644 src/render/program/symbol_program.ts rename src/render/{texture.js => texture.ts} (74%) rename src/render/{uniform_binding.js => uniform_binding.ts} (89%) rename src/render/{vertex_array_object.js => vertex_array_object.ts} (86%) rename src/shaders/{encode_attribute.js => encode_attribute.ts} (89%) rename src/shaders/{index.js => index.ts} (100%) rename src/shaders/{shaders.js => shaders.ts} (100%) rename src/source/{canvas_source.js => canvas_source.ts} (96%) rename src/source/{geojson_source.js => geojson_source.ts} (96%) rename src/source/{geojson_worker_source.js => geojson_worker_source.ts} (87%) rename src/source/{geojson_wrapper.js => geojson_wrapper.ts} (86%) rename src/source/{image_source.js => image_source.ts} (98%) rename src/source/{load_tilejson.js => load_tilejson.ts} (91%) rename src/source/{pixels_to_tile_units.js => pixels_to_tile_units.ts} (80%) rename src/source/{query_features.js => query_features.ts} (85%) rename src/source/{raster_dem_tile_source.js => raster_dem_tile_source.ts} (97%) rename src/source/{raster_dem_tile_worker_source.js => raster_dem_tile_worker_source.ts} (98%) rename src/source/{raster_tile_source.js => raster_tile_source.ts} (94%) rename src/source/{rtl_text_plugin.js => rtl_text_plugin.ts} (83%) rename src/source/{source.js => source.ts} (77%) rename src/source/{source_cache.js => source_cache.ts} (95%) rename src/source/{source_state.js => source_state.ts} (96%) rename src/source/{tile.js => tile.ts} (87%) rename src/source/{tile_bounds.js => tile_bounds.ts} (96%) rename src/source/{tile_cache.js => tile_cache.ts} (91%) rename src/source/{tile_id.js => tile_id.ts} (98%) rename src/source/{vector_tile_source.js => vector_tile_source.ts} (95%) rename src/source/{vector_tile_worker_source.js => vector_tile_worker_source.ts} (91%) rename src/source/{video_source.js => video_source.ts} (98%) rename src/source/{worker.js => worker.ts} (81%) rename src/source/{worker_source.js => worker_source.ts} (53%) rename src/source/{worker_tile.js => worker_tile.ts} (92%) rename src/style-spec/{composite.js => composite.ts} (100%) rename src/style-spec/{declass.js => declass.ts} (100%) rename src/style-spec/{deref.js => deref.ts} (100%) rename src/style-spec/{diff.js => diff.ts} (100%) rename src/style-spec/{empty.js => empty.ts} (100%) rename src/style-spec/error/{parsing_error.js => parsing_error.ts} (97%) rename src/style-spec/error/{validation_error.js => validation_error.ts} (61%) rename src/style-spec/expression/{compound_expression.js => compound_expression.ts} (89%) rename src/style-spec/expression/definitions/{assertion.js => assertion.ts} (95%) rename src/style-spec/expression/definitions/{at.js => at.ts} (83%) rename src/style-spec/expression/definitions/{case.js => case.ts} (92%) rename src/style-spec/expression/definitions/{coalesce.js => coalesce.ts} (94%) rename src/style-spec/expression/definitions/{coercion.js => coercion.ts} (94%) rename src/style-spec/expression/definitions/{collator.js => collator.ts} (92%) rename src/style-spec/expression/definitions/{comparison.js => comparison.ts} (93%) rename src/style-spec/expression/definitions/{format.js => format.ts} (90%) rename src/style-spec/expression/definitions/{image.js => image.ts} (89%) rename src/style-spec/expression/definitions/{in.js => in.ts} (85%) rename src/style-spec/expression/definitions/{index.js => index.ts} (90%) rename src/style-spec/expression/definitions/{index_of.js => index_of.ts} (85%) rename src/style-spec/expression/definitions/{interpolate.js => interpolate.ts} (91%) rename src/style-spec/expression/definitions/{length.js => length.ts} (92%) rename src/style-spec/expression/definitions/{let.js => let.ts} (94%) rename src/style-spec/expression/definitions/{literal.js => literal.ts} (91%) rename src/style-spec/expression/definitions/{match.js => match.ts} (90%) rename src/style-spec/expression/definitions/{number_format.js => number_format.ts} (85%) rename src/style-spec/expression/definitions/{slice.js => slice.ts} (84%) rename src/style-spec/expression/definitions/{step.js => step.ts} (93%) rename src/style-spec/expression/definitions/{var.js => var.ts} (90%) rename src/style-spec/expression/definitions/{within.js => within.ts} (97%) rename src/style-spec/expression/{evaluation_context.js => evaluation_context.ts} (73%) delete mode 100644 src/style-spec/expression/expression.js create mode 100644 src/style-spec/expression/expression.ts rename src/style-spec/expression/{index.js => index.ts} (69%) rename src/style-spec/expression/{is_constant.js => is_constant.ts} (96%) rename src/style-spec/expression/{parsing_context.js => parsing_context.ts} (92%) rename src/style-spec/expression/{parsing_error.js => parsing_error.ts} (95%) rename src/style-spec/expression/{runtime_error.js => runtime_error.ts} (96%) rename src/style-spec/expression/{scope.js => scope.ts} (85%) rename src/style-spec/expression/{stops.js => stops.ts} (99%) rename src/style-spec/expression/{types.js => types.ts} (69%) rename src/style-spec/expression/types/{collator.js => collator.ts} (64%) rename src/style-spec/expression/types/{formatted.js => formatted.ts} (88%) rename src/style-spec/expression/types/{resolved_image.js => resolved_image.ts} (91%) rename src/style-spec/expression/{values.js => values.ts} (93%) rename src/style-spec/feature_filter/{convert.js => convert.ts} (90%) rename src/style-spec/feature_filter/{index.js => index.ts} (93%) rename src/style-spec/{format.js => format.ts} (100%) rename src/style-spec/function/{convert.js => convert.ts} (98%) rename src/style-spec/function/{index.js => index.ts} (100%) rename src/style-spec/{group_by_layout.js => group_by_layout.ts} (100%) rename src/style-spec/{migrate.js => migrate.ts} (100%) rename src/style-spec/migrate/{expressions.js => expressions.ts} (88%) rename src/style-spec/migrate/{v8.js => v8.ts} (100%) rename src/style-spec/migrate/{v9.js => v9.ts} (100%) rename src/style-spec/{read_style.js => read_style.ts} (100%) rename src/style-spec/reference/{latest.js => latest.ts} (100%) rename src/style-spec/{rollup.config.js => rollup.config.ts} (100%) rename src/style-spec/{style-spec.js => style-spec.ts} (53%) delete mode 100644 src/style-spec/types.js create mode 100644 src/style-spec/types.ts rename src/style-spec/util/{color.js => color.ts} (97%) rename src/style-spec/util/{color_spaces.js => color_spaces.ts} (96%) rename src/style-spec/util/{deep_equal.js => deep_equal.ts} (90%) rename src/style-spec/util/{extend.js => extend.ts} (65%) rename src/style-spec/util/{get_type.js => get_type.ts} (84%) rename src/style-spec/util/{interpolate.js => interpolate.ts} (98%) rename src/style-spec/util/{properties.js => properties.ts} (87%) rename src/style-spec/util/{ref_properties.js => ref_properties.ts} (100%) rename src/style-spec/util/{result.js => result.ts} (77%) rename src/style-spec/util/{unbundle_jsonlint.js => unbundle_jsonlint.ts} (77%) rename src/style-spec/validate/{latest.js => latest.ts} (100%) rename src/style-spec/validate/{validate.js => validate.ts} (100%) rename src/style-spec/validate/{validate_array.js => validate_array.ts} (100%) rename src/style-spec/validate/{validate_boolean.js => validate_boolean.ts} (100%) rename src/style-spec/validate/{validate_color.js => validate_color.ts} (100%) rename src/style-spec/validate/{validate_constants.js => validate_constants.ts} (100%) rename src/style-spec/validate/{validate_enum.js => validate_enum.ts} (100%) rename src/style-spec/validate/{validate_expression.js => validate_expression.ts} (94%) rename src/style-spec/validate/{validate_filter.js => validate_filter.ts} (100%) rename src/style-spec/validate/{validate_formatted.js => validate_formatted.ts} (96%) rename src/style-spec/validate/{validate_function.js => validate_function.ts} (100%) rename src/style-spec/validate/{validate_glyphs_url.js => validate_glyphs_url.ts} (100%) rename src/style-spec/validate/{validate_image.js => validate_image.ts} (96%) rename src/style-spec/validate/{validate_layer.js => validate_layer.ts} (100%) rename src/style-spec/validate/{validate_layout_property.js => validate_layout_property.ts} (100%) rename src/style-spec/validate/{validate_light.js => validate_light.ts} (100%) rename src/style-spec/validate/{validate_number.js => validate_number.ts} (100%) rename src/style-spec/validate/{validate_object.js => validate_object.ts} (100%) rename src/style-spec/validate/{validate_paint_property.js => validate_paint_property.ts} (100%) rename src/style-spec/validate/{validate_property.js => validate_property.ts} (100%) rename src/style-spec/validate/{validate_source.js => validate_source.ts} (100%) rename src/style-spec/validate/{validate_string.js => validate_string.ts} (100%) rename src/style-spec/{validate_style.min.js => validate_style.min.ts} (100%) rename src/style-spec/{validate_style.js => validate_style.ts} (100%) rename src/style-spec/{visit.js => visit.ts} (70%) rename src/style/{create_style_layer.js => create_style_layer.ts} (99%) rename src/style/{evaluation_parameters.js => evaluation_parameters.ts} (93%) rename src/style/{format_section_override.js => format_section_override.ts} (95%) rename src/style/{light.js => light.ts} (88%) rename src/style/{load_glyph_range.js => load_glyph_range.ts} (77%) rename src/style/{load_sprite.js => load_sprite.ts} (85%) rename src/style/{parse_glyph_pbf.js => parse_glyph_pbf.ts} (86%) rename src/style/{pauseable_placement.js => pauseable_placement.ts} (91%) rename src/style/{properties.js => properties.ts} (82%) rename src/style/{query_utils.js => query_utils.ts} (80%) rename src/style/{style.js => style.ts} (94%) delete mode 100644 src/style/style_glyph.js create mode 100644 src/style/style_glyph.ts rename src/style/{style_image.js => style_image.ts} (87%) rename src/style/{style_layer.js => style_layer.ts} (83%) rename src/style/style_layer/{background_style_layer.js => background_style_layer.ts} (98%) rename src/style/style_layer/{background_style_layer_properties.js => background_style_layer_properties.ts} (82%) rename src/style/style_layer/{circle_style_layer.js => circle_style_layer.ts} (88%) rename src/style/style_layer/{circle_style_layer_properties.js => circle_style_layer_properties.ts} (70%) rename src/style/style_layer/{custom_style_layer.js => custom_style_layer.ts} (96%) rename src/style/style_layer/{fill_extrusion_style_layer.js => fill_extrusion_style_layer.ts} (94%) rename src/style/style_layer/{fill_extrusion_style_layer_properties.js => fill_extrusion_style_layer_properties.ts} (75%) rename src/style/style_layer/{fill_style_layer.js => fill_style_layer.ts} (82%) rename src/style/style_layer/{fill_style_layer_properties.js => fill_style_layer_properties.ts} (71%) rename src/style/style_layer/{heatmap_style_layer.js => heatmap_style_layer.ts} (93%) rename src/style/style_layer/{heatmap_style_layer_properties.js => heatmap_style_layer_properties.ts} (80%) rename src/style/style_layer/{hillshade_style_layer.js => hillshade_style_layer.ts} (98%) rename src/style/style_layer/{hillshade_style_layer_properties.js => hillshade_style_layer_properties.ts} (77%) rename src/style/style_layer/{line_style_layer.js => line_style_layer.ts} (88%) rename src/style/style_layer/{line_style_layer_properties.js => line_style_layer_properties.ts} (68%) rename src/style/style_layer/{raster_style_layer.js => raster_style_layer.ts} (98%) rename src/style/style_layer/{raster_style_layer_properties.js => raster_style_layer_properties.ts} (75%) rename src/style/style_layer/{symbol_style_layer.js => symbol_style_layer.ts} (94%) rename src/style/style_layer/{symbol_style_layer_properties.js => symbol_style_layer_properties.ts} (62%) rename src/style/style_layer/{typed_style_layer.js => typed_style_layer.ts} (67%) rename src/style/{style_layer_index.js => style_layer_index.ts} (84%) rename src/style/{validate_style.js => validate_style.ts} (61%) rename src/style/{zoom_history.js => zoom_history.ts} (99%) rename src/symbol/{anchor.js => anchor.ts} (98%) rename src/symbol/{check_max_angle.js => check_max_angle.ts} (99%) rename src/symbol/{clip_line.js => clip_line.ts} (99%) rename src/symbol/{collision_feature.js => collision_feature.ts} (96%) rename src/symbol/{collision_index.js => collision_index.ts} (94%) rename src/symbol/{cross_tile_symbol_index.js => cross_tile_symbol_index.ts} (93%) rename src/symbol/{get_anchors.js => get_anchors.ts} (91%) rename src/symbol/{grid_index.js => grid_index.ts} (96%) rename src/symbol/{mergelines.js => mergelines.ts} (88%) rename src/symbol/{one_em.js => one_em.ts} (93%) rename src/symbol/{opacity_state.js => opacity_state.ts} (84%) rename src/symbol/{path_interpolator.js => path_interpolator.ts} (91%) rename src/symbol/{placement.js => placement.ts} (94%) rename src/symbol/{projection.js => projection.ts} (99%) rename src/symbol/{quads.js => quads.ts} (93%) rename src/symbol/{shaping.js => shaping.ts} (86%) rename src/symbol/{symbol_layout.js => symbol_layout.ts} (93%) rename src/symbol/{symbol_size.js => symbol_size.ts} (75%) rename src/symbol/{transform_text.js => transform_text.ts} (92%) rename src/types/{callback.js => callback.ts} (86%) delete mode 100644 src/types/cancelable.js create mode 100644 src/types/cancelable.ts delete mode 100644 src/types/tilejson.js create mode 100644 src/types/tilejson.ts rename src/types/{transferable.js => transferable.ts} (87%) delete mode 100644 src/types/window.js create mode 100644 src/types/window.ts rename src/ui/{anchor.js => anchor.ts} (75%) rename src/ui/{camera.js => camera.ts} (95%) rename src/ui/control/{attribution_control.js => attribution_control.ts} (97%) rename src/ui/control/{fullscreen_control.js => fullscreen_control.ts} (80%) rename src/ui/control/{geolocate_control.js => geolocate_control.ts} (98%) rename src/ui/control/{logo_control.js => logo_control.ts} (99%) rename src/ui/control/{navigation_control.js => navigation_control.ts} (96%) rename src/ui/control/{scale_control.js => scale_control.ts} (95%) rename src/ui/{default_locale.js => default_locale.ts} (98%) rename src/ui/{events.js => events.ts} (94%) rename src/ui/handler/{box_zoom.js => box_zoom.ts} (97%) rename src/ui/handler/{click_zoom.js => click_zoom.ts} (98%) rename src/ui/handler/{handler_util.js => handler_util.ts} (96%) rename src/ui/handler/{keyboard.js => keyboard.ts} (99%) rename src/ui/handler/{map_event.js => map_event.ts} (96%) rename src/ui/handler/{mouse.js => mouse.ts} (98%) rename src/ui/handler/{scroll_zoom.js => scroll_zoom.ts} (94%) rename src/ui/handler/shim/{dblclick_zoom.js => dblclick_zoom.ts} (99%) rename src/ui/handler/shim/{drag_pan.js => drag_pan.ts} (92%) rename src/ui/handler/shim/{drag_rotate.js => drag_rotate.ts} (90%) rename src/ui/handler/shim/{touch_zoom_rotate.js => touch_zoom_rotate.ts} (95%) rename src/ui/handler/{tap_drag_zoom.js => tap_drag_zoom.ts} (96%) rename src/ui/handler/{tap_recognizer.js => tap_recognizer.ts} (94%) rename src/ui/handler/{tap_zoom.js => tap_zoom.ts} (97%) rename src/ui/handler/{touch_pan.js => touch_pan.ts} (95%) rename src/ui/handler/{touch_zoom_rotate.js => touch_zoom_rotate.ts} (99%) rename src/ui/{handler_inertia.js => handler_inertia.ts} (96%) rename src/ui/{handler_manager.js => handler_manager.ts} (81%) rename src/ui/{hash.js => hash.ts} (93%) rename src/ui/{map.js => map.ts} (96%) rename src/ui/{marker.js => marker.ts} (96%) rename src/ui/{popup.js => popup.ts} (97%) rename src/util/{actor.js => actor.ts} (89%) rename src/util/{ajax.js => ajax.ts} (92%) rename src/util/{browser.js => browser.ts} (95%) rename src/util/browser/{web_worker.js => web_worker.ts} (51%) delete mode 100644 src/util/browser/window.js create mode 100644 src/util/browser/window.ts rename src/util/{classify_rings.js => classify_rings.ts} (92%) rename src/util/{color_ramp.js => color_ramp.ts} (87%) rename src/util/{config.js => config.ts} (83%) rename src/util/{debug.js => debug.ts} (84%) rename src/util/{dictionary_coder.js => dictionary_coder.ts} (91%) rename src/util/{dispatcher.js => dispatcher.ts} (91%) rename src/util/{dom.js => dom.ts} (91%) rename src/util/{evented.js => evented.ts} (88%) rename src/util/{find_pole_of_inaccessibility.js => find_pole_of_inaccessibility.ts} (97%) rename src/util/{global_worker_pool.js => global_worker_pool.ts} (93%) rename src/util/{image.js => image.ts} (91%) rename src/util/{intersection_tests.js => intersection_tests.ts} (99%) rename src/util/{is_char_in_unicode_block.js => is_char_in_unicode_block.ts} (99%) rename src/util/{mapbox.js => mapbox.ts} (93%) rename src/util/{offscreen_canvas_supported.js => offscreen_canvas_supported.ts} (86%) rename src/util/{performance.js => performance.ts} (93%) rename src/util/{primitives.js => primitives.ts} (98%) rename src/util/{resolve_tokens.js => resolve_tokens.ts} (79%) rename src/util/{script_detection.js => script_detection.ts} (99%) rename src/util/{sku_token.js => sku_token.ts} (94%) rename src/util/{smart_wrap.js => smart_wrap.ts} (94%) rename src/util/{struct_array.js => struct_array.ts} (93%) rename src/util/{task_queue.js => task_queue.ts} (94%) rename src/util/{throttle.js => throttle.ts} (84%) rename src/util/{throttled_invoker.js => throttled_invoker.ts} (97%) rename src/util/{tile_request_cache.js => tile_request_cache.ts} (93%) rename src/util/{util.js => util.ts} (92%) rename src/util/{vectortile_to_geojson.js => vectortile_to_geojson.ts} (59%) rename src/util/{verticalize_punctuation.js => verticalize_punctuation.ts} (96%) rename src/util/{web_worker.js => web_worker.ts} (75%) rename src/util/{web_worker_transfer.js => web_worker_transfer.ts} (82%) rename src/util/{webp_supported.js => webp_supported.ts} (99%) rename src/util/{window.js => window.ts} (99%) rename src/util/{worker_pool.js => worker_pool.ts} (93%) diff --git a/src/data/array_types.js b/src/data/array_types.ts similarity index 99% rename from src/data/array_types.js rename to src/data/array_types.ts index bc15e318b2..238d75449b 100644 --- a/src/data/array_types.js +++ b/src/data/array_types.ts @@ -1,6 +1,4 @@ // This file is generated. Edit build/generate-struct-arrays.js, then run `yarn run codegen`. -// @flow - import assert from 'assert'; import {Struct, StructArray} from '../util/struct_array'; import {register} from '../util/web_worker_transfer'; diff --git a/src/data/bucket.js b/src/data/bucket.ts similarity index 61% rename from src/data/bucket.js rename to src/data/bucket.ts index 5bbe276d4b..f98d2f166b 100644 --- a/src/data/bucket.js +++ b/src/data/bucket.ts @@ -1,6 +1,4 @@ -// @flow - -import type {CollisionBoxArray} from './array_types'; +import type { CollisionBoxArray } from './array_types'; import type Style from '../style/style'; import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer'; import type FeatureIndex from './feature_index'; @@ -9,42 +7,48 @@ import type {FeatureStates} from '../source/source_state'; import type {ImagePosition} from '../render/image_atlas'; import type {CanonicalTileID} from '../source/tile_id'; -export type BucketParameters = { - index: number, - layers: Array, - zoom: number, - pixelRatio: number, - overscaling: number, - collisionBoxArray: CollisionBoxArray, - sourceLayerIndex: number, - sourceID: string -} +export type BucketParameters = { + index: number, + layers: Array, + zoom: number, + pixelRatio: number, + overscaling: number, + collisionBoxArray: CollisionBoxArray, + sourceLayerIndex: number, + sourceID: string +}; export type PopulateParameters = { - featureIndex: FeatureIndex, - iconDependencies: {}, - patternDependencies: {}, - glyphDependencies: {}, - availableImages: Array -} + featureIndex: FeatureIndex, + iconDependencies: {}, + patternDependencies: {}, + glyphDependencies: {}, + availableImages: Array +}; export type IndexedFeature = { - feature: VectorTileFeature, - id: number | string, - index: number, - sourceLayerIndex: number, -} + feature: VectorTileFeature, + id: number | string, + index: number, + sourceLayerIndex: number +}; -export type BucketFeature = {| - index: number, - sourceLayerIndex: number, - geometry: Array>, - properties: Object, - type: 1 | 2 | 3, - id?: any, - +patterns: {[_: string]: {"min": string, "mid": string, "max": string}}, - sortKey?: number -|}; +export type BucketFeature = { + index: number, + sourceLayerIndex: number, + geometry: Array>, + properties: any, + type: 1 | 2 | 3, + id?: any, + readonly patterns: { + [_: string]: { + "min": string, + "mid": string, + "max": string + } + }, + sortKey?: number +}; /** * The `Bucket` interface is the single point of knowledge about turning vector @@ -70,29 +74,39 @@ export type BucketFeature = {| * @private */ export interface Bucket { - layerIds: Array; - hasPattern: boolean; - +layers: Array; - +stateDependentLayers: Array; - +stateDependentLayerIds: Array; - populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID): void; - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}): void; - isEmpty(): boolean; - - upload(context: Context): void; - uploadPending(): boolean; - - /** + layerIds: Array; + hasPattern: boolean; + readonly layers: Array; + readonly stateDependentLayers: Array; + readonly stateDependentLayerIds: Array; + populate( + features: Array, + options: PopulateParameters, + canonical: CanonicalTileID + ): void; + update( + states: FeatureStates, + vtLayer: VectorTileLayer, + imagePositions: { + [_: string]: ImagePosition + } + ): void; + isEmpty(): boolean; + upload(context: Context): void; + uploadPending(): boolean; + /** * Release the WebGL resources associated with the buffers. Note that because * buckets are shared between layers having the same layout properties, they * must be destroyed in groups (all buckets for a tile, or all symbol buckets). * * @private */ - destroy(): void; + destroy(): void; } -export function deserialize(input: Array, style: Style): {[_: string]: Bucket} { +export function deserialize(input: Array, style: Style): { + [_: string]: Bucket +} { const output = {}; // Guard against the case where the map's style has been set to null while @@ -110,9 +124,9 @@ export function deserialize(input: Array, style: Style): {[_: string]: B // look up StyleLayer objects from layer ids (since we don't // want to waste time serializing/copying them from the worker) - (bucket: any).layers = layers; - if ((bucket: any).stateDependentLayerIds) { - (bucket: any).stateDependentLayers = (bucket: any).stateDependentLayerIds.map((lId) => layers.filter((l) => l.id === lId)[0]); + (bucket as any).layers = layers; + if ((bucket as any).stateDependentLayerIds) { + (bucket as any).stateDependentLayers = (bucket as any).stateDependentLayerIds.map((lId) => layers.filter((l) => l.id === lId)[0]); } for (const layer of layers) { output[layer.id] = bucket; diff --git a/src/data/bucket/fill_attributes.js b/src/data/bucket/circle_attributes.ts similarity index 72% rename from src/data/bucket/fill_attributes.js rename to src/data/bucket/circle_attributes.ts index e2334a28e5..d3b913a667 100644 --- a/src/data/bucket/fill_attributes.js +++ b/src/data/bucket/circle_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'} diff --git a/src/data/bucket/circle_bucket.js b/src/data/bucket/circle_bucket.ts similarity index 95% rename from src/data/bucket/circle_bucket.js rename to src/data/bucket/circle_bucket.ts index 235eeb09a8..8d32a306b6 100644 --- a/src/data/bucket/circle_bucket.js +++ b/src/data/bucket/circle_bucket.ts @@ -1,6 +1,4 @@ -// @flow - -import {CircleLayoutArray} from '../array_types'; +import { CircleLayoutArray } from '../array_types'; import {members as layoutAttributes} from './circle_attributes'; import SegmentVector from '../segment'; @@ -42,7 +40,7 @@ function addCircleVertex(layoutVertexArray, x, y, extrudeX, extrudeY) { * vector that is where it points. * @private */ -class CircleBucket implements Bucket { +class CircleBucket implements Bucket { index: number; zoom: number; overscaling: number; @@ -85,7 +83,7 @@ class CircleBucket implements Bucke // Heatmap layers are handled in this bucket and have no evaluated properties, so we check our access if (styleLayer.type === 'circle') { - circleSortKey = ((styleLayer: any): CircleStyleLayer).layout.get('circle-sort-key'); + circleSortKey = (styleLayer as any as CircleStyleLayer).layout.get('circle-sort-key'); sortFeaturesByKey = !circleSortKey.isConstant(); } @@ -118,7 +116,7 @@ class CircleBucket implements Bucke if (sortFeaturesByKey) { bucketFeatures.sort((a, b) => { // a.sortKey is always a number when in use - return ((a.sortKey: any): number) - ((b.sortKey: any): number); + return (a.sortKey as any as number) - (b.sortKey as any as number); }); } @@ -131,7 +129,9 @@ class CircleBucket implements Bucke } } - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) { + update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: { + [_: string]: ImagePosition + }) { if (!this.stateDependentLayers.length) return; this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions); } diff --git a/src/data/bucket/circle_attributes.js b/src/data/bucket/fill_attributes.ts similarity index 72% rename from src/data/bucket/circle_attributes.js rename to src/data/bucket/fill_attributes.ts index e2334a28e5..d3b913a667 100644 --- a/src/data/bucket/circle_attributes.js +++ b/src/data/bucket/fill_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'} diff --git a/src/data/bucket/fill_bucket.js b/src/data/bucket/fill_bucket.ts similarity index 96% rename from src/data/bucket/fill_bucket.js rename to src/data/bucket/fill_bucket.ts index a793fea15b..cefb39ecc5 100644 --- a/src/data/bucket/fill_bucket.js +++ b/src/data/bucket/fill_bucket.ts @@ -1,6 +1,4 @@ -// @flow - -import {FillLayoutArray} from '../array_types'; +import { FillLayoutArray } from '../array_types'; import {members as layoutAttributes} from './fill_attributes'; import SegmentVector from '../segment'; @@ -108,7 +106,7 @@ class FillBucket implements Bucket { if (sortFeaturesByKey) { bucketFeatures.sort((a, b) => { // a.sortKey is always a number when in use - return ((a.sortKey: any): number) - ((b.sortKey: any): number); + return (a.sortKey as any as number) - (b.sortKey as any as number); }); } @@ -129,12 +127,16 @@ class FillBucket implements Bucket { } } - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) { + update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: { + [_: string]: ImagePosition + }) { if (!this.stateDependentLayers.length) return; this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions); } - addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { for (const feature of this.patternFeatures) { this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions); } @@ -167,7 +169,9 @@ class FillBucket implements Bucket { this.segments2.destroy(); } - addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { for (const polygon of classifyRings(geometry, EARCUT_MAX_RINGS)) { let numVertices = 0; for (const ring of polygon) { diff --git a/src/data/bucket/fill_extrusion_attributes.js b/src/data/bucket/fill_extrusion_attributes.ts similarity index 78% rename from src/data/bucket/fill_extrusion_attributes.js rename to src/data/bucket/fill_extrusion_attributes.ts index f8c6d70afd..cbf3d68af0 100644 --- a/src/data/bucket/fill_extrusion_attributes.js +++ b/src/data/bucket/fill_extrusion_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'}, diff --git a/src/data/bucket/fill_extrusion_bucket.js b/src/data/bucket/fill_extrusion_bucket.ts similarity index 97% rename from src/data/bucket/fill_extrusion_bucket.js rename to src/data/bucket/fill_extrusion_bucket.ts index b45ba4b2ce..e76ac03a96 100644 --- a/src/data/bucket/fill_extrusion_bucket.js +++ b/src/data/bucket/fill_extrusion_bucket.ts @@ -1,6 +1,4 @@ -// @flow - -import {FillExtrusionLayoutArray} from '../array_types'; +import { FillExtrusionLayoutArray } from '../array_types'; import {members as layoutAttributes} from './fill_extrusion_attributes'; import SegmentVector from '../segment'; @@ -119,14 +117,18 @@ class FillExtrusionBucket implements Bucket { } } - addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { for (const feature of this.features) { const {geometry} = feature; this.addFeature(feature, geometry, feature.index, canonical, imagePositions); } } - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) { + update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: { + [_: string]: ImagePosition + }) { if (!this.stateDependentLayers.length) return; this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions); } @@ -156,7 +158,9 @@ class FillExtrusionBucket implements Bucket { this.segments.destroy(); } - addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { for (const polygon of classifyRings(geometry, EARCUT_MAX_RINGS)) { let numVertices = 0; for (const ring of polygon) { diff --git a/src/data/bucket/heatmap_bucket.js b/src/data/bucket/heatmap_bucket.ts similarity index 98% rename from src/data/bucket/heatmap_bucket.js rename to src/data/bucket/heatmap_bucket.ts index 2ac11756e7..e1b252352d 100644 --- a/src/data/bucket/heatmap_bucket.js +++ b/src/data/bucket/heatmap_bucket.ts @@ -1,5 +1,3 @@ -// @flow - import CircleBucket from './circle_bucket'; import {register} from '../../util/web_worker_transfer'; diff --git a/src/data/bucket/line_attributes.js b/src/data/bucket/line_attributes.ts similarity index 80% rename from src/data/bucket/line_attributes.js rename to src/data/bucket/line_attributes.ts index 51678b408e..0cc629f5eb 100644 --- a/src/data/bucket/line_attributes.js +++ b/src/data/bucket/line_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const lineLayoutAttributes = createLayout([ {name: 'a_pos_normal', components: 2, type: 'Int16'}, diff --git a/src/data/bucket/line_attributes_ext.js b/src/data/bucket/line_attributes_ext.ts similarity index 81% rename from src/data/bucket/line_attributes_ext.js rename to src/data/bucket/line_attributes_ext.ts index d963b19957..8bc44461de 100644 --- a/src/data/bucket/line_attributes_ext.js +++ b/src/data/bucket/line_attributes_ext.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const lineLayoutAttributesExt = createLayout([ {name: 'a_uv_x', components: 1, type: 'Float32'}, diff --git a/src/data/bucket/line_bucket.js b/src/data/bucket/line_bucket.ts similarity index 95% rename from src/data/bucket/line_bucket.js rename to src/data/bucket/line_bucket.ts index c1339aff4e..63ca5f4d8e 100644 --- a/src/data/bucket/line_bucket.js +++ b/src/data/bucket/line_bucket.ts @@ -1,6 +1,4 @@ -// @flow - -import {LineLayoutArray, LineExtLayoutArray} from '../array_types'; +import { LineLayoutArray, LineExtLayoutArray } from '../array_types'; import {members as layoutAttributes} from './line_attributes'; import {members as layoutAttributesExt} from './line_attributes_ext'; @@ -72,15 +70,15 @@ const LINE_DISTANCE_SCALE = 1 / 2; const MAX_LINE_DISTANCE = Math.pow(2, LINE_DISTANCE_BUFFER_BITS - 1) / LINE_DISTANCE_SCALE; type LineClips = { - start: number; - end: number; -} + start: number, + end: number +}; type GradientTexture = { - texture: Texture; - gradient: ?RGBAImage; - version: number; -} + texture: Texture, + gradient: RGBAImage | undefined | null, + version: number +}; /** * @private @@ -90,7 +88,7 @@ class LineBucket implements Bucket { totalDistance: number; maxLineLength: number; scaledDistance: number; - lineClips: ?LineClips; + lineClips: LineClips | undefined | null; e1: number; e2: number; @@ -100,7 +98,9 @@ class LineBucket implements Bucket { overscaling: number; layers: Array; layerIds: Array; - gradients: {[string]: GradientTexture}; + gradients: { + [x: string]: GradientTexture + }; stateDependentLayers: Array; stateDependentLayerIds: Array; patternFeatures: Array; @@ -176,7 +176,7 @@ class LineBucket implements Bucket { if (sortFeaturesByKey) { bucketFeatures.sort((a, b) => { // a.sortKey is always a number when in use - return ((a.sortKey: any): number) - ((b.sortKey: any): number); + return (a.sortKey as any as number) - (b.sortKey as any as number); }); } @@ -197,12 +197,16 @@ class LineBucket implements Bucket { } } - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) { + update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: { + [_: string]: ImagePosition + }) { if (!this.stateDependentLayers.length) return; this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions); } - addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { for (const feature of this.patternFeatures) { this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions); } @@ -236,7 +240,7 @@ class LineBucket implements Bucket { this.segments.destroy(); } - lineFeatureClips(feature: BucketFeature): ?LineClips { + lineFeatureClips(feature: BucketFeature): LineClips | undefined | null { if (!!feature.properties && feature.properties.hasOwnProperty('mapbox_clip_start') && feature.properties.hasOwnProperty('mapbox_clip_end')) { const start = +feature.properties['mapbox_clip_start']; const end = +feature.properties['mapbox_clip_end']; @@ -244,7 +248,9 @@ class LineBucket implements Bucket { } } - addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) { + addFeature(feature: BucketFeature, geometry: Array>, index: number, canonical: CanonicalTileID, imagePositions: { + [_: string]: ImagePosition + }) { const layout = this.layers[0].layout; const join = layout.get('line-join').evaluate(feature, {}); const cap = layout.get('line-cap'); @@ -299,10 +305,10 @@ class LineBucket implements Bucket { const segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray); let currentVertex; - let prevVertex = ((undefined: any): Point); - let nextVertex = ((undefined: any): Point); - let prevNormal = ((undefined: any): Point); - let nextNormal = ((undefined: any): Point); + let prevVertex = (undefined as any as Point); + let nextVertex = (undefined as any as Point); + let prevNormal = (undefined as any as Point); + let nextNormal = (undefined as any as Point); // the last two vertices added this.e1 = this.e2 = -1; @@ -315,7 +321,7 @@ class LineBucket implements Bucket { for (let i = first; i < len; i++) { nextVertex = i === len - 1 ? - (isPolygon ? vertices[first + 1] : (undefined: any)) : // if it's a polygon, treat the last vertex like the first + (isPolygon ? vertices[first + 1] : (undefined as any)) : // if it's a polygon, treat the last vertex like the first vertices[i + 1]; // just the next vertex // if two consecutive vertices exist, skip the current one @@ -533,7 +539,10 @@ class LineBucket implements Bucket { } } - addHalfVertex({x, y}: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) { + addHalfVertex({ + x, + y + }: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) { const totalDistance = this.lineClips ? this.scaledDistance * (MAX_LINE_DISTANCE - 1) : this.scaledDistance; // scale down so that we can store longer distances while sacrificing precision. const linesofarScaled = totalDistance * LINE_DISTANCE_SCALE; diff --git a/src/data/bucket/pattern_attributes.js b/src/data/bucket/pattern_attributes.ts similarity index 85% rename from src/data/bucket/pattern_attributes.js rename to src/data/bucket/pattern_attributes.ts index c4da6049f4..22bb51177e 100644 --- a/src/data/bucket/pattern_attributes.js +++ b/src/data/bucket/pattern_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; const patternAttributes = createLayout([ // [tl.x, tl.y, br.x, br.y] diff --git a/src/data/bucket/pattern_bucket_features.js b/src/data/bucket/pattern_bucket_features.ts similarity index 94% rename from src/data/bucket/pattern_bucket_features.js rename to src/data/bucket/pattern_bucket_features.ts index b85970271f..38ed28dafe 100644 --- a/src/data/bucket/pattern_bucket_features.js +++ b/src/data/bucket/pattern_bucket_features.ts @@ -1,4 +1,3 @@ -// @flow import type FillStyleLayer from '../../style/style_layer/fill_style_layer'; import type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer'; import type LineStyleLayer from '../../style/style_layer/line_style_layer'; @@ -8,10 +7,7 @@ import type { PopulateParameters } from '../bucket'; -type PatternStyleLayers = - Array | - Array | - Array; +type PatternStyleLayers = Array | Array | Array; export function hasPattern(type: string, layers: PatternStyleLayers, options: PopulateParameters) { const patterns = options.patternDependencies; diff --git a/src/data/bucket/symbol_attributes.js b/src/data/bucket/symbol_attributes.ts similarity index 98% rename from src/data/bucket/symbol_attributes.js rename to src/data/bucket/symbol_attributes.ts index 5d307d2ada..0d795d7f13 100644 --- a/src/data/bucket/symbol_attributes.js +++ b/src/data/bucket/symbol_attributes.ts @@ -1,6 +1,4 @@ -// @flow - -import {createLayout} from '../../util/struct_array'; +import { createLayout } from '../../util/struct_array'; export const symbolLayoutAttributes = createLayout([ {name: 'a_pos_offset', components: 4, type: 'Int16'}, diff --git a/src/data/bucket/symbol_bucket.js b/src/data/bucket/symbol_bucket.ts similarity index 94% rename from src/data/bucket/symbol_bucket.js rename to src/data/bucket/symbol_bucket.ts index 89d6723005..f2c93d25a2 100644 --- a/src/data/bucket/symbol_bucket.js +++ b/src/data/bucket/symbol_bucket.ts @@ -1,9 +1,8 @@ -// @flow - -import {symbolLayoutAttributes, - collisionVertexAttributes, - collisionBoxLayout, - dynamicLayoutAttributes +import { + symbolLayoutAttributes, + collisionVertexAttributes, + collisionBoxLayout, + dynamicLayoutAttributes, } from './symbol_attributes'; import {SymbolLayoutArray, @@ -59,41 +58,41 @@ import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; export type SingleCollisionBox = { - x1: number; - y1: number; - x2: number; - y2: number; - anchorPointX: number; - anchorPointY: number; + x1: number, + y1: number, + x2: number, + y2: number, + anchorPointX: number, + anchorPointY: number }; export type CollisionArrays = { - textBox?: SingleCollisionBox; - verticalTextBox?: SingleCollisionBox; - iconBox?: SingleCollisionBox; - verticalIconBox?: SingleCollisionBox; - textFeatureIndex?: number; - verticalTextFeatureIndex?: number; - iconFeatureIndex?: number; - verticalIconFeatureIndex?: number; + textBox?: SingleCollisionBox, + verticalTextBox?: SingleCollisionBox, + iconBox?: SingleCollisionBox, + verticalIconBox?: SingleCollisionBox, + textFeatureIndex?: number, + verticalTextFeatureIndex?: number, + iconFeatureIndex?: number, + verticalIconFeatureIndex?: number }; -export type SymbolFeature = {| - sortKey: number | void, - text: Formatted | void, - icon: ?ResolvedImage, - index: number, - sourceLayerIndex: number, - geometry: Array>, - properties: Object, - type: 'Point' | 'LineString' | 'Polygon', - id?: any -|}; +export type SymbolFeature = { + sortKey: number | void, + text: Formatted | void, + icon: ResolvedImage | undefined | null, + index: number, + sourceLayerIndex: number, + geometry: Array>, + properties: any, + type: "Point" | "LineString" | "Polygon", + id?: any +}; export type SortKeyRange = { - sortKey: number, - symbolInstanceStart: number, - symbolInstanceEnd: number + sortKey: number, + symbolInstanceStart: number, + symbolInstanceEnd: number }; // Opacity arrays are frequently updated but don't contain a lot of information, so we pack them @@ -229,9 +228,13 @@ class CollisionBuffers { collisionVertexArray: CollisionVertexArray; collisionVertexBuffer: VertexBuffer; - constructor(LayoutArray: Class, + constructor(LayoutArray: { + new (...args: any): StructArray + }, layoutAttributes: Array, - IndexArray: Class) { + IndexArray: { + new (...args: any): TriangleIndexArray | LineIndexArray + }) { this.layoutVertexArray = new LayoutArray(); this.layoutAttributes = layoutAttributes; this.indexArray = new IndexArray(); @@ -319,7 +322,9 @@ class SymbolBucket implements Bucket { sortKeyRanges: Array; pixelRatio: number; tilePixelRatio: number; - compareText: {[_: string]: Array}; + compareText: { + [_: string]: Array + }; fadeStartTime: number; sortFeaturesByKey: boolean; sortFeaturesByY: boolean; @@ -396,7 +401,9 @@ class SymbolBucket implements Bucket { this.symbolInstances = new SymbolInstanceArray(); } - calculateGlyphDependencies(text: string, stack: {[_: number]: boolean}, textAlongLine: boolean, allowVerticalPlacement: boolean, doesAllowVerticalWritingMode: boolean) { + calculateGlyphDependencies(text: string, stack: { + [_: number]: boolean + }, textAlongLine: boolean, allowVerticalPlacement: boolean, doesAllowVerticalWritingMode: boolean) { for (let i = 0; i < text.length; i++) { stack[text.charCodeAt(i)] = true; if ((textAlongLine || allowVerticalPlacement) && doesAllowVerticalWritingMode) { @@ -467,7 +474,7 @@ class SymbolBucket implements Bucket { } } - let icon: ?ResolvedImage; + let icon: ResolvedImage | undefined | null; if (hasIcon) { // Expression evaluation will automatically coerce to Image // but plain string token evaluation skips that pathway so do the @@ -531,12 +538,14 @@ class SymbolBucket implements Bucket { if (this.sortFeaturesByKey) { this.features.sort((a, b) => { // a.sortKey is always a number when sortFeaturesByKey is true - return ((a.sortKey: any): number) - ((b.sortKey: any): number); + return (a.sortKey as any as number) - (b.sortKey as any as number); }); } } - update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) { + update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: { + [_: string]: ImagePosition + }) { if (!this.stateDependentLayers.length) return; this.text.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, imagePositions); this.icon.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, imagePositions); @@ -655,13 +664,13 @@ class SymbolBucket implements Bucket { arrays.placedSymbolArray.emplaceBack(labelAnchor.x, labelAnchor.y, glyphOffsetArrayStart, this.glyphOffsetArray.length - glyphOffsetArrayStart, vertexStartIndex, - lineStartIndex, lineLength, (labelAnchor.segment: any), + lineStartIndex, lineLength, ((labelAnchor.segment as any)), sizeVertex ? sizeVertex[0] : 0, sizeVertex ? sizeVertex[1] : 0, lineOffset[0], lineOffset[1], writingMode, // placedOrientation is null initially; will be updated to horizontal(1)/vertical(2) if placed 0, - (false: any), + ((false as any)), // The crossTileID is only filled/used on the foreground for dynamic text anchors 0, associatedIconIndex @@ -699,7 +708,7 @@ class SymbolBucket implements Bucket { segment.vertexLength += 4; - const indexArray: LineIndexArray = (arrays.indexArray: any); + const indexArray: LineIndexArray = (arrays.indexArray as any); indexArray.emplaceBack(index, index + 1); indexArray.emplaceBack(index + 1, index + 2); indexArray.emplaceBack(index + 2, index + 3); @@ -710,7 +719,7 @@ class SymbolBucket implements Bucket { addDebugCollisionBoxes(startIndex: number, endIndex: number, symbolInstance: SymbolInstance, isText: boolean) { for (let b = startIndex; b < endIndex; b++) { - const box: CollisionBox = (this.collisionBoxArray.get(b): any); + const box: CollisionBox = (this.collisionBoxArray.get(b) as any); const x1 = box.x1; const y1 = box.y1; const x2 = box.x2; @@ -741,35 +750,41 @@ class SymbolBucket implements Bucket { // These flat arrays are meant to be quicker to iterate over than the source // CollisionBoxArray - _deserializeCollisionBoxesForSymbol(collisionBoxArray: CollisionBoxArray, - textStartIndex: number, textEndIndex: number, - verticalTextStartIndex: number, verticalTextEndIndex: number, - iconStartIndex: number, iconEndIndex: number, - verticalIconStartIndex: number, verticalIconEndIndex: number): CollisionArrays { + _deserializeCollisionBoxesForSymbol( + collisionBoxArray: CollisionBoxArray, + textStartIndex: number, + textEndIndex: number, + verticalTextStartIndex: number, + verticalTextEndIndex: number, + iconStartIndex: number, + iconEndIndex: number, + verticalIconStartIndex: number, + verticalIconEndIndex: number + ): CollisionArrays { const collisionArrays = {}; for (let k = textStartIndex; k < textEndIndex; k++) { - const box: CollisionBox = (collisionBoxArray.get(k): any); + const box: CollisionBox = (collisionBoxArray.get(k) as any); collisionArrays.textBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, anchorPointX: box.anchorPointX, anchorPointY: box.anchorPointY}; collisionArrays.textFeatureIndex = box.featureIndex; break; // Only one box allowed per instance } for (let k = verticalTextStartIndex; k < verticalTextEndIndex; k++) { - const box: CollisionBox = (collisionBoxArray.get(k): any); + const box: CollisionBox = (collisionBoxArray.get(k) as any); collisionArrays.verticalTextBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, anchorPointX: box.anchorPointX, anchorPointY: box.anchorPointY}; collisionArrays.verticalTextFeatureIndex = box.featureIndex; break; // Only one box allowed per instance } for (let k = iconStartIndex; k < iconEndIndex; k++) { // An icon can only have one box now, so this indexing is a bit vestigial... - const box: CollisionBox = (collisionBoxArray.get(k): any); + const box: CollisionBox = (collisionBoxArray.get(k) as any); collisionArrays.iconBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, anchorPointX: box.anchorPointX, anchorPointY: box.anchorPointY}; collisionArrays.iconFeatureIndex = box.featureIndex; break; // Only one box allowed per instance } for (let k = verticalIconStartIndex; k < verticalIconEndIndex; k++) { // An icon can only have one box now, so this indexing is a bit vestigial... - const box: CollisionBox = (collisionBoxArray.get(k): any); + const box: CollisionBox = (collisionBoxArray.get(k) as any); collisionArrays.verticalIconBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, anchorPointX: box.anchorPointX, anchorPointY: box.anchorPointY}; collisionArrays.verticalIconFeatureIndex = box.featureIndex; break; // Only one box allowed per instance diff --git a/src/data/dem_data.js b/src/data/dem_data.ts similarity index 99% rename from src/data/dem_data.js rename to src/data/dem_data.ts index fcbf98ad83..b90d6bf634 100644 --- a/src/data/dem_data.js +++ b/src/data/dem_data.ts @@ -1,5 +1,4 @@ -// @flow -import {RGBAImage} from '../util/image'; +import { RGBAImage } from '../util/image'; import {warnOnce} from '../util/util'; import {register} from '../util/web_worker_transfer'; diff --git a/src/data/evaluation_feature.js b/src/data/evaluation_feature.ts similarity index 62% rename from src/data/evaluation_feature.js rename to src/data/evaluation_feature.ts index 2f7b08ea8c..90624ff233 100644 --- a/src/data/evaluation_feature.js +++ b/src/data/evaluation_feature.ts @@ -1,13 +1,19 @@ -// @flow - import loadGeometry from './load_geometry'; type EvaluationFeature = { - +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon', - +id?: any, - +properties: {[_: string]: any}, - +patterns?: {[_: string]: {"min": string, "mid": string, "max": string}}, - geometry: Array> + readonly type: 1 | 2 | 3 | "Unknown" | "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon", + readonly id?: any, + readonly properties: { + [_: string]: any + }, + readonly patterns?: { + [_: string]: { + "min": string, + "mid": string, + "max": string + } + }, + geometry: Array> }; /** diff --git a/src/data/extent.js b/src/data/extent.ts similarity index 98% rename from src/data/extent.js rename to src/data/extent.ts index cff39b9981..7327e449dc 100644 --- a/src/data/extent.js +++ b/src/data/extent.ts @@ -1,5 +1,3 @@ -// @flow - /** * The maximum value of a coordinate in the internal tile coordinate system. Coordinates of * all source features normalized to this extent upon load. diff --git a/src/data/feature_index.js b/src/data/feature_index.ts similarity index 86% rename from src/data/feature_index.js rename to src/data/feature_index.ts index 739b3f966d..ac01e6b24e 100644 --- a/src/data/feature_index.js +++ b/src/data/feature_index.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import loadGeometry from './load_geometry'; @@ -27,19 +25,19 @@ import type {FilterSpecification, PromoteIdSpecification} from '../style-spec/ty import {FeatureIndexArray} from './array_types'; type QueryParameters = { - scale: number, - pixelPosMatrix: Float32Array, - transform: Transform, - tileSize: number, - queryGeometry: Array, - cameraQueryGeometry: Array, - queryPadding: number, - params: { - filter: FilterSpecification, - layers: Array, - availableImages: Array - } -} + scale: number, + pixelPosMatrix: Float32Array, + transform: Transform, + tileSize: number, + queryGeometry: Array, + cameraQueryGeometry: Array, + queryPadding: number, + params: { + filter: FilterSpecification, + layers: Array, + availableImages: Array + } +}; class FeatureIndex { tileID: OverscaledTileID; @@ -49,15 +47,17 @@ class FeatureIndex { grid: Grid; grid3D: Grid; featureIndexArray: FeatureIndexArray; - promoteId: ?PromoteIdSpecification; + promoteId: PromoteIdSpecification | undefined | null; rawTileData: ArrayBuffer; bucketLayerIDs: Array>; - vtLayers: {[_: string]: VectorTileLayer}; + vtLayers: { + [_: string]: VectorTileLayer + }; sourceLayerCoder: DictionaryCoder; - constructor(tileID: OverscaledTileID, promoteId?: ?PromoteIdSpecification) { + constructor(tileID: OverscaledTileID, promoteId?: PromoteIdSpecification | null) { this.tileID = tileID; this.x = tileID.canonical.x; this.y = tileID.canonical.y; @@ -95,7 +95,9 @@ class FeatureIndex { } } - loadVTLayers(): {[_: string]: VectorTileLayer} { + loadVTLayers(): { + [_: string]: VectorTileLayer + } { if (!this.vtLayers) { this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers; this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']); @@ -104,7 +106,21 @@ class FeatureIndex { } // Finds non-symbol features in this tile at a particular position. - query(args: QueryParameters, styleLayers: {[_: string]: StyleLayer}, serializedLayers: {[_: string]: Object}, sourceFeatureState: SourceFeatureState): {[_: string]: Array<{ featureIndex: number, feature: GeoJSONFeature }>} { + query( + args: QueryParameters, + styleLayers: { + [_: string]: StyleLayer + }, + serializedLayers: { + [_: string]: any + }, + sourceFeatureState: SourceFeatureState + ): { + [_: string]: Array<{ + featureIndex: number, + feature: GeoJSONFeature + }> + } { this.loadVTLayers(); const params = args.params || {}, @@ -152,7 +168,7 @@ class FeatureIndex { styleLayers, serializedLayers, sourceFeatureState, - (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object) => { + (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: any) => { if (!featureGeometry) { featureGeometry = loadGeometry(feature); } @@ -166,17 +182,31 @@ class FeatureIndex { } loadMatchingFeature( - result: {[_: string]: Array<{ featureIndex: number, feature: GeoJSONFeature }>}, + result: { + [_: string]: Array<{ + featureIndex: number, + feature: GeoJSONFeature + }> + }, bucketIndex: number, sourceLayerIndex: number, featureIndex: number, filter: FeatureFilter, filterLayerIDs: Array, availableImages: Array, - styleLayers: {[_: string]: StyleLayer}, - serializedLayers: {[_: string]: Object}, + styleLayers: { + [_: string]: StyleLayer + }, + serializedLayers: { + [_: string]: any + }, sourceFeatureState?: SourceFeatureState, - intersectionTest?: (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object, id: string | number | void) => boolean | number) { + intersectionTest?: ( + feature: VectorTileFeature, + styleLayer: StyleLayer, + featureState: any, + id: string | number | void + ) => boolean | number) { const layerIDs = this.bucketLayerIDs[bucketIndex]; if (filterLayerIDs && !arraysIntersect(filterLayerIDs, layerIDs)) @@ -226,7 +256,7 @@ class FeatureIndex { } const geojsonFeature = new GeoJSONFeature(feature, this.z, this.x, this.y, id); - (geojsonFeature: any).layer = serializedLayer; + (geojsonFeature as any).layer = serializedLayer; let layerResult = result[layerID]; if (layerResult === undefined) { layerResult = result[layerID] = []; @@ -238,13 +268,17 @@ class FeatureIndex { // Given a set of symbol indexes that have already been looked up, // return a matching set of GeoJSONFeatures lookupSymbolFeatures(symbolFeatureIndexes: Array, - serializedLayers: {[string]: StyleLayer}, + serializedLayers: { + [x: string]: StyleLayer + }, bucketIndex: number, sourceLayerIndex: number, filterSpec: FilterSpecification, filterLayerIDs: Array, availableImages: Array, - styleLayers: {[_: string]: StyleLayer}) { + styleLayers: { + [_: string]: StyleLayer + }) { const result = {}; this.loadVTLayers(); diff --git a/src/data/feature_position_map.js b/src/data/feature_position_map.ts similarity index 90% rename from src/data/feature_position_map.js rename to src/data/feature_position_map.ts index 15137377a3..82905b3e24 100644 --- a/src/data/feature_position_map.js +++ b/src/data/feature_position_map.ts @@ -1,18 +1,16 @@ -// @flow - import murmur3 from 'murmurhash-js'; import {register} from '../util/web_worker_transfer'; import assert from 'assert'; type SerializedFeaturePositionMap = { - ids: Float64Array; - positions: Uint32Array; + ids: Float64Array, + positions: Uint32Array }; type FeaturePosition = { - index: number; - start: number; - end: number; + index: number, + start: number, + end: number }; // A transferable data structure that maps feature ids to their indices and buffer offsets @@ -27,12 +25,12 @@ export default class FeaturePositionMap { this.indexed = false; } - add(id: mixed, index: number, start: number, end: number) { + add(id: unknown, index: number, start: number, end: number) { this.ids.push(getNumericId(id)); this.positions.push(index, start, end); } - getPositions(id: mixed): Array { + getPositions(id: unknown): Array { assert(this.indexed); const intId = getNumericId(id); @@ -77,8 +75,8 @@ export default class FeaturePositionMap { const map = new FeaturePositionMap(); // after transferring, we only use these arrays statically (no pushes), // so TypedArray vs Array distinction that flow points out doesn't matter - map.ids = (obj.ids: any); - map.positions = (obj.positions: any); + map.ids = (obj.ids as any); + map.positions = (obj.positions as any); map.indexed = true; return map; } @@ -86,7 +84,7 @@ export default class FeaturePositionMap { const MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; -function getNumericId(value: mixed) { +function getNumericId(value: unknown) { const numValue = +value; if (!isNaN(numValue) && numValue <= MAX_SAFE_INTEGER) { return numValue; diff --git a/src/data/index_array_type.js b/src/data/index_array_type.ts similarity index 77% rename from src/data/index_array_type.js rename to src/data/index_array_type.ts index 98db8a86b1..547fde2a37 100644 --- a/src/data/index_array_type.js +++ b/src/data/index_array_type.ts @@ -1,10 +1,4 @@ -// @flow - -import { - LineIndexArray, - TriangleIndexArray, - LineStripIndexArray -} from './array_types'; +import { LineIndexArray, TriangleIndexArray, LineStripIndexArray } from './array_types'; /** * An index array stores Uint16 indices of vertexes in a corresponding vertex array. We use diff --git a/src/data/load_geometry.js b/src/data/load_geometry.ts similarity index 96% rename from src/data/load_geometry.js rename to src/data/load_geometry.ts index c8885c57bd..cc67cb8569 100644 --- a/src/data/load_geometry.js +++ b/src/data/load_geometry.ts @@ -1,6 +1,4 @@ -// @flow - -import {warnOnce, clamp} from '../util/util'; +import { warnOnce, clamp } from '../util/util'; import EXTENT from './extent'; diff --git a/src/data/pos_attributes.js b/src/data/pos_attributes.ts similarity index 58% rename from src/data/pos_attributes.js rename to src/data/pos_attributes.ts index 7306b3925d..a1266baf24 100644 --- a/src/data/pos_attributes.js +++ b/src/data/pos_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../util/struct_array'; +import { createLayout } from '../util/struct_array'; export default createLayout([ {name: 'a_pos', type: 'Int16', components: 2} diff --git a/src/data/program_configuration.js b/src/data/program_configuration.ts similarity index 86% rename from src/data/program_configuration.js rename to src/data/program_configuration.ts index 0ea6ee9389..e6725d58b1 100644 --- a/src/data/program_configuration.js +++ b/src/data/program_configuration.ts @@ -1,6 +1,4 @@ -// @flow - -import {packUint8ToFloat} from '../shaders/encode_attribute'; +import { packUint8ToFloat } from '../shaders/encode_attribute'; import Color from '../style-spec/util/color'; import {supportsPropertyExpression} from '../style-spec/util/properties'; import {register} from '../util/web_worker_transfer'; @@ -10,13 +8,9 @@ import {clamp} from '../util/util'; import patternAttributes from './bucket/pattern_attributes'; import EvaluationParameters from '../style/evaluation_parameters'; import FeaturePositionMap from './feature_position_map'; -import { - Uniform, - Uniform1f, - UniformColor, - Uniform4f, - type UniformLocations -} from '../render/uniform_binding'; +import { Uniform, Uniform1f, UniformColor, Uniform4f } from '../render/uniform_binding'; + +import type { UniformLocations } from '../render/uniform_binding'; import type {CanonicalTileID} from '../source/tile_id'; import type Context from '../gl/context'; @@ -37,9 +31,9 @@ import type {FeatureStates} from '../source/source_state'; import type {FormattedSection} from '../style-spec/expression/types/formatted'; export type BinderUniform = { - name: string, - property: string, - binding: Uniform + name: string, + property: string, + binding: Uniform }; function packColor(color: Color): [number, number] { @@ -78,34 +72,59 @@ function packColor(color: Color): [number, number] { */ interface AttributeBinder { - populatePaintArray(length: number, feature: Feature, imagePositions: {[_: string]: ImagePosition}, canonical?: CanonicalTileID, formattedSection?: FormattedSection): void; - updatePaintArray(start: number, length: number, feature: Feature, featureState: FeatureState, imagePositions: {[_: string]: ImagePosition}): void; - upload(Context): void; - destroy(): void; + populatePaintArray( + length: number, + feature: Feature, + imagePositions: { + [_: string]: ImagePosition + }, + canonical?: CanonicalTileID, + formattedSection?: FormattedSection + ): void; + updatePaintArray( + start: number, + length: number, + feature: Feature, + featureState: FeatureState, + imagePositions: { + [_: string]: ImagePosition + } + ): void; + upload(a: Context): void; + destroy(): void; } interface UniformBinder { - uniformNames: Array; - setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue<*>, uniformName: string): void; - getBinding(context: Context, location: WebGLUniformLocation, name: string): $Shape>; + uniformNames: Array; + setUniform( + uniform: Uniform, + globals: GlobalProperties, + currentValue: PossiblyEvaluatedPropertyValue, + uniformName: string + ): void; + getBinding(context: Context, location: WebGLUniformLocation, name: string): Partial>; } class ConstantBinder implements UniformBinder { - value: mixed; + value: unknown; type: string; uniformNames: Array; - constructor(value: mixed, names: Array, type: string) { + constructor(value: unknown, names: Array, type: string) { this.value = value; this.uniformNames = names.map(name => `u_${name}`); this.type = type; } - setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue): void { + setUniform( + uniform: Uniform, + globals: GlobalProperties, + currentValue: PossiblyEvaluatedPropertyValue + ): void { uniform.set(currentValue.constantOr(this.value)); } - getBinding(context: Context, location: WebGLUniformLocation, _: string): $Shape> { + getBinding(context: Context, location: WebGLUniformLocation, _: string): Partial> { return (this.type === 'color') ? new UniformColor(context, location) : new Uniform1f(context, location); @@ -114,12 +133,12 @@ class ConstantBinder implements UniformBinder { class CrossFadedConstantBinder implements UniformBinder { uniformNames: Array; - patternFrom: ?Array; - patternTo: ?Array; + patternFrom: Array | undefined | null; + patternTo: Array | undefined | null; pixelRatioFrom: number; pixelRatioTo: number; - constructor(value: mixed, names: Array) { + constructor(value: unknown, names: Array) { this.uniformNames = names.map(name => `u_${name}`); this.patternFrom = null; this.patternTo = null; @@ -134,7 +153,7 @@ class CrossFadedConstantBinder implements UniformBinder { this.patternTo = posTo.tlbr; } - setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue, uniformName: string) { + setUniform(uniform: Uniform, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue, uniformName: string) { const pos = uniformName === 'u_pattern_to' ? this.patternTo : uniformName === 'u_pattern_from' ? this.patternFrom : @@ -143,7 +162,7 @@ class CrossFadedConstantBinder implements UniformBinder { if (pos) uniform.set(pos); } - getBinding(context: Context, location: WebGLUniformLocation, name: string): $Shape> { + getBinding(context: Context, location: WebGLUniformLocation, name: string): Partial> { return name.substr(0, 9) === 'u_pattern' ? new Uniform4f(context, location) : new Uniform1f(context, location); @@ -157,9 +176,11 @@ class SourceExpressionBinder implements AttributeBinder { paintVertexArray: StructArray; paintVertexAttributes: Array; - paintVertexBuffer: ?VertexBuffer; + paintVertexBuffer: VertexBuffer | undefined | null; - constructor(expression: SourceExpression, names: Array, type: string, PaintVertexArray: Class) { + constructor(expression: SourceExpression, names: Array, type: string, PaintVertexArray: { + new (...args: any): StructArray + }) { this.expression = expression; this.type = type; this.maxValue = 0; @@ -172,7 +193,9 @@ class SourceExpressionBinder implements AttributeBinder { this.paintVertexArray = new PaintVertexArray(); } - populatePaintArray(newLength: number, feature: Feature, imagePositions: {[_: string]: ImagePosition}, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { + populatePaintArray(newLength: number, feature: Feature, imagePositions: { + [_: string]: ImagePosition + }, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { const start = this.paintVertexArray.length; const value = this.expression.evaluate(new EvaluationParameters(0), feature, {}, canonical, [], formattedSection); this.paintVertexArray.resize(newLength); @@ -225,9 +248,11 @@ class CompositeExpressionBinder implements AttributeBinder, UniformBinder { paintVertexArray: StructArray; paintVertexAttributes: Array; - paintVertexBuffer: ?VertexBuffer; + paintVertexBuffer: VertexBuffer | undefined | null; - constructor(expression: CompositeExpression, names: Array, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: Class) { + constructor(expression: CompositeExpression, names: Array, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: { + new (...args: any): StructArray + }) { this.expression = expression; this.uniformNames = names.map(name => `u_${name}_t`); this.type = type; @@ -243,7 +268,9 @@ class CompositeExpressionBinder implements AttributeBinder, UniformBinder { this.paintVertexArray = new PaintVertexArray(); } - populatePaintArray(newLength: number, feature: Feature, imagePositions: {[_: string]: ImagePosition}, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { + populatePaintArray(newLength: number, feature: Feature, imagePositions: { + [_: string]: ImagePosition + }, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { const min = this.expression.evaluate(new EvaluationParameters(this.zoom), feature, {}, canonical, [], formattedSection); const max = this.expression.evaluate(new EvaluationParameters(this.zoom + 1), feature, {}, canonical, [], formattedSection); const start = this.paintVertexArray.length; @@ -288,7 +315,7 @@ class CompositeExpressionBinder implements AttributeBinder, UniformBinder { } } - setUniform(uniform: Uniform<*>, globals: GlobalProperties): void { + setUniform(uniform: Uniform, globals: GlobalProperties): void { const currentZoom = this.useIntegerZoom ? Math.floor(globals.zoom) : globals.zoom; const factor = clamp(this.expression.interpolationFactor(currentZoom, this.zoom, this.zoom + 1), 0, 1); uniform.set(factor); @@ -308,11 +335,13 @@ class CrossFadedCompositeBinder implements AttributeBinder { zoomInPaintVertexArray: StructArray; zoomOutPaintVertexArray: StructArray; - zoomInPaintVertexBuffer: ?VertexBuffer; - zoomOutPaintVertexBuffer: ?VertexBuffer; + zoomInPaintVertexBuffer: VertexBuffer | undefined | null; + zoomOutPaintVertexBuffer: VertexBuffer | undefined | null; paintVertexAttributes: Array; - constructor(expression: CompositeExpression, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: Class, layerId: string) { + constructor(expression: CompositeExpression, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: { + new (...args: any): StructArray + }, layerId: string) { this.expression = expression; this.type = type; this.useIntegerZoom = useIntegerZoom; @@ -323,14 +352,18 @@ class CrossFadedCompositeBinder implements AttributeBinder { this.zoomOutPaintVertexArray = new PaintVertexArray(); } - populatePaintArray(length: number, feature: Feature, imagePositions: {[_: string]: ImagePosition}) { + populatePaintArray(length: number, feature: Feature, imagePositions: { + [_: string]: ImagePosition + }) { const start = this.zoomInPaintVertexArray.length; this.zoomInPaintVertexArray.resize(length); this.zoomOutPaintVertexArray.resize(length); this._setPaintValues(start, length, feature.patterns && feature.patterns[this.layerId], imagePositions); } - updatePaintArray(start: number, end: number, feature: Feature, featureState: FeatureState, imagePositions: {[_: string]: ImagePosition}) { + updatePaintArray(start: number, end: number, feature: Feature, featureState: FeatureState, imagePositions: { + [_: string]: ImagePosition + }) { this._setPaintValues(start, end, feature.patterns && feature.patterns[this.layerId], imagePositions); } @@ -396,7 +429,9 @@ class CrossFadedCompositeBinder implements AttributeBinder { * @private */ export default class ProgramConfiguration { - binders: {[_: string]: (AttributeBinder | UniformBinder) }; + binders: { + [_: string]: AttributeBinder | UniformBinder + }; cacheKey: string; _buffers: Array; @@ -448,11 +483,13 @@ export default class ProgramConfiguration { return binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder ? binder.maxValue : 0; } - populatePaintArrays(newLength: number, feature: Feature, imagePositions: {[_: string]: ImagePosition}, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { + populatePaintArrays(newLength: number, feature: Feature, imagePositions: { + [_: string]: ImagePosition + }, canonical?: CanonicalTileID, formattedSection?: FormattedSection) { for (const property in this.binders) { const binder = this.binders[property]; if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) - (binder: AttributeBinder).populatePaintArray(newLength, feature, imagePositions, canonical, formattedSection); + (binder as AttributeBinder).populatePaintArray(newLength, feature, imagePositions, canonical, formattedSection); } } setConstantPatternPositions(posTo: ImagePosition, posFrom: ImagePosition) { @@ -463,7 +500,15 @@ export default class ProgramConfiguration { } } - updatePaintArrays(featureStates: FeatureStates, featureMap: FeaturePositionMap, vtLayer: VectorTileLayer, layer: TypedStyleLayer, imagePositions: {[_: string]: ImagePosition}): boolean { + updatePaintArrays( + featureStates: FeatureStates, + featureMap: FeaturePositionMap, + vtLayer: VectorTileLayer, + layer: TypedStyleLayer, + imagePositions: { + [_: string]: ImagePosition + } + ): boolean { let dirty: boolean = false; for (const id in featureStates) { const positions = featureMap.getPositions(id); @@ -474,11 +519,11 @@ export default class ProgramConfiguration { for (const property in this.binders) { const binder = this.binders[property]; if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || - binder instanceof CrossFadedCompositeBinder) && (binder: any).expression.isStateDependent === true) { + binder instanceof CrossFadedCompositeBinder) && (binder as any).expression.isStateDependent === true) { //AHM: Remove after https://github.com/mapbox/mapbox-gl-js/issues/6255 const value = layer.paint.get(property); - (binder: any).expression = value.value; - (binder: AttributeBinder).updatePaintArray(pos.start, pos.end, feature, featureStates[id], imagePositions); + (binder as any).expression = value.value; + (binder as AttributeBinder).updatePaintArray(pos.start, pos.end, feature, featureStates[id], imagePositions); dirty = true; } } @@ -548,11 +593,16 @@ export default class ProgramConfiguration { return uniforms; } - setUniforms(context: Context, binderUniforms: Array, properties: PossiblyEvaluated, globals: GlobalProperties) { + setUniforms( + context: Context, + binderUniforms: Array, + properties: PossiblyEvaluated, + globals: GlobalProperties + ) { // Uniform state bindings are owned by the Program, but we set them // from within the ProgramConfiguraton's binder members. for (const {name, property, binding} of binderUniforms) { - (this.binders[property]: any).setUniform(binding, globals, properties.get(property), name); + (this.binders[property] as any).setUniform(binding, globals, properties.get(property), name); } } @@ -589,13 +639,15 @@ export default class ProgramConfiguration { } } -export class ProgramConfigurationSet { - programConfigurations: {[_: string]: ProgramConfiguration}; +export class ProgramConfigurationSet { + programConfigurations: { + [_: string]: ProgramConfiguration + }; needsUpload: boolean; _featureMap: FeaturePositionMap; _bufferOffset: number; - constructor(layers: $ReadOnlyArray, zoom: number, filterProperties: (_: string) => boolean = () => true) { + constructor(layers: ReadonlyArray, zoom: number, filterProperties: (_: string) => boolean = () => true) { this.programConfigurations = {}; for (const layer of layers) { this.programConfigurations[layer.id] = new ProgramConfiguration(layer, zoom, filterProperties); @@ -605,7 +657,9 @@ export class ProgramConfigurationSet { this._bufferOffset = 0; } - populatePaintArrays(length: number, feature: Feature, index: number, imagePositions: {[_: string]: ImagePosition}, canonical: CanonicalTileID, formattedSection?: FormattedSection) { + populatePaintArrays(length: number, feature: Feature, index: number, imagePositions: { + [_: string]: ImagePosition + }, canonical: CanonicalTileID, formattedSection?: FormattedSection) { for (const key in this.programConfigurations) { this.programConfigurations[key].populatePaintArrays(length, feature, imagePositions, canonical, formattedSection); } @@ -618,7 +672,9 @@ export class ProgramConfigurationSet { this.needsUpload = true; } - updatePaintArrays(featureStates: FeatureStates, vtLayer: VectorTileLayer, layers: $ReadOnlyArray, imagePositions: {[_: string]: ImagePosition}) { + updatePaintArrays(featureStates: FeatureStates, vtLayer: VectorTileLayer, layers: ReadonlyArray, imagePositions: { + [_: string]: ImagePosition + }) { for (const layer of layers) { this.needsUpload = this.programConfigurations[layer.id].updatePaintArrays(featureStates, this._featureMap, vtLayer, layer, imagePositions) || this.needsUpload; } diff --git a/src/data/raster_bounds_attributes.js b/src/data/raster_bounds_attributes.ts similarity index 70% rename from src/data/raster_bounds_attributes.js rename to src/data/raster_bounds_attributes.ts index 6d13fe538b..8f94d06393 100644 --- a/src/data/raster_bounds_attributes.js +++ b/src/data/raster_bounds_attributes.ts @@ -1,5 +1,4 @@ -// @flow -import {createLayout} from '../util/struct_array'; +import { createLayout } from '../util/struct_array'; export default createLayout([ {name: 'a_pos', type: 'Int16', components: 2}, diff --git a/src/data/segment.js b/src/data/segment.ts similarity index 74% rename from src/data/segment.js rename to src/data/segment.ts index 3e4a582c0c..8f6ec8ffa4 100644 --- a/src/data/segment.js +++ b/src/data/segment.ts @@ -1,6 +1,4 @@ -// @flow - -import {warnOnce} from '../util/util'; +import { warnOnce } from '../util/util'; import {register} from '../util/web_worker_transfer'; @@ -8,23 +6,30 @@ import type VertexArrayObject from '../render/vertex_array_object'; import type {StructArray} from '../util/struct_array'; export type Segment = { - sortKey: number | void, - vertexOffset: number, - primitiveOffset: number, - vertexLength: number, - primitiveLength: number, - vaos: {[_: string]: VertexArrayObject} -} + sortKey: number | void, + vertexOffset: number, + primitiveOffset: number, + vertexLength: number, + primitiveLength: number, + vaos: { + [_: string]: VertexArrayObject + } +}; class SegmentVector { static MAX_VERTEX_ARRAY_LENGTH: number; segments: Array; - constructor(segments?: Array = []) { + constructor(segments: Array = []) { this.segments = segments; } - prepareSegment(numVertices: number, layoutVertexArray: StructArray, indexArray: StructArray, sortKey?: number): Segment { + prepareSegment( + numVertices: number, + layoutVertexArray: StructArray, + indexArray: StructArray, + sortKey?: number + ): Segment { let segment: Segment = this.segments[this.segments.length - 1]; if (numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) warnOnce(`Max vertices per segment is ${SegmentVector.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${numVertices}`); if (!segment || segment.vertexLength + numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH || segment.sortKey !== sortKey) { @@ -33,7 +38,7 @@ class SegmentVector { primitiveOffset: indexArray.length, vertexLength: 0, primitiveLength: 0 - }: any); + } as any); if (sortKey !== undefined) segment.sortKey = sortKey; this.segments.push(segment); } @@ -52,7 +57,12 @@ class SegmentVector { } } - static simpleSegment(vertexOffset: number, primitiveOffset: number, vertexLength: number, primitiveLength: number): SegmentVector { + static simpleSegment( + vertexOffset: number, + primitiveOffset: number, + vertexLength: number, + primitiveLength: number + ): SegmentVector { return new SegmentVector([{ vertexOffset, primitiveOffset, diff --git a/src/geo/edge_insets.js b/src/geo/edge_insets.ts similarity index 93% rename from src/geo/edge_insets.js rename to src/geo/edge_insets.ts index afb293678d..d8145a314a 100644 --- a/src/geo/edge_insets.js +++ b/src/geo/edge_insets.ts @@ -1,5 +1,4 @@ -// @flow -import {number} from "../style-spec/util/interpolate"; +import { number } from "../style-spec/util/interpolate"; import Point from "@mapbox/point-geometry"; import {clamp} from "../util/util"; @@ -97,6 +96,11 @@ class EdgeInsets { } } -export type PaddingOptions = {top: ?number, bottom: ?number, right: ?number, left: ?number}; +export type PaddingOptions = { + top: number | undefined | null, + bottom: number | undefined | null, + right: number | undefined | null, + left: number | undefined | null +}; export default EdgeInsets; diff --git a/src/geo/lng_lat.js b/src/geo/lng_lat.ts similarity index 96% rename from src/geo/lng_lat.js rename to src/geo/lng_lat.ts index 961bf90ae2..b4e2399391 100644 --- a/src/geo/lng_lat.js +++ b/src/geo/lng_lat.ts @@ -1,6 +1,4 @@ -// @flow - -import {wrap} from '../util/util'; +import { wrap } from '../util/util'; import LngLatBounds from './lng_lat_bounds'; /* @@ -112,7 +110,7 @@ class LngLat { * var ll = new maplibregl.LngLat(-73.9749, 40.7736); * ll.toBounds(100).toArray(); // = [[-73.97501862141328, 40.77351016847229], [-73.97478137858673, 40.77368983152771]] */ - toBounds(radius?: number = 0) { + toBounds(radius: number = 0) { const earthCircumferenceInMetersAtEquator = 40075017; const latAccuracy = 360 * radius / earthCircumferenceInMetersAtEquator, lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); @@ -144,7 +142,7 @@ class LngLat { if (!Array.isArray(input) && typeof input === 'object' && input !== null) { return new LngLat( // flow can't refine this to have one of lng or lat, so we have to cast to any - Number('lng' in input ? (input: any).lng : (input: any).lon), + Number('lng' in input ? (input as any).lng : (input as any).lon), Number(input.lat) ); } @@ -162,6 +160,12 @@ class LngLat { * var v2 = [-122.420679, 37.772537]; * var v3 = {lon: -122.420679, lat: 37.772537}; */ -export type LngLatLike = LngLat | {lng: number, lat: number} | {lon: number, lat: number} | [number, number]; +export type LngLatLike = LngLat | { + lng: number, + lat: number +} | { + lon: number, + lat: number +} | [number, number]; export default LngLat; diff --git a/src/geo/lng_lat_bounds.js b/src/geo/lng_lat_bounds.ts similarity index 98% rename from src/geo/lng_lat_bounds.js rename to src/geo/lng_lat_bounds.ts index 9e167de374..5bf2e1852a 100644 --- a/src/geo/lng_lat_bounds.js +++ b/src/geo/lng_lat_bounds.ts @@ -1,5 +1,3 @@ -// @flow - import LngLat from './lng_lat'; import type {LngLatLike} from './lng_lat'; @@ -84,10 +82,10 @@ class LngLatBounds { } else { if (Array.isArray(obj)) { if (obj.length === 4 || obj.every(Array.isArray)) { - const lngLatBoundsObj = ((obj: any): LngLatBoundsLike); + const lngLatBoundsObj = (obj as any as LngLatBoundsLike); return this.extend(LngLatBounds.convert(lngLatBoundsObj)); } else { - const lngLatObj = ((obj: any): LngLatLike); + const lngLatObj = (obj as any as LngLatLike); return this.extend(LngLat.convert(lngLatObj)); } } diff --git a/src/geo/mercator_coordinate.js b/src/geo/mercator_coordinate.ts similarity index 98% rename from src/geo/mercator_coordinate.js rename to src/geo/mercator_coordinate.ts index 49e6be6798..3b20426429 100644 --- a/src/geo/mercator_coordinate.js +++ b/src/geo/mercator_coordinate.ts @@ -1,6 +1,4 @@ -// @flow - -import LngLat, {earthRadius} from '../geo/lng_lat'; +import LngLat, { earthRadius } from '../geo/lng_lat'; import type {LngLatLike} from '../geo/lng_lat'; /* diff --git a/src/geo/transform.js b/src/geo/transform.ts similarity index 97% rename from src/geo/transform.js rename to src/geo/transform.ts index 35c0d8ef64..6e9c0d240c 100644 --- a/src/geo/transform.js +++ b/src/geo/transform.ts @@ -1,5 +1,3 @@ -// @flow - import LngLat from './lng_lat'; import LngLatBounds from './lng_lat_bounds'; import MercatorCoordinate, {mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude} from './mercator_coordinate'; @@ -8,7 +6,7 @@ import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; import {vec4, mat4, mat2, vec2} from 'gl-matrix'; -import {Aabb, Frustum} from '../util/primitives.js'; +import {Aabb, Frustum} from "../util/primitives"; import EdgeInsets from './edge_insets'; import {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../source/tile_id'; @@ -22,8 +20,8 @@ import type {PaddingOptions} from './edge_insets'; class Transform { tileSize: number; tileZoom: number; - lngRange: ?[number, number]; - latRange: ?[number, number]; + lngRange: [number, number] | undefined | null; + latRange: [number, number] | undefined | null; maxValidLatitude: number; scale: number; width: number; @@ -53,10 +51,14 @@ class Transform { _center: LngLat; _edgeInsets: EdgeInsets; _constraining: boolean; - _posMatrixCache: {[_: string]: Float32Array}; - _alignedPosMatrixCache: {[_: string]: Float32Array}; - - constructor(minZoom: ?number, maxZoom: ?number, minPitch: ?number, maxPitch: ?number, renderWorldCopies: boolean | void) { + _posMatrixCache: { + [_: string]: Float32Array + }; + _alignedPosMatrixCache: { + [_: string]: Float32Array + }; + + constructor(minZoom: number | undefined | null, maxZoom: number | undefined | null, minPitch: number | undefined | null, maxPitch: number | undefined | null, renderWorldCopies: boolean | void) { this.tileSize = 512; // constant this.maxValidLatitude = 85.051129; // constant @@ -128,7 +130,7 @@ class Transform { } get renderWorldCopies(): boolean { return this._renderWorldCopies; } - set renderWorldCopies(renderWorldCopies?: ?boolean) { + set renderWorldCopies(renderWorldCopies: boolean | undefined | null) { if (renderWorldCopies === undefined) { renderWorldCopies = true; } else if (renderWorldCopies === null) { @@ -263,7 +265,10 @@ class Transform { * @param {boolean} options.roundZoom Target zoom level. If true, the value will be rounded to the closest integer. Otherwise the value will be floored. * @returns {number} zoom level An integer zoom level at which all tiles will be visible. */ - coveringZoomLevel(options: {roundZoom?: boolean, tileSize: number}) { + coveringZoomLevel(options: { + roundZoom?: boolean, + tileSize: number + }) { const z = (options.roundZoom ? Math.round : Math.floor)( this.zoom + this.scaleZoom(this.tileSize / options.tileSize) ); @@ -314,14 +319,14 @@ class Transform { * @private */ coveringTiles( - options: { - tileSize: number, - minzoom?: number, - maxzoom?: number, - roundZoom?: boolean, - reparseOverscaled?: boolean, - renderWorldCopies?: boolean - } + options: { + tileSize: number, + minzoom?: number, + maxzoom?: number, + roundZoom?: boolean, + reparseOverscaled?: boolean, + renderWorldCopies?: boolean + } ): Array { let z = this.coveringZoomLevel(options); const actualZ = z; diff --git a/src/gl/color_mode.js b/src/gl/color_mode.ts similarity index 86% rename from src/gl/color_mode.js rename to src/gl/color_mode.ts index 0037b0d0ae..30c1e52793 100644 --- a/src/gl/color_mode.js +++ b/src/gl/color_mode.ts @@ -1,4 +1,3 @@ -// @flow import Color from '../style-spec/util/color'; import type {BlendFuncType, ColorMaskType} from './types'; @@ -20,9 +19,9 @@ class ColorMode { static Replace: BlendFuncType; - static disabled: $ReadOnly; - static unblended: $ReadOnly; - static alphaBlended: $ReadOnly; + static disabled: Readonly; + static unblended: Readonly; + static alphaBlended: Readonly; } ColorMode.Replace = [ONE, ZERO]; diff --git a/src/gl/context.js b/src/gl/context.ts similarity index 95% rename from src/gl/context.js rename to src/gl/context.ts index 5950d58a59..21415724c8 100644 --- a/src/gl/context.js +++ b/src/gl/context.ts @@ -1,4 +1,3 @@ -// @flow import IndexBuffer from './index_buffer'; import VertexBuffer from './vertex_buffer'; @@ -18,15 +17,15 @@ import type { import type Color from '../style-spec/util/color'; type ClearArgs = { - color?: Color, - depth?: number, - stencil?: number + color?: Color, + depth?: number, + stencil?: number }; class Context { gl: WebGLRenderingContext; extVertexArrayObject: any; - currentNumAttributes: ?number; + currentNumAttributes: number | undefined | null; maxTextureSize: number; clearColor: ClearColor; @@ -192,7 +191,7 @@ class Context { return new IndexBuffer(this, array, dynamicDraw); } - createVertexBuffer(array: StructArray, attributes: $ReadOnlyArray, dynamicDraw?: boolean) { + createVertexBuffer(array: StructArray, attributes: ReadonlyArray, dynamicDraw?: boolean) { return new VertexBuffer(this, array, attributes, dynamicDraw); } @@ -211,7 +210,10 @@ class Context { return new Framebuffer(this, width, height, hasDepth); } - clear({color, depth}: ClearArgs) { + clear({ + color, + depth + }: ClearArgs) { const gl = this.gl; let mask = 0; @@ -242,7 +244,7 @@ class Context { gl.clear(mask); } - setCullFace(cullFaceMode: $ReadOnly) { + setCullFace(cullFaceMode: Readonly) { if (cullFaceMode.enable === false) { this.cullFace.set(false); } else { @@ -252,7 +254,7 @@ class Context { } } - setDepthMode(depthMode: $ReadOnly) { + setDepthMode(depthMode: Readonly) { if (depthMode.func === this.gl.ALWAYS && !depthMode.mask) { this.depthTest.set(false); } else { @@ -263,7 +265,7 @@ class Context { } } - setStencilMode(stencilMode: $ReadOnly) { + setStencilMode(stencilMode: Readonly) { if (stencilMode.test.func === this.gl.ALWAYS && !stencilMode.mask) { this.stencilTest.set(false); } else { @@ -278,7 +280,7 @@ class Context { } } - setColorMode(colorMode: $ReadOnly) { + setColorMode(colorMode: Readonly) { if (deepEqual(colorMode.blendFunction, ColorMode.Replace)) { this.blend.set(false); } else { diff --git a/src/gl/cull_face_mode.js b/src/gl/cull_face_mode.ts similarity index 74% rename from src/gl/cull_face_mode.js rename to src/gl/cull_face_mode.ts index c608820835..412c5b96d6 100644 --- a/src/gl/cull_face_mode.js +++ b/src/gl/cull_face_mode.ts @@ -1,6 +1,4 @@ -// @flow - -import type {CullFaceModeType, FrontFaceType} from './types'; +import type { CullFaceModeType, FrontFaceType } from './types'; const BACK = 0x0405; const CCW = 0x0901; @@ -16,8 +14,8 @@ class CullFaceMode { this.frontFace = frontFace; } - static disabled: $ReadOnly; - static backCCW: $ReadOnly; + static disabled: Readonly; + static backCCW: Readonly; } CullFaceMode.disabled = new CullFaceMode(false, BACK, CCW); diff --git a/src/gl/depth_mode.js b/src/gl/depth_mode.ts similarity index 81% rename from src/gl/depth_mode.js rename to src/gl/depth_mode.ts index e2483faeac..e93fa2c14f 100644 --- a/src/gl/depth_mode.js +++ b/src/gl/depth_mode.ts @@ -1,5 +1,4 @@ -// @flow -import type {DepthFuncType, DepthMaskType, DepthRangeType} from './types'; +import type { DepthFuncType, DepthMaskType, DepthRangeType } from './types'; const ALWAYS = 0x0207; @@ -18,7 +17,7 @@ class DepthMode { this.range = depthRange; } - static disabled: $ReadOnly; + static disabled: Readonly; } DepthMode.ReadOnly = false; diff --git a/src/gl/framebuffer.js b/src/gl/framebuffer.ts similarity index 94% rename from src/gl/framebuffer.js rename to src/gl/framebuffer.ts index 11cac48f75..467340e05c 100644 --- a/src/gl/framebuffer.js +++ b/src/gl/framebuffer.ts @@ -1,5 +1,4 @@ -// @flow -import {ColorAttachment, DepthAttachment} from './value'; +import { ColorAttachment, DepthAttachment } from './value'; import assert from 'assert'; import type Context from './context'; diff --git a/src/gl/index_buffer.js b/src/gl/index_buffer.ts similarity index 99% rename from src/gl/index_buffer.js rename to src/gl/index_buffer.ts index 5648a1b172..3ab628309c 100644 --- a/src/gl/index_buffer.js +++ b/src/gl/index_buffer.ts @@ -1,4 +1,3 @@ -// @flow import assert from 'assert'; import type {StructArray} from '../util/struct_array'; diff --git a/src/gl/stencil_mode.js b/src/gl/stencil_mode.ts similarity index 85% rename from src/gl/stencil_mode.js rename to src/gl/stencil_mode.ts index b878e1d81f..7cc5cf8a90 100644 --- a/src/gl/stencil_mode.js +++ b/src/gl/stencil_mode.ts @@ -1,5 +1,4 @@ -// @flow -import type {StencilOpConstant, StencilTest} from './types'; +import type { StencilOpConstant, StencilTest } from './types'; const ALWAYS = 0x0207; const KEEP = 0x1E00; @@ -22,7 +21,7 @@ class StencilMode { this.pass = pass; } - static disabled: $ReadOnly; + static disabled: Readonly; } StencilMode.disabled = new StencilMode({func: ALWAYS, mask: 0}, 0, 0, KEEP, KEEP, KEEP); diff --git a/src/gl/types.js b/src/gl/types.js deleted file mode 100644 index 834be5cad8..0000000000 --- a/src/gl/types.js +++ /dev/null @@ -1,84 +0,0 @@ -// @flow - -type BlendFuncConstant = - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType; - -export type BlendFuncType = [BlendFuncConstant, BlendFuncConstant]; - -export type BlendEquationType = - | $PropertyType - | $PropertyType - | $PropertyType; - -export type ColorMaskType = [boolean, boolean, boolean, boolean]; - -export type CompareFuncType = - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType; - -export type DepthMaskType = boolean; - -export type DepthRangeType = [number, number]; - -export type DepthFuncType = CompareFuncType; - -export type StencilFuncType = { - func: CompareFuncType, - ref: number, - mask: number -}; - -export type StencilOpConstant = - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType - | $PropertyType; - -export type StencilOpType = [StencilOpConstant, StencilOpConstant, StencilOpConstant]; - -export type TextureUnitType = number; - -export type ViewportType = [number, number, number, number]; - -export type StencilTest = - | { func: $PropertyType, mask: 0 } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: number } - | { func: $PropertyType, mask: 0 }; - -export type CullFaceModeType = - | $PropertyType - | $PropertyType - | $PropertyType - -export type FrontFaceType = - | $PropertyType - | $PropertyType diff --git a/src/gl/types.ts b/src/gl/types.ts new file mode 100644 index 0000000000..948d3cb5a0 --- /dev/null +++ b/src/gl/types.ts @@ -0,0 +1,59 @@ +type BlendFuncConstant = WebGLRenderingContext["ZERO"] | WebGLRenderingContext["ONE"] | WebGLRenderingContext["SRC_COLOR"] | WebGLRenderingContext["ONE_MINUS_SRC_COLOR"] | WebGLRenderingContext["DST_COLOR"] | WebGLRenderingContext["ONE_MINUS_DST_COLOR"] | WebGLRenderingContext["SRC_ALPHA"] | WebGLRenderingContext["ONE_MINUS_SRC_ALPHA"] | WebGLRenderingContext["DST_ALPHA"] | WebGLRenderingContext["ONE_MINUS_DST_ALPHA"] | WebGLRenderingContext["CONSTANT_COLOR"] | WebGLRenderingContext["ONE_MINUS_CONSTANT_COLOR"] | WebGLRenderingContext["CONSTANT_ALPHA"] | WebGLRenderingContext["ONE_MINUS_CONSTANT_ALPHA"] | WebGLRenderingContext["BLEND_COLOR"]; + +export type BlendFuncType = [BlendFuncConstant, BlendFuncConstant]; + +export type BlendEquationType = WebGLRenderingContext["FUNC_ADD"] | WebGLRenderingContext["FUNC_SUBTRACT"] | WebGLRenderingContext["FUNC_REVERSE_SUBTRACT"]; + +export type ColorMaskType = [boolean, boolean, boolean, boolean]; + +export type CompareFuncType = WebGLRenderingContext["NEVER"] | WebGLRenderingContext["LESS"] | WebGLRenderingContext["EQUAL"] | WebGLRenderingContext["LEQUAL"] | WebGLRenderingContext["GREATER"] | WebGLRenderingContext["NOTEQUAL"] | WebGLRenderingContext["GEQUAL"] | WebGLRenderingContext["ALWAYS"]; + +export type DepthMaskType = boolean; + +export type DepthRangeType = [number, number]; + +export type DepthFuncType = CompareFuncType; + +export type StencilFuncType = { + func: CompareFuncType, + ref: number, + mask: number +}; + +export type StencilOpConstant = WebGLRenderingContext["KEEP"] | WebGLRenderingContext["ZERO"] | WebGLRenderingContext["REPLACE"] | WebGLRenderingContext["INCR"] | WebGLRenderingContext["INCR_WRAP"] | WebGLRenderingContext["DECR"] | WebGLRenderingContext["DECR_WRAP"] | WebGLRenderingContext["INVERT"]; + +export type StencilOpType = [StencilOpConstant, StencilOpConstant, StencilOpConstant]; + +export type TextureUnitType = number; + +export type ViewportType = [number, number, number, number]; + +export type StencilTest = { + func: WebGLRenderingContext["NEVER"], + mask: 0 +} | { + func: WebGLRenderingContext["LESS"], + mask: number +} | { + func: WebGLRenderingContext["EQUAL"], + mask: number +} | { + func: WebGLRenderingContext["LEQUAL"], + mask: number +} | { + func: WebGLRenderingContext["GREATER"], + mask: number +} | { + func: WebGLRenderingContext["NOTEQUAL"], + mask: number +} | { + func: WebGLRenderingContext["GEQUAL"], + mask: number +} | { + func: WebGLRenderingContext["ALWAYS"], + mask: 0 +}; + +export type CullFaceModeType = WebGLRenderingContext["FRONT"] | WebGLRenderingContext["BACK"] | WebGLRenderingContext["FRONT_AND_BACK"]; + +export type FrontFaceType = WebGLRenderingContext["CW"] | WebGLRenderingContext["CCW"]; diff --git a/src/gl/value.js b/src/gl/value.ts similarity index 91% rename from src/gl/value.js rename to src/gl/value.ts index 3faabc3c24..fe674c4a5a 100644 --- a/src/gl/value.js +++ b/src/gl/value.ts @@ -1,5 +1,3 @@ -// @flow - import Color from '../style-spec/util/color'; import type Context from './context'; @@ -19,12 +17,12 @@ import type { } from './types'; export interface Value { - current: T; - default: T; - dirty: boolean; - get(): T; - setDefault(): void; - set(value: T): void; + current: T; + default: T; + dirty: boolean; + get(): T; + setDefault(): void; + set(value: T): void; } class BaseValue implements Value { @@ -316,11 +314,11 @@ export class FrontFace extends BaseValue { } } -export class Program extends BaseValue { +export class Program extends BaseValue { getDefault(): WebGLProgram { return null; } - set(v: ?WebGLProgram) { + set(v?: WebGLProgram | null) { if (v === this.current && !this.dirty) return; this.gl.useProgram(v); this.current = v; @@ -354,11 +352,11 @@ export class Viewport extends BaseValue { } } -export class BindFramebuffer extends BaseValue { +export class BindFramebuffer extends BaseValue { getDefault(): WebGLFramebuffer { return null; } - set(v: ?WebGLFramebuffer) { + set(v?: WebGLFramebuffer | null) { if (v === this.current && !this.dirty) return; const gl = this.gl; gl.bindFramebuffer(gl.FRAMEBUFFER, v); @@ -367,11 +365,11 @@ export class BindFramebuffer extends BaseValue { } } -export class BindRenderbuffer extends BaseValue { +export class BindRenderbuffer extends BaseValue { getDefault(): WebGLRenderbuffer { return null; } - set(v: ?WebGLRenderbuffer) { + set(v?: WebGLRenderbuffer | null) { if (v === this.current && !this.dirty) return; const gl = this.gl; gl.bindRenderbuffer(gl.RENDERBUFFER, v); @@ -380,11 +378,11 @@ export class BindRenderbuffer extends BaseValue { } } -export class BindTexture extends BaseValue { +export class BindTexture extends BaseValue { getDefault(): WebGLTexture { return null; } - set(v: ?WebGLTexture) { + set(v?: WebGLTexture | null) { if (v === this.current && !this.dirty) return; const gl = this.gl; gl.bindTexture(gl.TEXTURE_2D, v); @@ -393,11 +391,11 @@ export class BindTexture extends BaseValue { } } -export class BindVertexBuffer extends BaseValue { +export class BindVertexBuffer extends BaseValue { getDefault(): WebGLBuffer { return null; } - set(v: ?WebGLBuffer) { + set(v?: WebGLBuffer | null) { if (v === this.current && !this.dirty) return; const gl = this.gl; gl.bindBuffer(gl.ARRAY_BUFFER, v); @@ -406,11 +404,11 @@ export class BindVertexBuffer extends BaseValue { } } -export class BindElementBuffer extends BaseValue { +export class BindElementBuffer extends BaseValue { getDefault(): WebGLBuffer { return null; } - set(v: ?WebGLBuffer) { + set(v?: WebGLBuffer | null) { // Always rebind const gl = this.gl; gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, v); @@ -457,7 +455,7 @@ export class PixelStoreUnpackPremultiplyAlpha extends BaseValue { set(v: boolean): void { if (v === this.current && !this.dirty) return; const gl = this.gl; - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, (v: any)); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, ((v as any))); this.current = v; this.dirty = false; } @@ -470,13 +468,13 @@ export class PixelStoreUnpackFlipY extends BaseValue { set(v: boolean): void { if (v === this.current && !this.dirty) return; const gl = this.gl; - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, (v: any)); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, ((v as any))); this.current = v; this.dirty = false; } } -class FramebufferAttachment extends BaseValue { +class FramebufferAttachment extends BaseValue { parent: WebGLFramebuffer; context: Context; @@ -494,7 +492,7 @@ export class ColorAttachment extends FramebufferAttachment { setDirty() { this.dirty = true; } - set(v: ?WebGLTexture): void { + set(v?: WebGLTexture | null): void { if (v === this.current && !this.dirty) return; this.context.bindFramebuffer.set(this.parent); // note: it's possible to attach a renderbuffer to the color @@ -507,7 +505,7 @@ export class ColorAttachment extends FramebufferAttachment { } export class DepthAttachment extends FramebufferAttachment { - set(v: ?WebGLRenderbuffer): void { + set(v?: WebGLRenderbuffer | null): void { if (v === this.current && !this.dirty) return; this.context.bindFramebuffer.set(this.parent); // note: it's possible to attach a texture to the depth attachment diff --git a/src/gl/vertex_buffer.js b/src/gl/vertex_buffer.ts similarity index 92% rename from src/gl/vertex_buffer.js rename to src/gl/vertex_buffer.ts index 626ef22f08..4b99ed4d0c 100644 --- a/src/gl/vertex_buffer.js +++ b/src/gl/vertex_buffer.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import type { @@ -32,9 +30,9 @@ const AttributeType = { */ class VertexBuffer { length: number; - attributes: $ReadOnlyArray; + attributes: ReadonlyArray; itemSize: number; - dynamicDraw: ?boolean; + dynamicDraw: boolean | undefined | null; context: Context; buffer: WebGLBuffer; @@ -42,7 +40,7 @@ class VertexBuffer { * @param dynamicDraw Whether this buffer will be repeatedly updated. * @private */ - constructor(context: Context, array: StructArray, attributes: $ReadOnlyArray, dynamicDraw?: boolean) { + constructor(context: Context, array: StructArray, attributes: ReadonlyArray, dynamicDraw?: boolean) { this.length = array.length; this.attributes = attributes; this.itemSize = array.bytesPerElement; @@ -70,7 +68,7 @@ class VertexBuffer { gl.bufferSubData(gl.ARRAY_BUFFER, 0, array.arrayBuffer); } - enableAttributes(gl: WebGLRenderingContext, program: Program<*>) { + enableAttributes(gl: WebGLRenderingContext, program: Program) { for (let j = 0; j < this.attributes.length; j++) { const member = this.attributes[j]; const attribIndex: number | void = program.attributes[member.name]; @@ -86,7 +84,7 @@ class VertexBuffer { * @param program The active WebGL program * @param vertexOffset Index of the starting vertex of the segment */ - setVertexAttribPointers(gl: WebGLRenderingContext, program: Program<*>, vertexOffset: ?number) { + setVertexAttribPointers(gl: WebGLRenderingContext, program: Program, vertexOffset?: number | null) { for (let j = 0; j < this.attributes.length; j++) { const member = this.attributes[j]; const attribIndex: number | void = program.attributes[member.name]; @@ -95,7 +93,7 @@ class VertexBuffer { gl.vertexAttribPointer( attribIndex, member.components, - (gl: any)[AttributeType[member.type]], + (gl as any)[AttributeType[member.type]], false, this.itemSize, member.offset + (this.itemSize * (vertexOffset || 0)) diff --git a/src/index.js b/src/index.ts similarity index 98% rename from src/index.js rename to src/index.ts index e559b7defb..7d7b640c78 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import supported from '@mapbox/mapbox-gl-supported'; @@ -92,7 +90,7 @@ const exported = { * maplibregl.accessToken = myAccessToken; * @see [Display a map](https://maplibre.org/maplibre-gl-js-docs/examples/) */ - get accessToken(): ?string { + get accessToken(): string | undefined | null { return config.ACCESS_TOKEN; }, @@ -108,7 +106,7 @@ const exported = { * @example * maplibregl.baseApiUrl = 'https://api.mapbox.com'; */ - get baseApiUrl(): ?string { + get baseApiUrl(): string | undefined | null { return config.API_URL; }, @@ -168,7 +166,7 @@ const exported = { * @example * maplibregl.clearStorage(); */ - clearStorage(callback?: (err: ?Error) => void) { + clearStorage(callback?: (err?: Error | null) => void) { clearTileCache(callback); }, diff --git a/src/render/draw_background.js b/src/render/draw_background.ts similarity index 99% rename from src/render/draw_background.js rename to src/render/draw_background.ts index 3855b519da..e54905b287 100644 --- a/src/render/draw_background.js +++ b/src/render/draw_background.ts @@ -1,5 +1,3 @@ -// @flow - import StencilMode from '../gl/stencil_mode'; import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; diff --git a/src/render/draw_circle.js b/src/render/draw_circle.ts similarity index 90% rename from src/render/draw_circle.js rename to src/render/draw_circle.ts index d0d152bcac..976d60fe44 100644 --- a/src/render/draw_circle.js +++ b/src/render/draw_circle.ts @@ -1,5 +1,3 @@ -// @flow - import StencilMode from '../gl/stencil_mode'; import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; @@ -21,17 +19,17 @@ import type {CircleUniformsType} from './program/circle_program'; export default drawCircles; type TileRenderState = { - programConfiguration: ProgramConfiguration, - program: Program<*>, - layoutVertexBuffer: VertexBuffer, - indexBuffer: IndexBuffer, - uniformValues: UniformValues + programConfiguration: ProgramConfiguration, + program: Program, + layoutVertexBuffer: VertexBuffer, + indexBuffer: IndexBuffer, + uniformValues: UniformValues }; type SegmentsTileRenderState = { - segments: SegmentVector, - sortKey: number, - state: TileRenderState + segments: SegmentVector, + sortKey: number, + state: TileRenderState }; function drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleStyleLayer, coords: Array) { @@ -61,7 +59,7 @@ function drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleSt const coord = coords[i]; const tile = sourceCache.getTile(coord); - const bucket: ?CircleBucket<*> = (tile.getBucket(layer): any); + const bucket: CircleBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; const programConfiguration = bucket.programConfigurations.get(layer.id); @@ -83,7 +81,7 @@ function drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleSt for (const segment of oldSegments) { segmentsRenderStates.push({ segments: new SegmentVector([segment]), - sortKey: ((segment.sortKey: any): number), + sortKey: (segment.sortKey as any as number), state }); } diff --git a/src/render/draw_collision_debug.js b/src/render/draw_collision_debug.ts similarity index 95% rename from src/render/draw_collision_debug.js rename to src/render/draw_collision_debug.ts index 473238be02..6df0779341 100644 --- a/src/render/draw_collision_debug.js +++ b/src/render/draw_collision_debug.ts @@ -1,5 +1,3 @@ -// @flow - import type Painter from './painter'; import type SourceCache from '../source/source_cache'; import type StyleLayer from '../style/style_layer'; @@ -20,15 +18,15 @@ import IndexBuffer from '../gl/index_buffer'; export default drawCollisionDebug; type TileBatch = { - circleArray: Array, - circleOffset: number, - transform: mat4, - invTransform: mat4 + circleArray: Array, + circleOffset: number, + transform: mat4, + invTransform: mat4 }; -let quadTriangles: ?QuadTriangleArray; +let quadTriangles: QuadTriangleArray | undefined | null; -function drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array, translate: [number, number], translateAnchor: 'map' | 'viewport', isText: boolean) { +function drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array, translate: [number, number], translateAnchor: "map" | "viewport", isText: boolean) { const context = painter.context; const gl = context.gl; const program = painter.useProgram('collisionBox'); @@ -39,7 +37,7 @@ function drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: S for (let i = 0; i < coords.length; i++) { const coord = coords[i]; const tile = sourceCache.getTile(coord); - const bucket: ?SymbolBucket = (tile.getBucket(layer): any); + const bucket: SymbolBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; let posMatrix = coord.posMatrix; if (translate[0] !== 0 || translate[1] !== 0) { diff --git a/src/render/draw_custom.js b/src/render/draw_custom.ts similarity index 99% rename from src/render/draw_custom.js rename to src/render/draw_custom.ts index a4a90bae2e..3758a99d6f 100644 --- a/src/render/draw_custom.js +++ b/src/render/draw_custom.ts @@ -1,5 +1,3 @@ -// @flow - export default drawCustom; import DepthMode from '../gl/depth_mode'; diff --git a/src/render/draw_debug.js b/src/render/draw_debug.ts similarity index 99% rename from src/render/draw_debug.js rename to src/render/draw_debug.ts index bedb06a573..2230f642e1 100644 --- a/src/render/draw_debug.js +++ b/src/render/draw_debug.ts @@ -1,5 +1,3 @@ -// @flow - import DepthMode from '../gl/depth_mode'; import StencilMode from '../gl/stencil_mode'; import CullFaceMode from '../gl/cull_face_mode'; diff --git a/src/render/draw_fill.js b/src/render/draw_fill.ts similarity index 97% rename from src/render/draw_fill.js rename to src/render/draw_fill.ts index 7f673f944d..5689821d50 100644 --- a/src/render/draw_fill.js +++ b/src/render/draw_fill.ts @@ -1,5 +1,3 @@ -// @flow - import Color from '../style-spec/util/color'; import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; @@ -30,7 +28,7 @@ function drawFill(painter: Painter, sourceCache: SourceCache, layer: FillStyleLa const pattern = layer.paint.get('fill-pattern'); const pass = painter.opaquePassEnabledForLayer() && - (!pattern.constantOr((1: any)) && + (!pattern.constantOr(((1 as any))) && color.constantOr(Color.transparent).a === 1 && opacity.constantOr(0) === 1) ? 'opaque' : 'translucent'; @@ -62,7 +60,7 @@ function drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode const gl = painter.context.gl; const patternProperty = layer.paint.get('fill-pattern'); - const image = patternProperty && patternProperty.constantOr((1: any)); + const image = patternProperty && patternProperty.constantOr(((1 as any))); const crossfade = layer.getCrossfadeParameters(); let drawMode, programName, uniformValues, indexBuffer, segments; @@ -78,7 +76,7 @@ function drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode const tile = sourceCache.getTile(coord); if (image && !tile.patternsLoaded()) continue; - const bucket: ?FillBucket = (tile.getBucket(layer): any); + const bucket: FillBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; const programConfiguration = bucket.programConfigurations.get(layer.id); diff --git a/src/render/draw_fill_extrusion.js b/src/render/draw_fill_extrusion.ts similarity index 95% rename from src/render/draw_fill_extrusion.js rename to src/render/draw_fill_extrusion.ts index b9a0dde384..e910c8cef4 100644 --- a/src/render/draw_fill_extrusion.js +++ b/src/render/draw_fill_extrusion.ts @@ -1,5 +1,3 @@ -// @flow - import DepthMode from '../gl/depth_mode'; import StencilMode from '../gl/stencil_mode'; import ColorMode from '../gl/color_mode'; @@ -26,7 +24,7 @@ function draw(painter: Painter, source: SourceCache, layer: FillExtrusionStyleLa if (painter.renderPass === 'translucent') { const depthMode = new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D); - if (opacity === 1 && !layer.paint.get('fill-extrusion-pattern').constantOr((1: any))) { + if (opacity === 1 && !layer.paint.get('fill-extrusion-pattern').constantOr(((1 as any)))) { const colorMode = painter.colorModeForRenderPass(); drawExtrusionTiles(painter, source, layer, coords, depthMode, StencilMode.disabled, colorMode); @@ -51,13 +49,13 @@ function drawExtrusionTiles(painter, source, layer, coords, depthMode, stencilMo const context = painter.context; const gl = context.gl; const patternProperty = layer.paint.get('fill-extrusion-pattern'); - const image = patternProperty.constantOr((1: any)); + const image = patternProperty.constantOr(((1 as any))); const crossfade = layer.getCrossfadeParameters(); const opacity = layer.paint.get('fill-extrusion-opacity'); for (const coord of coords) { const tile = source.getTile(coord); - const bucket: ?FillExtrusionBucket = (tile.getBucket(layer): any); + const bucket: FillExtrusionBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; const programConfiguration = bucket.programConfigurations.get(layer.id); diff --git a/src/render/draw_heatmap.js b/src/render/draw_heatmap.ts similarity index 98% rename from src/render/draw_heatmap.js rename to src/render/draw_heatmap.ts index 4b60a48e83..d7d06f4027 100644 --- a/src/render/draw_heatmap.js +++ b/src/render/draw_heatmap.ts @@ -1,5 +1,3 @@ -// @flow - import Texture from './texture'; import Color from '../style-spec/util/color'; import DepthMode from '../gl/depth_mode'; @@ -47,7 +45,7 @@ function drawHeatmap(painter: Painter, sourceCache: SourceCache, layer: HeatmapS if (sourceCache.hasRenderableParent(coord)) continue; const tile = sourceCache.getTile(coord); - const bucket: ?HeatmapBucket = (tile.getBucket(layer): any); + const bucket: HeatmapBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; const programConfiguration = bucket.programConfigurations.get(layer.id); diff --git a/src/render/draw_hillshade.js b/src/render/draw_hillshade.ts similarity index 99% rename from src/render/draw_hillshade.js rename to src/render/draw_hillshade.ts index 25519fce4b..32443c1766 100644 --- a/src/render/draw_hillshade.js +++ b/src/render/draw_hillshade.ts @@ -1,5 +1,3 @@ -// @flow - import Texture from './texture'; import StencilMode from '../gl/stencil_mode'; import DepthMode from '../gl/depth_mode'; diff --git a/src/render/draw_line.js b/src/render/draw_line.ts similarity index 97% rename from src/render/draw_line.js rename to src/render/draw_line.ts index 48c2813b01..56fce99e3b 100644 --- a/src/render/draw_line.js +++ b/src/render/draw_line.ts @@ -1,5 +1,3 @@ -// @flow - import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; import Texture from './texture'; @@ -31,7 +29,7 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay const dasharray = layer.paint.get('line-dasharray'); const patternProperty = layer.paint.get('line-pattern'); - const image = patternProperty.constantOr((1: any)); + const image = patternProperty.constantOr(((1 as any))); const gradient = layer.paint.get('line-gradient'); const crossfade = layer.getCrossfadeParameters(); @@ -51,7 +49,7 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay if (image && !tile.patternsLoaded()) continue; - const bucket: ?LineBucket = (tile.getBucket(layer): any); + const bucket: LineBucket | undefined | null = (tile.getBucket(layer) as any); if (!bucket) continue; const programConfiguration = bucket.programConfigurations.get(layer.id); diff --git a/src/render/draw_raster.js b/src/render/draw_raster.ts similarity index 99% rename from src/render/draw_raster.js rename to src/render/draw_raster.ts index d65cffaa90..51ab4884c1 100644 --- a/src/render/draw_raster.js +++ b/src/render/draw_raster.ts @@ -1,6 +1,4 @@ -// @flow - -import {clamp} from '../util/util'; +import { clamp } from '../util/util'; import ImageSource from '../source/image_source'; import browser from '../util/browser'; diff --git a/src/render/draw_symbol.js b/src/render/draw_symbol.ts similarity index 95% rename from src/render/draw_symbol.js rename to src/render/draw_symbol.ts index 9160cd8c82..7632225709 100644 --- a/src/render/draw_symbol.js +++ b/src/render/draw_symbol.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import drawCollisionDebug from './draw_collision_debug'; @@ -27,7 +25,8 @@ import { import type Painter from './painter'; import type SourceCache from '../source/source_cache'; import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; -import type SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket'; +import type SymbolBucket from '../data/bucket/symbol_bucket'; +import type { SymbolBuffers } from '../data/bucket/symbol_bucket'; import type Texture from '../render/texture'; import type {OverscaledTileID} from '../source/tile_id'; import type {UniformValues} from './uniform_binding'; @@ -37,22 +36,24 @@ import type {CrossTileID, VariableOffset} from '../symbol/placement'; export default drawSymbols; type SymbolTileRenderState = { - segments: SegmentVector, - sortKey: number, - state: { - program: any, - buffers: SymbolBuffers, - uniformValues: any, - atlasTexture: Texture, - atlasTextureIcon: Texture | null, - atlasInterpolation: any, - atlasInterpolationIcon: any, - isSDF: boolean, - hasHalo: boolean - } + segments: SegmentVector, + sortKey: number, + state: { + program: any, + buffers: SymbolBuffers, + uniformValues: any, + atlasTexture: Texture, + atlasTextureIcon: Texture | null, + atlasInterpolation: any, + atlasInterpolationIcon: any, + isSDF: boolean, + hasHalo: boolean + } }; -function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, variableOffsets: {[_: CrossTileID]: VariableOffset}) { +function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, variableOffsets: { + [_ in CrossTileID]: VariableOffset; +}) { if (painter.renderPass !== 'translucent') return; // Disable the stencil test so that labels aren't clipped to tile boundaries. @@ -118,7 +119,7 @@ function updateVariableAnchors(coords, painter, layer, sourceCache, rotationAlig for (const coord of coords) { const tile = sourceCache.getTile(coord); - const bucket: SymbolBucket = (tile.getBucket(layer): any); + const bucket: SymbolBucket = (tile.getBucket(layer) as any); if (!bucket || !bucket.text || !bucket.text.segments.get().length) continue; const sizeData = bucket.textSizeData; @@ -247,7 +248,7 @@ function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate for (const coord of coords) { const tile = sourceCache.getTile(coord); - const bucket: SymbolBucket = (tile.getBucket(layer): any); + const bucket: SymbolBucket = (tile.getBucket(layer) as any); if (!bucket) continue; const buffers = isText ? bucket.text : bucket.icon; if (!buffers || !buffers.segments.get().length) continue; @@ -340,7 +341,7 @@ function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate for (const segment of oldSegments) { tileRenderState.push({ segments: new SegmentVector([segment]), - sortKey: ((segment.sortKey: any): number), + sortKey: (segment.sortKey as any as number), state }); } @@ -370,7 +371,7 @@ function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate } if (state.isSDF) { - const uniformValues = ((state.uniformValues: any): UniformValues); + const uniformValues = (state.uniformValues as any as UniformValues); if (state.hasHalo) { uniformValues['u_is_halo'] = 1; drawSymbolElements(state.buffers, segmentState.segments, layer, painter, state.program, depthMode, stencilMode, colorMode, uniformValues); diff --git a/src/render/glyph_atlas.js b/src/render/glyph_atlas.ts similarity index 83% rename from src/render/glyph_atlas.js rename to src/render/glyph_atlas.ts index 6f68bd00c6..0b7ba33cae 100644 --- a/src/render/glyph_atlas.js +++ b/src/render/glyph_atlas.ts @@ -1,6 +1,4 @@ -// @flow - -import {AlphaImage} from '../util/image'; +import { AlphaImage } from '../util/image'; import {register} from '../util/web_worker_transfer'; import potpack from 'potpack'; @@ -9,24 +7,32 @@ import type {GlyphMetrics, StyleGlyph} from '../style/style_glyph'; const padding = 1; export type Rect = { - x: number, - y: number, - w: number, - h: number + x: number, + y: number, + w: number, + h: number }; export type GlyphPosition = { - rect: Rect, - metrics: GlyphMetrics + rect: Rect, + metrics: GlyphMetrics }; -export type GlyphPositions = {[_: string]: {[_: number]: GlyphPosition } } +export type GlyphPositions = { + [_: string]: { + [_: number]: GlyphPosition + } +}; export default class GlyphAtlas { image: AlphaImage; positions: GlyphPositions; - constructor(stacks: {[_: string]: {[_: number]: ?StyleGlyph } }) { + constructor(stacks: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }) { const positions = {}; const bins = []; diff --git a/src/render/glyph_manager.js b/src/render/glyph_manager.ts similarity index 76% rename from src/render/glyph_manager.js rename to src/render/glyph_manager.ts index 66b8dcd74f..dfaa1456f8 100644 --- a/src/render/glyph_manager.js +++ b/src/render/glyph_manager.ts @@ -1,5 +1,3 @@ -// @flow - import loadGlyphRange from '../style/load_glyph_range'; import TinySDF from '@mapbox/tiny-sdf'; @@ -12,34 +10,52 @@ import type {RequestManager} from '../util/mapbox'; import type {Callback} from '../types/callback'; type Entry = { - // null means we've requested the range, but the glyph wasn't included in the result. - glyphs: {[id: number]: StyleGlyph | null}, - requests: {[range: number]: Array>}, - ranges: {[range: number]: boolean | null}, - tinySDF?: TinySDF + // null means we've requested the range, but the glyph wasn't included in the result. + glyphs: { + [id: number]: StyleGlyph | null + }, + requests: { + [range: number]: Array> + }, + ranges: { + [range: number]: boolean | null + }, + tinySDF?: TinySDF }; class GlyphManager { requestManager: RequestManager; - localIdeographFontFamily: ?string; - entries: {[_: string]: Entry}; - url: ?string; + localIdeographFontFamily: string | undefined | null; + entries: { + [_: string]: Entry + }; + url: string | undefined | null; // exposed as statics to enable stubbing in unit tests static loadGlyphRange: typeof loadGlyphRange; - static TinySDF: Class; + static TinySDF: { + new (...args: any): TinySDF + }; - constructor(requestManager: RequestManager, localIdeographFontFamily: ?string) { + constructor(requestManager: RequestManager, localIdeographFontFamily?: string | null) { this.requestManager = requestManager; this.localIdeographFontFamily = localIdeographFontFamily; this.entries = {}; } - setURL(url: ?string) { + setURL(url?: string | null) { this.url = url; } - getGlyphs(glyphs: {[stack: string]: Array}, callback: Callback<{[stack: string]: {[id: number]: ?StyleGlyph}}>) { + getGlyphs(glyphs: { + [stack: string]: Array + }, callback: Callback<{ + [stack: string]: { + [id: number]: StyleGlyph | undefined | null + } + }>) { const all = []; for (const stack in glyphs) { @@ -48,7 +64,11 @@ class GlyphManager { } } - asyncAll(all, ({stack, id}, callback: Callback<{stack: string, id: number, glyph: ?StyleGlyph}>) => { + asyncAll(all, ({stack, id}, callback: Callback<{ + stack: string, + id: number, + glyph: StyleGlyph | undefined | null + }>) => { let entry = this.entries[stack]; if (!entry) { entry = this.entries[stack] = { @@ -85,8 +105,10 @@ class GlyphManager { let requests = entry.requests[range]; if (!requests) { requests = entry.requests[range] = []; - GlyphManager.loadGlyphRange(stack, range, (this.url: any), this.requestManager, - (err, response: ?{[_: number]: StyleGlyph | null}) => { + GlyphManager.loadGlyphRange(stack, range, ((this.url as any)), this.requestManager, + (err, response?: { + [_: number]: StyleGlyph | null + } | null) => { if (response) { for (const id in response) { if (!this._doesCharSupportLocalGlyph(+id)) { @@ -102,14 +124,20 @@ class GlyphManager { }); } - requests.push((err, result: ?{[_: number]: StyleGlyph | null}) => { + requests.push((err, result?: { + [_: number]: StyleGlyph | null + } | null) => { if (err) { callback(err); } else if (result) { callback(null, {stack, id, glyph: result[id] || null}); } }); - }, (err, glyphs: ?Array<{stack: string, id: number, glyph: ?StyleGlyph}>) => { + }, (err, glyphs?: Array<{ + stack: string, + id: number, + glyph: StyleGlyph | undefined | null + }> | null) => { if (err) { callback(err); } else if (glyphs) { @@ -139,7 +167,7 @@ class GlyphManager { /* eslint-enable new-cap */ } - _tinySDF(entry: Entry, stack: string, id: number): ?StyleGlyph { + _tinySDF(entry: Entry, stack: string, id: number): StyleGlyph | undefined | null { const family = this.localIdeographFontFamily; if (!family) { return; diff --git a/src/render/image_atlas.js b/src/render/image_atlas.ts similarity index 81% rename from src/render/image_atlas.js rename to src/render/image_atlas.ts index aeab7b91a7..90b82cf7fd 100644 --- a/src/render/image_atlas.js +++ b/src/render/image_atlas.ts @@ -1,6 +1,4 @@ -// @flow - -import {RGBAImage} from '../util/image'; +import { RGBAImage } from '../util/image'; import {register} from '../util/web_worker_transfer'; import potpack from 'potpack'; @@ -12,21 +10,27 @@ const IMAGE_PADDING: number = 1; export {IMAGE_PADDING}; type Rect = { - x: number, - y: number, - w: number, - h: number + x: number, + y: number, + w: number, + h: number }; export class ImagePosition { paddedRect: Rect; pixelRatio: number; version: number; - stretchY: ?Array<[number, number]>; - stretchX: ?Array<[number, number]>; - content: ?[number, number, number, number]; - - constructor(paddedRect: Rect, {pixelRatio, version, stretchX, stretchY, content}: StyleImage) { + stretchY: Array<[number, number]> | undefined | null; + stretchX: Array<[number, number]> | undefined | null; + content: [number, number, number, number] | undefined | null; + + constructor(paddedRect: Rect, { + pixelRatio, + version, + stretchX, + stretchY, + content + }: StyleImage) { this.paddedRect = paddedRect; this.pixelRatio = pixelRatio; this.stretchX = stretchX; @@ -63,12 +67,20 @@ export class ImagePosition { export default class ImageAtlas { image: RGBAImage; - iconPositions: {[_: string]: ImagePosition}; - patternPositions: {[_: string]: ImagePosition}; + iconPositions: { + [_: string]: ImagePosition + }; + patternPositions: { + [_: string]: ImagePosition + }; haveRenderCallbacks: Array; - uploaded: ?boolean; + uploaded: boolean | undefined | null; - constructor(icons: {[_: string]: StyleImage}, patterns: {[_: string]: StyleImage}) { + constructor(icons: { + [_: string]: StyleImage + }, patterns: { + [_: string]: StyleImage + }) { const iconPositions = {}, patternPositions = {}; this.haveRenderCallbacks = []; @@ -107,7 +119,11 @@ export default class ImageAtlas { this.patternPositions = patternPositions; } - addImages(images: {[_: string]: StyleImage}, positions: {[_: string]: ImagePosition}, bins: Array) { + addImages(images: { + [_: string]: StyleImage + }, positions: { + [_: string]: ImagePosition + }, bins: Array) { for (const id in images) { const src = images[id]; const bin = { @@ -133,7 +149,7 @@ export default class ImageAtlas { } } - patchUpdatedImage(position: ?ImagePosition, image: ?StyleImage, texture: Texture) { + patchUpdatedImage(position: ImagePosition | undefined | null, image: StyleImage | undefined | null, texture: Texture) { if (!position || !image) return; if (position.version === image.version) return; diff --git a/src/render/image_manager.js b/src/render/image_manager.ts similarity index 90% rename from src/render/image_manager.js rename to src/render/image_manager.ts index 8bf32f5f07..ba69546f4a 100644 --- a/src/render/image_manager.js +++ b/src/render/image_manager.ts @@ -1,5 +1,3 @@ -// @flow - import potpack from 'potpack'; import {Event, ErrorEvent, Evented} from '../util/evented'; @@ -16,8 +14,8 @@ import type {Bin} from 'potpack'; import type {Callback} from '../types/callback'; type Pattern = { - bin: Bin, - position: ImagePosition + bin: Bin, + position: ImagePosition }; // When copied into the atlas texture, image data is padded by one pixel on each side. Icon @@ -38,15 +36,28 @@ const padding = 1; to refactor this. */ class ImageManager extends Evented { - images: {[_: string]: StyleImage}; - updatedImages: {[_: string]: boolean}; - callbackDispatchedThisFrame: {[_: string]: boolean}; + images: { + [_: string]: StyleImage + }; + updatedImages: { + [_: string]: boolean + }; + callbackDispatchedThisFrame: { + [_: string]: boolean + }; loaded: boolean; - requestors: Array<{ids: Array, callback: Callback<{[_: string]: StyleImage}>}>; - - patterns: {[_: string]: Pattern}; + requestors: Array<{ + ids: Array, + callback: Callback<{ + [_: string]: StyleImage + }> + }>; + + patterns: { + [_: string]: Pattern + }; atlasImage: RGBAImage; - atlasTexture: ?Texture; + atlasTexture: Texture | undefined | null; dirty: boolean; constructor() { @@ -81,7 +92,7 @@ class ImageManager extends Evented { } } - getImage(id: string): ?StyleImage { + getImage(id: string): StyleImage | undefined | null { return this.images[id]; } @@ -109,7 +120,7 @@ class ImageManager extends Evented { return valid; } - _validateStretch(stretch: ?Array<[number, number]> | void, size: number) { + _validateStretch(stretch: Array<[number, number]> | undefined | null | void, size: number) { if (!stretch) return true; let last = 0; for (const part of stretch) { @@ -119,7 +130,7 @@ class ImageManager extends Evented { return true; } - _validateContent(content: ?[number, number, number, number] | void, image: StyleImage) { + _validateContent(content: [number, number, number, number] | undefined | null | void, image: StyleImage) { if (!content) return true; if (content.length !== 4) return false; if (content[0] < 0 || image.data.width < content[0]) return false; @@ -156,7 +167,9 @@ class ImageManager extends Evented { return Object.keys(this.images); } - getImages(ids: Array, callback: Callback<{[_: string]: StyleImage}>) { + getImages(ids: Array, callback: Callback<{ + [_: string]: StyleImage + }>) { // If the sprite has been loaded, or if all the icon dependencies are already present // (i.e. if they've been added via runtime styling), then notify the requestor immediately. // Otherwise, delay notification until the sprite is loaded. At that point, if any of the @@ -176,7 +189,9 @@ class ImageManager extends Evented { } } - _notify(ids: Array, callback: Callback<{[_: string]: StyleImage}>) { + _notify(ids: Array, callback: Callback<{ + [_: string]: StyleImage + }>) { const response = {}; for (const id of ids) { @@ -211,7 +226,7 @@ class ImageManager extends Evented { return {width, height}; } - getPattern(id: string): ?ImagePosition { + getPattern(id: string): ImagePosition | undefined | null { const pattern = this.patterns[id]; const image = this.getImage(id); diff --git a/src/render/line_atlas.js b/src/render/line_atlas.ts similarity index 97% rename from src/render/line_atlas.js rename to src/render/line_atlas.ts index c755ea8990..c054b5ff4b 100644 --- a/src/render/line_atlas.js +++ b/src/render/line_atlas.ts @@ -1,6 +1,4 @@ -// @flow - -import {warnOnce} from '../util/util'; +import { warnOnce } from '../util/util'; import type Context from '../gl/context'; @@ -19,7 +17,9 @@ class LineAtlas { nextRow: number; bytes: number; data: Uint8Array; - dashEntry: {[_: string]: any}; + dashEntry: { + [_: string]: any + }; dirty: boolean; texture: WebGLTexture; @@ -78,7 +78,7 @@ class LineAtlas { return ranges; } - addRoundDash(ranges: Object, stretch: number, n: number) { + addRoundDash(ranges: any, stretch: number, n: number) { const halfStretch = stretch / 2; for (let y = -n; y <= n; y++) { @@ -108,7 +108,7 @@ class LineAtlas { } } - addRegularDash(ranges: Object) { + addRegularDash(ranges: any) { // Collapse any zero-length range // Collapse neighbouring same-type parts into a single part diff --git a/src/render/painter.js b/src/render/painter.ts similarity index 94% rename from src/render/painter.js rename to src/render/painter.ts index 5650743480..42b3c1c2f8 100644 --- a/src/render/painter.js +++ b/src/render/painter.ts @@ -1,5 +1,3 @@ -// @flow - import browser from '../util/browser'; import window from '../util/window'; @@ -65,18 +63,18 @@ import type IndexBuffer from '../gl/index_buffer'; import type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types'; import type ResolvedImage from '../style-spec/expression/types/resolved_image'; -export type RenderPass = 'offscreen' | 'opaque' | 'translucent'; +export type RenderPass = "offscreen" | "opaque" | "translucent"; type PainterOptions = { - showOverdrawInspector: boolean, - showTileBoundaries: boolean, - showPadding: boolean, - rotating: boolean, - zooming: boolean, - moving: boolean, - gpuTiming: boolean, - fadeDuration: number -} + showOverdrawInspector: boolean, + showTileBoundaries: boolean, + showPadding: boolean, + rotating: boolean, + zooming: boolean, + moving: boolean, + gpuTiming: boolean, + fadeDuration: number +}; /** * Initialize a new painter object. @@ -87,7 +85,9 @@ type PainterOptions = { class Painter { context: Context; transform: Transform; - _tileTextures: {[_: number]: Array }; + _tileTextures: { + [_: number]: Array + }; numSublayers: number; depthEpsilon: number; emptyProgramConfiguration: ProgramConfiguration; @@ -103,7 +103,9 @@ class Painter { viewportSegments: SegmentVector; quadTriangleIndexBuffer: IndexBuffer; tileBorderIndexBuffer: IndexBuffer; - _tileClippingMaskIDs: {[_: string]: number }; + _tileClippingMaskIDs: { + [_: string]: number + }; stencilClearMode: StencilMode; style: Style; options: PainterOptions; @@ -114,14 +116,18 @@ class Painter { opaquePassCutoff: number; renderPass: RenderPass; currentLayer: number; - currentStencilSource: ?string; + currentStencilSource: string | undefined | null; nextStencilID: number; id: string; _showOverdrawInspector: boolean; - cache: {[_: string]: Program<*> }; + cache: { + [_: string]: Program + }; crossTileSymbolIndex: CrossTileSymbolIndex; symbolFadeChange: number; - gpuTimers: {[_: string]: any }; + gpuTimers: { + [_: string]: any + }; emptyTexture: Texture; debugOverlayTexture: Texture; debugOverlayCanvas: HTMLCanvasElement; @@ -303,7 +309,9 @@ class Painter { * * Returns [StencilMode for tile overscaleZ map, sortedCoords]. */ - stencilConfigForOverlap(tileIDs: Array): [{[_: number]: $ReadOnly}, Array] { + stencilConfigForOverlap(tileIDs: Array): [{ + [_: number]: Readonly + }, Array] { const gl = this.context.gl; const coords = tileIDs.sort((a, b) => b.overscaledZ - a.overscaledZ); const minTileZ = coords[coords.length - 1].overscaledZ; @@ -323,7 +331,7 @@ class Painter { return [{[minTileZ]: StencilMode.disabled}, coords]; } - colorModeForRenderPass(): $ReadOnly { + colorModeForRenderPass(): Readonly { const gl = this.context.gl; if (this._showOverdrawInspector) { const numOverdrawSteps = 8; @@ -337,7 +345,7 @@ class Painter { } } - depthModeForSublayer(n: number, mask: DepthMaskType, func: ?DepthFuncType): $ReadOnly { + depthModeForSublayer(n: number, mask: DepthMaskType, func?: DepthFuncType | null): Readonly { if (!this.opaquePassEnabledForLayer()) return DepthMode.disabled; const depth = 1 - ((1 + this.currentLayer) * this.numSublayers + n) * this.depthEpsilon; return new DepthMode(func || this.context.gl.LEQUAL, mask, [depth, depth]); @@ -376,9 +384,15 @@ class Painter { } } - const coordsAscending: {[_: string]: Array} = {}; - const coordsDescending: {[_: string]: Array} = {}; - const coordsDescendingSymbol: {[_: string]: Array} = {}; + const coordsAscending: { + [_: string]: Array + } = {}; + const coordsDescending: { + [_: string]: Array + } = {}; + const coordsDescendingSymbol: { + [_: string]: Array + } = {}; for (const id in sourceCaches) { const sourceCache = sourceCaches[id]; @@ -522,7 +536,9 @@ class Painter { return currentLayerTimers; } - queryGpuTimers(gpuTimers: {[_: string]: any}) { + queryGpuTimers(gpuTimers: { + [_: string]: any + }) { const layers = {}; for (const layerId in gpuTimers) { const gpuTimer = gpuTimers[layerId]; @@ -540,7 +556,7 @@ class Painter { * @returns {Float32Array} matrix * @private */ - translatePosMatrix(matrix: Float32Array, tile: Tile, translate: [number, number], translateAnchor: 'map' | 'viewport', inViewportPixelUnitsUnits?: boolean) { + translatePosMatrix(matrix: Float32Array, tile: Tile, translate: [number, number], translateAnchor: "map" | "viewport", inViewportPixelUnitsUnits?: boolean) { if (!translate[0] && !translate[1]) return matrix; const angle = inViewportPixelUnitsUnits ? @@ -587,7 +603,7 @@ class Painter { * @returns true if a needed image is missing and rendering needs to be skipped. * @private */ - isPatternMissing(image: ?CrossFaded): boolean { + isPatternMissing(image?: CrossFaded | null): boolean { if (!image) return false; if (!image.from || !image.to) return true; const imagePosA = this.imageManager.getPattern(image.from.toString()); @@ -595,7 +611,7 @@ class Painter { return !imagePosA || !imagePosB; } - useProgram(name: string, programConfiguration: ?ProgramConfiguration): Program { + useProgram(name: string, programConfiguration?: ProgramConfiguration | null): Program { this.cache = this.cache || {}; const key = `${name}${programConfiguration ? programConfiguration.cacheKey : ''}${this._showOverdrawInspector ? '/overdraw' : ''}`; if (!this.cache[key]) { diff --git a/src/render/program.js b/src/render/program.ts similarity index 82% rename from src/render/program.js rename to src/render/program.ts index 7e273c0a33..aed691ec54 100644 --- a/src/render/program.js +++ b/src/render/program.ts @@ -1,6 +1,4 @@ -// @flow - -import {prelude} from '../shaders'; +import { prelude } from '../shaders'; import assert from 'assert'; import ProgramConfiguration from '../data/program_configuration'; import VertexArrayObject from './vertex_array_object'; @@ -16,12 +14,9 @@ import type CullFaceMode from '../gl/cull_face_mode'; import type {UniformBindings, UniformValues, UniformLocations} from './uniform_binding'; import type {BinderUniform} from '../data/program_configuration'; -export type DrawMode = - | $PropertyType - | $PropertyType - | $PropertyType; +export type DrawMode = WebGLRenderingContext["LINES"] | WebGLRenderingContext["TRIANGLES"] | WebGLRenderingContext["LINE_STRIP"]; -function getTokenizedAttributesAndUniforms (array: Array): Array { +function getTokenizedAttributesAndUniforms(array: Array): Array { const result = []; for (let i = 0; i < array.length; i++) { @@ -31,9 +26,11 @@ function getTokenizedAttributesAndUniforms (array: Array): Array } return result; } -class Program { +class Program { program: WebGLProgram; - attributes: {[_: string]: number}; + attributes: { + [_: string]: number + }; numAttributes: number; fixedUniforms: Us; binderUniforms: Array; @@ -41,9 +38,14 @@ class Program { constructor(context: Context, name: string, - source: {fragmentSource: string, vertexSource: string, staticAttributes: Array, staticUniforms: Array}, - configuration: ?ProgramConfiguration, - fixedUniforms: (Context, UniformLocations) => Us, + source: { + fragmentSource: string, + vertexSource: string, + staticAttributes: Array, + staticUniforms: Array + }, + configuration: ProgramConfiguration | undefined | null, + fixedUniforms: (b: Context, a: UniformLocations) => Us, showOverdrawInspector: boolean) { const gl = context.gl; this.program = gl.createProgram(); @@ -75,7 +77,7 @@ class Program { } gl.shaderSource(fragmentShader, fragmentSource); gl.compileShader(fragmentShader); - assert(gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(fragmentShader): any)); + assert(gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS), ((gl.getShaderInfoLog(fragmentShader) as any))); gl.attachShader(this.program, fragmentShader); const vertexShader = gl.createShader(gl.VERTEX_SHADER); @@ -85,7 +87,7 @@ class Program { } gl.shaderSource(vertexShader, vertexSource); gl.compileShader(vertexShader); - assert(gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(vertexShader): any)); + assert(gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS), ((gl.getShaderInfoLog(vertexShader) as any))); gl.attachShader(this.program, vertexShader); this.attributes = {}; @@ -101,7 +103,7 @@ class Program { } gl.linkProgram(this.program); - assert(gl.getProgramParameter(this.program, gl.LINK_STATUS), (gl.getProgramInfoLog(this.program): any)); + assert(gl.getProgramParameter(this.program, gl.LINK_STATUS), ((gl.getProgramInfoLog(this.program) as any))); gl.deleteShader(vertexShader); gl.deleteShader(fragmentShader); @@ -122,20 +124,20 @@ class Program { draw(context: Context, drawMode: DrawMode, - depthMode: $ReadOnly, - stencilMode: $ReadOnly, - colorMode: $ReadOnly, - cullFaceMode: $ReadOnly, + depthMode: Readonly, + stencilMode: Readonly, + colorMode: Readonly, + cullFaceMode: Readonly, uniformValues: UniformValues, layerID: string, layoutVertexBuffer: VertexBuffer, indexBuffer: IndexBuffer, segments: SegmentVector, currentProperties: any, - zoom: ?number, - configuration: ?ProgramConfiguration, - dynamicLayoutBuffer: ?VertexBuffer, - dynamicLayoutBuffer2: ?VertexBuffer) { + zoom?: number | null, + configuration?: ProgramConfiguration | null, + dynamicLayoutBuffer?: VertexBuffer | null, + dynamicLayoutBuffer2?: VertexBuffer | null) { const gl = context.gl; @@ -152,7 +154,7 @@ class Program { } if (configuration) { - configuration.setUniforms(context, this.binderUniforms, currentProperties, {zoom: (zoom: any)}); + configuration.setUniforms(context, this.binderUniforms, currentProperties, {zoom: (zoom as any)}); } const primitiveSize = { diff --git a/src/render/program/background_program.js b/src/render/program/background_program.js deleted file mode 100644 index 1ae1cf9943..0000000000 --- a/src/render/program/background_program.js +++ /dev/null @@ -1,103 +0,0 @@ -// @flow - -import {bgPatternUniformValues} from './pattern'; -import { - Uniform1i, - Uniform1f, - Uniform2f, - UniformColor, - UniformMatrix4f -} from '../uniform_binding'; -import {extend} from '../../util/util'; - -import type Painter from '../painter'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type Context from '../../gl/context'; -import type Color from '../../style-spec/util/color'; -import type {CrossFaded} from '../../style/properties'; -import type {CrossfadeParameters} from '../../style/evaluation_parameters'; -import type {OverscaledTileID} from '../../source/tile_id'; -import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; - -export type BackgroundUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_opacity': Uniform1f, - 'u_color': UniformColor -|}; - -export type BackgroundPatternUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_opacity': Uniform1f, - // pattern uniforms: - 'u_image': Uniform1i, - 'u_pattern_tl_a': Uniform2f, - 'u_pattern_br_a': Uniform2f, - 'u_pattern_tl_b': Uniform2f, - 'u_pattern_br_b': Uniform2f, - 'u_texsize': Uniform2f, - 'u_mix': Uniform1f, - 'u_pattern_size_a': Uniform2f, - 'u_pattern_size_b': Uniform2f, - 'u_scale_a': Uniform1f, - 'u_scale_b': Uniform1f, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f, - 'u_tile_units_to_pixels': Uniform1f -|}; - -const backgroundUniforms = (context: Context, locations: UniformLocations): BackgroundUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_color': new UniformColor(context, locations.u_color) -}); - -const backgroundPatternUniforms = (context: Context, locations: UniformLocations): BackgroundPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a), - 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a), - 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b), - 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_mix': new Uniform1f(context, locations.u_mix), - 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a), - 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b), - 'u_scale_a': new Uniform1f(context, locations.u_scale_a), - 'u_scale_b': new Uniform1f(context, locations.u_scale_b), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels) -}); - -const backgroundUniformValues = ( - matrix: Float32Array, - opacity: number, - color: Color -): UniformValues => ({ - 'u_matrix': matrix, - 'u_opacity': opacity, - 'u_color': color -}); - -const backgroundPatternUniformValues = ( - matrix: Float32Array, - opacity: number, - painter: Painter, - image: CrossFaded, - tile: {tileID: OverscaledTileID, tileSize: number}, - crossfade: CrossfadeParameters -): UniformValues => extend( - bgPatternUniformValues(image, crossfade, painter, tile), - { - 'u_matrix': matrix, - 'u_opacity': opacity - } -); - -export { - backgroundUniforms, - backgroundPatternUniforms, - backgroundUniformValues, - backgroundPatternUniformValues -}; diff --git a/src/render/program/background_program.ts b/src/render/program/background_program.ts new file mode 100644 index 0000000000..c9ccfb83d6 --- /dev/null +++ b/src/render/program/background_program.ts @@ -0,0 +1,100 @@ +import { bgPatternUniformValues } from './pattern'; +import { + Uniform1i, + Uniform1f, + Uniform2f, + UniformColor, + UniformMatrix4f +} from '../uniform_binding'; +import {extend} from '../../util/util'; + +import type Painter from '../painter'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type Context from '../../gl/context'; +import type Color from '../../style-spec/util/color'; +import type {CrossFaded} from '../../style/properties'; +import type {CrossfadeParameters} from '../../style/evaluation_parameters'; +import type {OverscaledTileID} from '../../source/tile_id'; +import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; + +export type BackgroundUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_opacity': Uniform1f, + 'u_color': UniformColor +}; + +export type BackgroundPatternUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_opacity': Uniform1f, + // pattern uniforms: + 'u_image': Uniform1i, + 'u_pattern_tl_a': Uniform2f, + 'u_pattern_br_a': Uniform2f, + 'u_pattern_tl_b': Uniform2f, + 'u_pattern_br_b': Uniform2f, + 'u_texsize': Uniform2f, + 'u_mix': Uniform1f, + 'u_pattern_size_a': Uniform2f, + 'u_pattern_size_b': Uniform2f, + 'u_scale_a': Uniform1f, + 'u_scale_b': Uniform1f, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f, + 'u_tile_units_to_pixels': Uniform1f +}; + +const backgroundUniforms = (context: Context, locations: UniformLocations): BackgroundUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_color': new UniformColor(context, locations.u_color) +}); + +const backgroundPatternUniforms = (context: Context, locations: UniformLocations): BackgroundPatternUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a), + 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a), + 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b), + 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_mix': new Uniform1f(context, locations.u_mix), + 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a), + 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b), + 'u_scale_a': new Uniform1f(context, locations.u_scale_a), + 'u_scale_b': new Uniform1f(context, locations.u_scale_b), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels) +}); + +const backgroundUniformValues = (matrix: Float32Array, opacity: number, color: Color): UniformValues => ({ + 'u_matrix': matrix, + 'u_opacity': opacity, + 'u_color': color +}); + +const backgroundPatternUniformValues = ( + matrix: Float32Array, + opacity: number, + painter: Painter, + image: CrossFaded, + tile: { + tileID: OverscaledTileID, + tileSize: number + }, + crossfade: CrossfadeParameters +): UniformValues => extend( + bgPatternUniformValues(image, crossfade, painter, tile), + { + 'u_matrix': matrix, + 'u_opacity': opacity + } +); + +export { + backgroundUniforms, + backgroundPatternUniforms, + backgroundUniformValues, + backgroundPatternUniformValues +}; diff --git a/src/render/program/circle_program.js b/src/render/program/circle_program.ts similarity index 63% rename from src/render/program/circle_program.js rename to src/render/program/circle_program.ts index afde54051e..982547f252 100644 --- a/src/render/program/circle_program.js +++ b/src/render/program/circle_program.ts @@ -1,11 +1,4 @@ -// @flow - -import { - Uniform1i, - Uniform1f, - Uniform2f, - UniformMatrix4f -} from '../uniform_binding'; +import { Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import type Context from '../../gl/context'; @@ -16,29 +9,29 @@ import type CircleStyleLayer from '../../style/style_layer/circle_style_layer'; import type Painter from '../painter'; import browser from '../../util/browser'; -export type CircleUniformsType = {| - 'u_camera_to_center_distance': Uniform1f, - 'u_scale_with_map': Uniform1i, - 'u_pitch_with_map': Uniform1i, - 'u_extrude_scale': Uniform2f, - 'u_device_pixel_ratio': Uniform1f, - 'u_matrix': UniformMatrix4f -|}; +export type CircleUniformsType = { + 'u_camera_to_center_distance': Uniform1f, + 'u_scale_with_map': Uniform1i, + 'u_pitch_with_map': Uniform1i, + 'u_extrude_scale': Uniform2f, + 'u_device_pixel_ratio': Uniform1f, + 'u_matrix': UniformMatrix4f +}; const circleUniforms = (context: Context, locations: UniformLocations): CircleUniformsType => ({ - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_scale_with_map': new Uniform1i(context, locations.u_scale_with_map), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_scale_with_map': new Uniform1i(context, locations.u_scale_with_map), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const circleUniformValues = ( - painter: Painter, - coord: OverscaledTileID, - tile: Tile, - layer: CircleStyleLayer + painter: Painter, + coord: OverscaledTileID, + tile: Tile, + layer: CircleStyleLayer ): UniformValues => { const transform = painter.transform; diff --git a/src/render/program/clipping_mask_program.js b/src/render/program/clipping_mask_program.ts similarity index 63% rename from src/render/program/clipping_mask_program.js rename to src/render/program/clipping_mask_program.ts index 71f4a67cd4..316bc62e9d 100644 --- a/src/render/program/clipping_mask_program.js +++ b/src/render/program/clipping_mask_program.ts @@ -1,20 +1,18 @@ -// @flow - -import {UniformMatrix4f} from '../uniform_binding'; +import { UniformMatrix4f } from '../uniform_binding'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; -export type ClippingMaskUniformsType = {| - 'u_matrix': UniformMatrix4f -|}; +export type ClippingMaskUniformsType = { + 'u_matrix': UniformMatrix4f +}; const clippingMaskUniforms = (context: Context, locations: UniformLocations): ClippingMaskUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const clippingMaskUniformValues = (matrix: Float32Array): UniformValues => ({ - 'u_matrix': matrix + 'u_matrix': matrix }); export {clippingMaskUniforms, clippingMaskUniformValues}; diff --git a/src/render/program/collision_program.js b/src/render/program/collision_program.js deleted file mode 100644 index 82a5372b84..0000000000 --- a/src/render/program/collision_program.js +++ /dev/null @@ -1,76 +0,0 @@ -// @flow - -import { - Uniform1f, - Uniform2f, - UniformMatrix4f -} from '../uniform_binding'; -import pixelsToTileUnits from '../../source/pixels_to_tile_units'; - -import type Context from '../../gl/context'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type Transform from '../../geo/transform'; -import type Tile from '../../source/tile'; - -export type CollisionUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_camera_to_center_distance': Uniform1f, - 'u_pixels_to_tile_units': Uniform1f, - 'u_extrude_scale': Uniform2f, - 'u_overscale_factor': Uniform1f -|}; - -export type CollisionCircleUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_inv_matrix': UniformMatrix4f, - 'u_camera_to_center_distance': Uniform1f, - 'u_viewport_size': Uniform2f -|}; - -const collisionUniforms = (context: Context, locations: UniformLocations): CollisionUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pixels_to_tile_units': new Uniform1f(context, locations.u_pixels_to_tile_units), - 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), - 'u_overscale_factor': new Uniform1f(context, locations.u_overscale_factor) -}); - -const collisionCircleUniforms = (context: Context, locations: UniformLocations): CollisionCircleUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size) -}); - -const collisionUniformValues = ( - matrix: Float32Array, - transform: Transform, - tile: Tile -): UniformValues => { - const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom); - const scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ); - const overscaleFactor = tile.tileID.overscaleFactor(); - return { - 'u_matrix': matrix, - 'u_camera_to_center_distance': transform.cameraToCenterDistance, - 'u_pixels_to_tile_units': pixelRatio, - 'u_extrude_scale': [transform.pixelsToGLUnits[0] / (pixelRatio * scale), - transform.pixelsToGLUnits[1] / (pixelRatio * scale)], - 'u_overscale_factor': overscaleFactor - }; -}; - -const collisionCircleUniformValues = ( - matrix: Float32Array, - invMatrix: Float32Array, - transform: Transform -): UniformValues => { - return { - 'u_matrix': matrix, - 'u_inv_matrix': invMatrix, - 'u_camera_to_center_distance': transform.cameraToCenterDistance, - 'u_viewport_size': [transform.width, transform.height] - }; -}; - -export {collisionUniforms, collisionUniformValues, collisionCircleUniforms, collisionCircleUniformValues}; diff --git a/src/render/program/collision_program.ts b/src/render/program/collision_program.ts new file mode 100644 index 0000000000..7d5d22f625 --- /dev/null +++ b/src/render/program/collision_program.ts @@ -0,0 +1,62 @@ +import { Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; +import pixelsToTileUnits from '../../source/pixels_to_tile_units'; + +import type Context from '../../gl/context'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type Transform from '../../geo/transform'; +import type Tile from '../../source/tile'; + +export type CollisionUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_camera_to_center_distance': Uniform1f, + 'u_pixels_to_tile_units': Uniform1f, + 'u_extrude_scale': Uniform2f, + 'u_overscale_factor': Uniform1f +}; + +export type CollisionCircleUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_inv_matrix': UniformMatrix4f, + 'u_camera_to_center_distance': Uniform1f, + 'u_viewport_size': Uniform2f +}; + +const collisionUniforms = (context: Context, locations: UniformLocations): CollisionUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pixels_to_tile_units': new Uniform1f(context, locations.u_pixels_to_tile_units), + 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), + 'u_overscale_factor': new Uniform1f(context, locations.u_overscale_factor) +}); + +const collisionCircleUniforms = (context: Context, locations: UniformLocations): CollisionCircleUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size) +}); + +const collisionUniformValues = (matrix: Float32Array, transform: Transform, tile: Tile): UniformValues => { + const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom); + const scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ); + const overscaleFactor = tile.tileID.overscaleFactor(); + return { + 'u_matrix': matrix, + 'u_camera_to_center_distance': transform.cameraToCenterDistance, + 'u_pixels_to_tile_units': pixelRatio, + 'u_extrude_scale': [transform.pixelsToGLUnits[0] / (pixelRatio * scale), + transform.pixelsToGLUnits[1] / (pixelRatio * scale)], + 'u_overscale_factor': overscaleFactor + }; +}; + +const collisionCircleUniformValues = (matrix: Float32Array, invMatrix: Float32Array, transform: Transform): UniformValues => { + return { + 'u_matrix': matrix, + 'u_inv_matrix': invMatrix, + 'u_camera_to_center_distance': transform.cameraToCenterDistance, + 'u_viewport_size': [transform.width, transform.height] + }; +}; + +export {collisionUniforms, collisionUniformValues, collisionCircleUniforms, collisionCircleUniformValues}; diff --git a/src/render/program/debug_program.js b/src/render/program/debug_program.js deleted file mode 100644 index a97ad08d21..0000000000 --- a/src/render/program/debug_program.js +++ /dev/null @@ -1,35 +0,0 @@ -// @flow - -import { - UniformColor, - UniformMatrix4f, - Uniform1i, - Uniform1f -} from '../uniform_binding'; - -import type Context from '../../gl/context'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type Color from '../../style-spec/util/color'; - -export type DebugUniformsType = {| - 'u_color': UniformColor, - 'u_matrix': UniformMatrix4f, - 'u_overlay': Uniform1i, - 'u_overlay_scale': Uniform1f -|}; - -const debugUniforms = (context: Context, locations: UniformLocations): DebugUniformsType => ({ - 'u_color': new UniformColor(context, locations.u_color), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_overlay': new Uniform1i(context, locations.u_overlay), - 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale), -}); - -const debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues => ({ - 'u_matrix': matrix, - 'u_color': color, - 'u_overlay': 0, - 'u_overlay_scale': scaleRatio -}); - -export {debugUniforms, debugUniformValues}; diff --git a/src/render/program/debug_program.ts b/src/render/program/debug_program.ts new file mode 100644 index 0000000000..bf518977b4 --- /dev/null +++ b/src/render/program/debug_program.ts @@ -0,0 +1,28 @@ +import { UniformColor, UniformMatrix4f, Uniform1i, Uniform1f } from '../uniform_binding'; + +import type Context from '../../gl/context'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type Color from '../../style-spec/util/color'; + +export type DebugUniformsType = { + 'u_color': UniformColor, + 'u_matrix': UniformMatrix4f, + 'u_overlay': Uniform1i, + 'u_overlay_scale': Uniform1f +}; + +const debugUniforms = (context: Context, locations: UniformLocations): DebugUniformsType => ({ + 'u_color': new UniformColor(context, locations.u_color), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_overlay': new Uniform1i(context, locations.u_overlay), + 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale) +}); + +const debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues => ({ + 'u_matrix': matrix, + 'u_color': color, + 'u_overlay': 0, + 'u_overlay_scale': scaleRatio +}); + +export {debugUniforms, debugUniformValues}; diff --git a/src/render/program/fill_extrusion_program.js b/src/render/program/fill_extrusion_program.js deleted file mode 100644 index 39dec5cf05..0000000000 --- a/src/render/program/fill_extrusion_program.js +++ /dev/null @@ -1,122 +0,0 @@ -// @flow - -import {patternUniformValues} from './pattern'; -import { - Uniform1i, - Uniform1f, - Uniform2f, - Uniform3f, - UniformMatrix4f -} from '../uniform_binding'; - -import {mat3, vec3} from 'gl-matrix'; -import {extend} from '../../util/util'; - -import type Context from '../../gl/context'; -import type Painter from '../painter'; -import type {OverscaledTileID} from '../../source/tile_id'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type {CrossfadeParameters} from '../../style/evaluation_parameters'; -import type Tile from '../../source/tile'; - -export type FillExtrusionUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_lightpos': Uniform3f, - 'u_lightintensity': Uniform1f, - 'u_lightcolor': Uniform3f, - 'u_vertical_gradient': Uniform1f, - 'u_opacity': Uniform1f -|}; - -export type FillExtrusionPatternUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_lightpos': Uniform3f, - 'u_lightintensity': Uniform1f, - 'u_lightcolor': Uniform3f, - 'u_height_factor': Uniform1f, - 'u_vertical_gradient': Uniform1f, - // pattern uniforms: - 'u_texsize': Uniform2f, - 'u_image': Uniform1i, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f, - 'u_scale': Uniform3f, - 'u_fade': Uniform1f, - 'u_opacity': Uniform1f -|}; - -const fillExtrusionUniforms = (context: Context, locations: UniformLocations): FillExtrusionUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_lightpos': new Uniform3f(context, locations.u_lightpos), - 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), - 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), - 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), - 'u_opacity': new Uniform1f(context, locations.u_opacity) -}); - -const fillExtrusionPatternUniforms = (context: Context, locations: UniformLocations): FillExtrusionPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_lightpos': new Uniform3f(context, locations.u_lightpos), - 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), - 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), - 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), - 'u_height_factor': new Uniform1f(context, locations.u_height_factor), - // pattern uniforms - 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade), - 'u_opacity': new Uniform1f(context, locations.u_opacity) -}); - -const fillExtrusionUniformValues = ( - matrix: Float32Array, - painter: Painter, - shouldUseVerticalGradient: boolean, - opacity: number -): UniformValues => { - const light = painter.style.light; - const _lp = light.properties.get('position'); - const lightPos = [_lp.x, _lp.y, _lp.z]; - const lightMat = mat3.create(); - if (light.properties.get('anchor') === 'viewport') { - mat3.fromRotation(lightMat, -painter.transform.angle); - } - vec3.transformMat3(lightPos, lightPos, lightMat); - - const lightColor = light.properties.get('color'); - - return { - 'u_matrix': matrix, - 'u_lightpos': lightPos, - 'u_lightintensity': light.properties.get('intensity'), - 'u_lightcolor': [lightColor.r, lightColor.g, lightColor.b], - 'u_vertical_gradient': +shouldUseVerticalGradient, - 'u_opacity': opacity - }; -}; - -const fillExtrusionPatternUniformValues = ( - matrix: Float32Array, - painter: Painter, - shouldUseVerticalGradient: boolean, - opacity: number, - coord: OverscaledTileID, - crossfade: CrossfadeParameters, - tile: Tile -): UniformValues => { - return extend(fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity), - patternUniformValues(crossfade, painter, tile), - { - 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8 - }); -}; - -export { - fillExtrusionUniforms, - fillExtrusionPatternUniforms, - fillExtrusionUniformValues, - fillExtrusionPatternUniformValues -}; diff --git a/src/render/program/fill_extrusion_program.ts b/src/render/program/fill_extrusion_program.ts new file mode 100644 index 0000000000..32a9b2c725 --- /dev/null +++ b/src/render/program/fill_extrusion_program.ts @@ -0,0 +1,122 @@ +import { patternUniformValues } from './pattern'; +import { + Uniform1i, + Uniform1f, + Uniform2f, + Uniform3f, + UniformMatrix4f +} from '../uniform_binding'; + +import {mat3, vec3} from 'gl-matrix'; +import {extend} from '../../util/util'; + +import type Context from '../../gl/context'; +import type Painter from '../painter'; +import type {OverscaledTileID} from '../../source/tile_id'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type {CrossfadeParameters} from '../../style/evaluation_parameters'; +import type Tile from '../../source/tile'; + +export type FillExtrusionUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_lightpos': Uniform3f, + 'u_lightintensity': Uniform1f, + 'u_lightcolor': Uniform3f, + 'u_vertical_gradient': Uniform1f, + 'u_opacity': Uniform1f +}; + +export type FillExtrusionPatternUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_lightpos': Uniform3f, + 'u_lightintensity': Uniform1f, + 'u_lightcolor': Uniform3f, + 'u_height_factor': Uniform1f, + 'u_vertical_gradient': Uniform1f, + // pattern uniforms: + 'u_texsize': Uniform2f, + 'u_image': Uniform1i, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f, + 'u_scale': Uniform3f, + 'u_fade': Uniform1f, + 'u_opacity': Uniform1f +}; + +const fillExtrusionUniforms = (context: Context, locations: UniformLocations): FillExtrusionUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_lightpos': new Uniform3f(context, locations.u_lightpos), + 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), + 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), + 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), + 'u_opacity': new Uniform1f(context, locations.u_opacity) +}); + +const fillExtrusionPatternUniforms = (context: Context, locations: UniformLocations): FillExtrusionPatternUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_lightpos': new Uniform3f(context, locations.u_lightpos), + 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), + 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), + 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), + 'u_height_factor': new Uniform1f(context, locations.u_height_factor), + + // pattern uniforms + 'u_image': new Uniform1i(context, locations.u_image), + + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade), + 'u_opacity': new Uniform1f(context, locations.u_opacity) +}); + +const fillExtrusionUniformValues = ( + matrix: Float32Array, + painter: Painter, + shouldUseVerticalGradient: boolean, + opacity: number +): UniformValues => { + const light = painter.style.light; + const _lp = light.properties.get('position'); + const lightPos = [_lp.x, _lp.y, _lp.z]; + const lightMat = mat3.create(); + if (light.properties.get('anchor') === 'viewport') { + mat3.fromRotation(lightMat, -painter.transform.angle); + } + vec3.transformMat3(lightPos, lightPos, lightMat); + + const lightColor = light.properties.get('color'); + + return { + 'u_matrix': matrix, + 'u_lightpos': lightPos, + 'u_lightintensity': light.properties.get('intensity'), + 'u_lightcolor': [lightColor.r, lightColor.g, lightColor.b], + 'u_vertical_gradient': +shouldUseVerticalGradient, + 'u_opacity': opacity + }; +}; + +const fillExtrusionPatternUniformValues = ( + matrix: Float32Array, + painter: Painter, + shouldUseVerticalGradient: boolean, + opacity: number, + coord: OverscaledTileID, + crossfade: CrossfadeParameters, + tile: Tile +): UniformValues => { + return extend(fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity), + patternUniformValues(crossfade, painter, tile), + { + 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8 + }); +}; + +export { + fillExtrusionUniforms, + fillExtrusionPatternUniforms, + fillExtrusionUniformValues, + fillExtrusionPatternUniformValues +}; diff --git a/src/render/program/fill_program.js b/src/render/program/fill_program.js deleted file mode 100644 index 8bc83d141f..0000000000 --- a/src/render/program/fill_program.js +++ /dev/null @@ -1,126 +0,0 @@ -// @flow - -import {patternUniformValues} from './pattern'; -import { - Uniform1i, - Uniform1f, - Uniform2f, - Uniform3f, - UniformMatrix4f -} from '../uniform_binding'; -import {extend} from '../../util/util'; - -import type Painter from '../painter'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type Context from '../../gl/context'; -import type {CrossfadeParameters} from '../../style/evaluation_parameters'; -import type Tile from '../../source/tile'; - -export type FillUniformsType = {| - 'u_matrix': UniformMatrix4f -|}; - -export type FillOutlineUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_world': Uniform2f -|}; - -export type FillPatternUniformsType = {| - 'u_matrix': UniformMatrix4f, - // pattern uniforms: - 'u_texsize': Uniform2f, - 'u_image': Uniform1i, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f, - 'u_scale': Uniform3f, - 'u_fade': Uniform1f -|}; - -export type FillOutlinePatternUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_world': Uniform2f, - // pattern uniforms: - 'u_texsize': Uniform2f, - 'u_image': Uniform1i, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f, - 'u_scale': Uniform3f, - 'u_fade': Uniform1f -|}; - -const fillUniforms = (context: Context, locations: UniformLocations): FillUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) -}); - -const fillPatternUniforms = (context: Context, locations: UniformLocations): FillPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) - -}); - -const fillOutlineUniforms = (context: Context, locations: UniformLocations): FillOutlineUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world) -}); - -const fillOutlinePatternUniforms = (context: Context, locations: UniformLocations): FillOutlinePatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) -}); - -const fillUniformValues = (matrix: Float32Array): UniformValues => ({ - 'u_matrix': matrix -}); - -const fillPatternUniformValues = ( - matrix: Float32Array, - painter: Painter, - crossfade: CrossfadeParameters, - tile: Tile -): UniformValues => extend( - fillUniformValues(matrix), - patternUniformValues(crossfade, painter, tile) -); - -const fillOutlineUniformValues = ( - matrix: Float32Array, - drawingBufferSize: [number, number] -): UniformValues => ({ - 'u_matrix': matrix, - 'u_world': drawingBufferSize -}); - -const fillOutlinePatternUniformValues = ( - matrix: Float32Array, - painter: Painter, - crossfade: CrossfadeParameters, - tile: Tile, - drawingBufferSize: [number, number] -): UniformValues => extend( - fillPatternUniformValues(matrix, painter, crossfade, tile), - { - 'u_world': drawingBufferSize - } -); - -export { - fillUniforms, - fillPatternUniforms, - fillOutlineUniforms, - fillOutlinePatternUniforms, - fillUniformValues, - fillPatternUniformValues, - fillOutlineUniformValues, - fillOutlinePatternUniformValues -}; diff --git a/src/render/program/fill_program.ts b/src/render/program/fill_program.ts new file mode 100644 index 0000000000..a91a2ed834 --- /dev/null +++ b/src/render/program/fill_program.ts @@ -0,0 +1,120 @@ +import { patternUniformValues } from './pattern'; +import { + Uniform1i, + Uniform1f, + Uniform2f, + Uniform3f, + UniformMatrix4f +} from '../uniform_binding'; +import {extend} from '../../util/util'; + +import type Painter from '../painter'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type Context from '../../gl/context'; +import type {CrossfadeParameters} from '../../style/evaluation_parameters'; +import type Tile from '../../source/tile'; + +export type FillUniformsType = { + 'u_matrix': UniformMatrix4f +}; + +export type FillOutlineUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_world': Uniform2f +}; + +export type FillPatternUniformsType = { + 'u_matrix': UniformMatrix4f, + // pattern uniforms: + 'u_texsize': Uniform2f, + 'u_image': Uniform1i, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f, + 'u_scale': Uniform3f, + 'u_fade': Uniform1f +}; + +export type FillOutlinePatternUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_world': Uniform2f, + // pattern uniforms: + 'u_texsize': Uniform2f, + 'u_image': Uniform1i, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f, + 'u_scale': Uniform3f, + 'u_fade': Uniform1f +}; + +const fillUniforms = (context: Context, locations: UniformLocations): FillUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) +}); + +const fillPatternUniforms = (context: Context, locations: UniformLocations): FillPatternUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) +}); + +const fillOutlineUniforms = (context: Context, locations: UniformLocations): FillOutlineUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world) +}); + +const fillOutlinePatternUniforms = (context: Context, locations: UniformLocations): FillOutlinePatternUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) +}); + +const fillUniformValues = (matrix: Float32Array): UniformValues => ({ + 'u_matrix': matrix +}); + +const fillPatternUniformValues = ( + matrix: Float32Array, + painter: Painter, + crossfade: CrossfadeParameters, + tile: Tile +): UniformValues => extend( + fillUniformValues(matrix), + patternUniformValues(crossfade, painter, tile) +); + +const fillOutlineUniformValues = (matrix: Float32Array, drawingBufferSize: [number, number]): UniformValues => ({ + 'u_matrix': matrix, + 'u_world': drawingBufferSize +}); + +const fillOutlinePatternUniformValues = ( + matrix: Float32Array, + painter: Painter, + crossfade: CrossfadeParameters, + tile: Tile, + drawingBufferSize: [number, number] +): UniformValues => extend( + fillPatternUniformValues(matrix, painter, crossfade, tile), + { + 'u_world': drawingBufferSize + } +); + +export { + fillUniforms, + fillPatternUniforms, + fillOutlineUniforms, + fillOutlinePatternUniforms, + fillUniformValues, + fillPatternUniformValues, + fillOutlineUniformValues, + fillOutlinePatternUniformValues +}; diff --git a/src/render/program/heatmap_program.js b/src/render/program/heatmap_program.ts similarity index 50% rename from src/render/program/heatmap_program.js rename to src/render/program/heatmap_program.ts index 8822d1932f..2624ccca50 100644 --- a/src/render/program/heatmap_program.js +++ b/src/render/program/heatmap_program.ts @@ -1,6 +1,4 @@ -// @flow - -import {mat4} from 'gl-matrix'; +import { mat4 } from 'gl-matrix'; import { Uniform1i, @@ -16,50 +14,45 @@ import type {UniformValues, UniformLocations} from '../uniform_binding'; import type Painter from '../painter'; import type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer'; -export type HeatmapUniformsType = {| - 'u_extrude_scale': Uniform1f, - 'u_intensity': Uniform1f, - 'u_matrix': UniformMatrix4f -|}; +export type HeatmapUniformsType = { + 'u_extrude_scale': Uniform1f, + 'u_intensity': Uniform1f, + 'u_matrix': UniformMatrix4f +}; -export type HeatmapTextureUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_world': Uniform2f, - 'u_image': Uniform1i, - 'u_color_ramp': Uniform1i, - 'u_opacity': Uniform1f -|}; +export type HeatmapTextureUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_world': Uniform2f, + 'u_image': Uniform1i, + 'u_color_ramp': Uniform1i, + 'u_opacity': Uniform1f +}; const heatmapUniforms = (context: Context, locations: UniformLocations): HeatmapUniformsType => ({ - 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale), - 'u_intensity': new Uniform1f(context, locations.u_intensity), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale), + 'u_intensity': new Uniform1f(context, locations.u_intensity), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const heatmapTextureUniforms = (context: Context, locations: UniformLocations): HeatmapTextureUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp), - 'u_opacity': new Uniform1f(context, locations.u_opacity) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp), + 'u_opacity': new Uniform1f(context, locations.u_opacity) }); -const heatmapUniformValues = ( - matrix: Float32Array, - tile: Tile, - zoom: number, - intensity: number -): UniformValues => ({ - 'u_matrix': matrix, - 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom), - 'u_intensity': intensity +const heatmapUniformValues = (matrix: Float32Array, tile: Tile, zoom: number, intensity: number): UniformValues => ({ + 'u_matrix': matrix, + 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom), + 'u_intensity': intensity }); const heatmapTextureUniformValues = ( - painter: Painter, - layer: HeatmapStyleLayer, - textureUnit: number, - colorRampUnit: number + painter: Painter, + layer: HeatmapStyleLayer, + textureUnit: number, + colorRampUnit: number ): UniformValues => { const matrix = mat4.create(); mat4.ortho(matrix, 0, painter.width, painter.height, 0, 0, 1); diff --git a/src/render/program/hillshade_program.js b/src/render/program/hillshade_program.ts similarity index 64% rename from src/render/program/hillshade_program.js rename to src/render/program/hillshade_program.ts index b843970ff1..ec641d6688 100644 --- a/src/render/program/hillshade_program.js +++ b/src/render/program/hillshade_program.ts @@ -1,6 +1,4 @@ -// @flow - -import {mat4} from 'gl-matrix'; +import { mat4 } from 'gl-matrix'; import { Uniform1i, @@ -21,47 +19,43 @@ import type HillshadeStyleLayer from '../../style/style_layer/hillshade_style_la import type DEMData from '../../data/dem_data'; import type {OverscaledTileID} from '../../source/tile_id'; -export type HillshadeUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_image': Uniform1i, - 'u_latrange': Uniform2f, - 'u_light': Uniform2f, - 'u_shadow': UniformColor, - 'u_highlight': UniformColor, - 'u_accent': UniformColor -|}; +export type HillshadeUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_image': Uniform1i, + 'u_latrange': Uniform2f, + 'u_light': Uniform2f, + 'u_shadow': UniformColor, + 'u_highlight': UniformColor, + 'u_accent': UniformColor +}; -export type HillshadePrepareUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_image': Uniform1i, - 'u_dimension': Uniform2f, - 'u_zoom': Uniform1f, - 'u_unpack': Uniform4f -|}; +export type HillshadePrepareUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_image': Uniform1i, + 'u_dimension': Uniform2f, + 'u_zoom': Uniform1f, + 'u_unpack': Uniform4f +}; const hillshadeUniforms = (context: Context, locations: UniformLocations): HillshadeUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_latrange': new Uniform2f(context, locations.u_latrange), - 'u_light': new Uniform2f(context, locations.u_light), - 'u_shadow': new UniformColor(context, locations.u_shadow), - 'u_highlight': new UniformColor(context, locations.u_highlight), - 'u_accent': new UniformColor(context, locations.u_accent) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_latrange': new Uniform2f(context, locations.u_latrange), + 'u_light': new Uniform2f(context, locations.u_light), + 'u_shadow': new UniformColor(context, locations.u_shadow), + 'u_highlight': new UniformColor(context, locations.u_highlight), + 'u_accent': new UniformColor(context, locations.u_accent) }); const hillshadePrepareUniforms = (context: Context, locations: UniformLocations): HillshadePrepareUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_dimension': new Uniform2f(context, locations.u_dimension), - 'u_zoom': new Uniform1f(context, locations.u_zoom), - 'u_unpack': new Uniform4f(context, locations.u_unpack) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_dimension': new Uniform2f(context, locations.u_dimension), + 'u_zoom': new Uniform1f(context, locations.u_zoom), + 'u_unpack': new Uniform4f(context, locations.u_unpack) }); -const hillshadeUniformValues = ( - painter: Painter, - tile: Tile, - layer: HillshadeStyleLayer -): UniformValues => { +const hillshadeUniformValues = (painter: Painter, tile: Tile, layer: HillshadeStyleLayer): UniformValues => { const shadow = layer.paint.get("hillshade-shadow-color"); const highlight = layer.paint.get("hillshade-highlight-color"); const accent = layer.paint.get("hillshade-accent-color"); @@ -83,9 +77,7 @@ const hillshadeUniformValues = ( }; }; -const hillshadeUniformPrepareValues = ( - tileID: OverscaledTileID, dem: DEMData -): UniformValues => { +const hillshadeUniformPrepareValues = (tileID: OverscaledTileID, dem: DEMData): UniformValues => { const stride = dem.stride; const matrix = mat4.create(); diff --git a/src/render/program/line_program.js b/src/render/program/line_program.ts similarity index 50% rename from src/render/program/line_program.js rename to src/render/program/line_program.ts index 79fa83c234..0cd45f7773 100644 --- a/src/render/program/line_program.js +++ b/src/render/program/line_program.ts @@ -1,12 +1,4 @@ -// @flow - -import { - Uniform1i, - Uniform1f, - Uniform2f, - Uniform3f, - UniformMatrix4f -} from '../uniform_binding'; +import { Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f } from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import {extend} from '../../util/util'; import browser from '../../util/browser'; @@ -20,93 +12,89 @@ import type LineStyleLayer from '../../style/style_layer/line_style_layer'; import type Painter from '../painter'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; -export type LineUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_ratio': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_units_to_pixels': Uniform2f -|}; - -export type LineGradientUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_ratio': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_units_to_pixels': Uniform2f, - 'u_image': Uniform1i, - 'u_image_height': Uniform1f, -|}; - -export type LinePatternUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_texsize': Uniform2f, - 'u_ratio': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_units_to_pixels': Uniform2f, - 'u_image': Uniform1i, - 'u_scale': Uniform3f, - 'u_fade': Uniform1f -|}; - -export type LineSDFUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_ratio': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_units_to_pixels': Uniform2f, - 'u_patternscale_a': Uniform2f, - 'u_patternscale_b': Uniform2f, - 'u_sdfgamma': Uniform1f, - 'u_image': Uniform1i, - 'u_tex_y_a': Uniform1f, - 'u_tex_y_b': Uniform1f, - 'u_mix': Uniform1f -|}; +export type LineUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_ratio': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_units_to_pixels': Uniform2f +}; + +export type LineGradientUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_ratio': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_units_to_pixels': Uniform2f, + 'u_image': Uniform1i, + 'u_image_height': Uniform1f +}; + +export type LinePatternUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_texsize': Uniform2f, + 'u_ratio': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_units_to_pixels': Uniform2f, + 'u_image': Uniform1i, + 'u_scale': Uniform3f, + 'u_fade': Uniform1f +}; + +export type LineSDFUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_ratio': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_units_to_pixels': Uniform2f, + 'u_patternscale_a': Uniform2f, + 'u_patternscale_b': Uniform2f, + 'u_sdfgamma': Uniform1f, + 'u_image': Uniform1i, + 'u_tex_y_a': Uniform1f, + 'u_tex_y_b': Uniform1f, + 'u_mix': Uniform1f +}; const lineUniforms = (context: Context, locations: UniformLocations): LineUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels) }); const lineGradientUniforms = (context: Context, locations: UniformLocations): LineGradientUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_image_height': new Uniform1f(context, locations.u_image_height), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_image_height': new Uniform1f(context, locations.u_image_height) }); const linePatternUniforms = (context: Context, locations: UniformLocations): LinePatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) }); const lineSDFUniforms = (context: Context, locations: UniformLocations): LineSDFUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_patternscale_a': new Uniform2f(context, locations.u_patternscale_a), - 'u_patternscale_b': new Uniform2f(context, locations.u_patternscale_b), - 'u_sdfgamma': new Uniform1f(context, locations.u_sdfgamma), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_tex_y_a': new Uniform1f(context, locations.u_tex_y_a), - 'u_tex_y_b': new Uniform1f(context, locations.u_tex_y_b), - 'u_mix': new Uniform1f(context, locations.u_mix) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_patternscale_a': new Uniform2f(context, locations.u_patternscale_a), + 'u_patternscale_b': new Uniform2f(context, locations.u_patternscale_b), + 'u_sdfgamma': new Uniform1f(context, locations.u_sdfgamma), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_tex_y_a': new Uniform1f(context, locations.u_tex_y_a), + 'u_tex_y_b': new Uniform1f(context, locations.u_tex_y_b), + 'u_mix': new Uniform1f(context, locations.u_mix) }); -const lineUniformValues = ( - painter: Painter, - tile: Tile, - layer: LineStyleLayer -): UniformValues => { +const lineUniformValues = (painter: Painter, tile: Tile, layer: LineStyleLayer): UniformValues => { const transform = painter.transform; return { @@ -120,12 +108,7 @@ const lineUniformValues = ( }; }; -const lineGradientUniformValues = ( - painter: Painter, - tile: Tile, - layer: LineStyleLayer, - imageHeight: number -): UniformValues => { +const lineGradientUniformValues = (painter: Painter, tile: Tile, layer: LineStyleLayer, imageHeight: number): UniformValues => { return extend(lineUniformValues(painter, tile, layer), { 'u_image': 0, 'u_image_height': imageHeight, @@ -133,10 +116,10 @@ const lineGradientUniformValues = ( }; const linePatternUniformValues = ( - painter: Painter, - tile: Tile, - layer: LineStyleLayer, - crossfade: CrossfadeParameters + painter: Painter, + tile: Tile, + layer: LineStyleLayer, + crossfade: CrossfadeParameters ): UniformValues => { const transform = painter.transform; const tileZoomRatio = calculateTileRatio(tile, transform); @@ -157,11 +140,11 @@ const linePatternUniformValues = ( }; const lineSDFUniformValues = ( - painter: Painter, - tile: Tile, - layer: LineStyleLayer, - dasharray: CrossFaded>, - crossfade: CrossfadeParameters + painter: Painter, + tile: Tile, + layer: LineStyleLayer, + dasharray: CrossFaded>, + crossfade: CrossfadeParameters ): UniformValues => { const transform = painter.transform; const lineAtlas = painter.lineAtlas; diff --git a/src/render/program/pattern.js b/src/render/program/pattern.ts similarity index 67% rename from src/render/program/pattern.js rename to src/render/program/pattern.ts index 283fca5d9e..2f56a4bbfe 100644 --- a/src/render/program/pattern.js +++ b/src/render/program/pattern.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import { Uniform1i, @@ -17,36 +15,34 @@ import type {UniformValues} from '../uniform_binding'; import type Tile from '../../source/tile'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -type BackgroundPatternUniformsType = {| - 'u_image': Uniform1i, - 'u_pattern_tl_a': Uniform2f, - 'u_pattern_br_a': Uniform2f, - 'u_pattern_tl_b': Uniform2f, - 'u_pattern_br_b': Uniform2f, - 'u_texsize': Uniform2f, - 'u_mix': Uniform1f, - 'u_pattern_size_a': Uniform2f, - 'u_pattern_size_b': Uniform2f, - 'u_scale_a': Uniform1f, - 'u_scale_b': Uniform1f, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f, - 'u_tile_units_to_pixels': Uniform1f -|}; +type BackgroundPatternUniformsType = { + 'u_image': Uniform1i, + 'u_pattern_tl_a': Uniform2f, + 'u_pattern_br_a': Uniform2f, + 'u_pattern_tl_b': Uniform2f, + 'u_pattern_br_b': Uniform2f, + 'u_texsize': Uniform2f, + 'u_mix': Uniform1f, + 'u_pattern_size_a': Uniform2f, + 'u_pattern_size_b': Uniform2f, + 'u_scale_a': Uniform1f, + 'u_scale_b': Uniform1f, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f, + 'u_tile_units_to_pixels': Uniform1f +}; -export type PatternUniformsType = {| - // pattern uniforms: - 'u_image': Uniform1i, - 'u_texsize': Uniform2f, - 'u_scale': Uniform3f, - 'u_fade': Uniform1f, - 'u_pixel_coord_upper': Uniform2f, - 'u_pixel_coord_lower': Uniform2f -|}; +export type PatternUniformsType = { + // pattern uniforms: + 'u_image': Uniform1i, + 'u_texsize': Uniform2f, + 'u_scale': Uniform3f, + 'u_fade': Uniform1f, + 'u_pixel_coord_upper': Uniform2f, + 'u_pixel_coord_lower': Uniform2f +}; -function patternUniformValues(crossfade: CrossfadeParameters, painter: Painter, - tile: Tile -): UniformValues { +function patternUniformValues(crossfade: CrossfadeParameters, painter: Painter, tile: Tile): UniformValues { const tileRatio = 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom); @@ -67,8 +63,14 @@ function patternUniformValues(crossfade: CrossfadeParameters, painter: Painter, }; } -function bgPatternUniformValues(image: CrossFaded, crossfade: CrossfadeParameters, painter: Painter, - tile: {tileID: OverscaledTileID, tileSize: number} +function bgPatternUniformValues( + image: CrossFaded, + crossfade: CrossfadeParameters, + painter: Painter, + tile: { + tileID: OverscaledTileID, + tileSize: number + } ): UniformValues { const imagePosA = painter.imageManager.getPattern(image.from.toString()); const imagePosB = painter.imageManager.getPattern(image.to.toString()); @@ -83,14 +85,14 @@ function bgPatternUniformValues(image: CrossFaded, crossfade: Cro return { 'u_image': 0, - 'u_pattern_tl_a': (imagePosA: any).tl, - 'u_pattern_br_a': (imagePosA: any).br, - 'u_pattern_tl_b': (imagePosB: any).tl, - 'u_pattern_br_b': (imagePosB: any).br, + 'u_pattern_tl_a': (imagePosA as any).tl, + 'u_pattern_br_a': (imagePosA as any).br, + 'u_pattern_tl_b': (imagePosB as any).tl, + 'u_pattern_br_b': (imagePosB as any).br, 'u_texsize': [width, height], 'u_mix': crossfade.t, - 'u_pattern_size_a': (imagePosA: any).displaySize, - 'u_pattern_size_b': (imagePosB: any).displaySize, + 'u_pattern_size_a': (imagePosA as any).displaySize, + 'u_pattern_size_b': (imagePosB as any).displaySize, 'u_scale_a': crossfade.fromScale, 'u_scale_b': crossfade.toScale, 'u_tile_units_to_pixels': 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom), diff --git a/src/render/program/program_uniforms.js b/src/render/program/program_uniforms.ts similarity index 94% rename from src/render/program/program_uniforms.js rename to src/render/program/program_uniforms.ts index e36ec6f6e8..ec8642e1ec 100644 --- a/src/render/program/program_uniforms.js +++ b/src/render/program/program_uniforms.ts @@ -1,6 +1,4 @@ -// @flow - -import {fillExtrusionUniforms, fillExtrusionPatternUniforms} from './fill_extrusion_program'; +import { fillExtrusionUniforms, fillExtrusionPatternUniforms } from './fill_extrusion_program'; import {fillUniforms, fillPatternUniforms, fillOutlineUniforms, fillOutlinePatternUniforms} from './fill_program'; import {circleUniforms} from './circle_program'; import {collisionUniforms, collisionCircleUniforms} from './collision_program'; diff --git a/src/render/program/raster_program.js b/src/render/program/raster_program.js deleted file mode 100644 index caa477a199..0000000000 --- a/src/render/program/raster_program.js +++ /dev/null @@ -1,92 +0,0 @@ -// @flow - -import { - Uniform1i, - Uniform1f, - Uniform2f, - Uniform3f, - UniformMatrix4f -} from '../uniform_binding'; - -import type Context from '../../gl/context'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; -import type RasterStyleLayer from '../../style/style_layer/raster_style_layer'; - -export type RasterUniformsType = {| - 'u_matrix': UniformMatrix4f, - 'u_tl_parent': Uniform2f, - 'u_scale_parent': Uniform1f, - 'u_buffer_scale': Uniform1f, - 'u_fade_t': Uniform1f, - 'u_opacity': Uniform1f, - 'u_image0': Uniform1i, - 'u_image1': Uniform1i, - 'u_brightness_low': Uniform1f, - 'u_brightness_high': Uniform1f, - 'u_saturation_factor': Uniform1f, - 'u_contrast_factor': Uniform1f, - 'u_spin_weights': Uniform3f -|}; - -const rasterUniforms = (context: Context, locations: UniformLocations): RasterUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_tl_parent': new Uniform2f(context, locations.u_tl_parent), - 'u_scale_parent': new Uniform1f(context, locations.u_scale_parent), - 'u_buffer_scale': new Uniform1f(context, locations.u_buffer_scale), - 'u_fade_t': new Uniform1f(context, locations.u_fade_t), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_image0': new Uniform1i(context, locations.u_image0), - 'u_image1': new Uniform1i(context, locations.u_image1), - 'u_brightness_low': new Uniform1f(context, locations.u_brightness_low), - 'u_brightness_high': new Uniform1f(context, locations.u_brightness_high), - 'u_saturation_factor': new Uniform1f(context, locations.u_saturation_factor), - 'u_contrast_factor': new Uniform1f(context, locations.u_contrast_factor), - 'u_spin_weights': new Uniform3f(context, locations.u_spin_weights) -}); - -const rasterUniformValues = ( - matrix: Float32Array, - parentTL: [number, number], - parentScaleBy: number, - fade: {mix: number, opacity: number}, - layer: RasterStyleLayer -): UniformValues => ({ - 'u_matrix': matrix, - 'u_tl_parent': parentTL, - 'u_scale_parent': parentScaleBy, - 'u_buffer_scale': 1, - 'u_fade_t': fade.mix, - 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'), - 'u_image0': 0, - 'u_image1': 1, - 'u_brightness_low': layer.paint.get('raster-brightness-min'), - 'u_brightness_high': layer.paint.get('raster-brightness-max'), - 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')), - 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')), - 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')) -}); - -function spinWeights(angle) { - angle *= Math.PI / 180; - const s = Math.sin(angle); - const c = Math.cos(angle); - return [ - (2 * c + 1) / 3, - (-Math.sqrt(3) * s - c + 1) / 3, - (Math.sqrt(3) * s - c + 1) / 3 - ]; -} - -function contrastFactor(contrast) { - return contrast > 0 ? - 1 / (1 - contrast) : - 1 + contrast; -} - -function saturationFactor(saturation) { - return saturation > 0 ? - 1 - 1 / (1.001 - saturation) : - -saturation; -} - -export {rasterUniforms, rasterUniformValues}; diff --git a/src/render/program/raster_program.ts b/src/render/program/raster_program.ts new file mode 100644 index 0000000000..fb32ffabc9 --- /dev/null +++ b/src/render/program/raster_program.ts @@ -0,0 +1,87 @@ +import { Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f } from '../uniform_binding'; + +import type Context from '../../gl/context'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; +import type RasterStyleLayer from '../../style/style_layer/raster_style_layer'; + +export type RasterUniformsType = { + 'u_matrix': UniformMatrix4f, + 'u_tl_parent': Uniform2f, + 'u_scale_parent': Uniform1f, + 'u_buffer_scale': Uniform1f, + 'u_fade_t': Uniform1f, + 'u_opacity': Uniform1f, + 'u_image0': Uniform1i, + 'u_image1': Uniform1i, + 'u_brightness_low': Uniform1f, + 'u_brightness_high': Uniform1f, + 'u_saturation_factor': Uniform1f, + 'u_contrast_factor': Uniform1f, + 'u_spin_weights': Uniform3f +}; + +const rasterUniforms = (context: Context, locations: UniformLocations): RasterUniformsType => ({ + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_tl_parent': new Uniform2f(context, locations.u_tl_parent), + 'u_scale_parent': new Uniform1f(context, locations.u_scale_parent), + 'u_buffer_scale': new Uniform1f(context, locations.u_buffer_scale), + 'u_fade_t': new Uniform1f(context, locations.u_fade_t), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_image0': new Uniform1i(context, locations.u_image0), + 'u_image1': new Uniform1i(context, locations.u_image1), + 'u_brightness_low': new Uniform1f(context, locations.u_brightness_low), + 'u_brightness_high': new Uniform1f(context, locations.u_brightness_high), + 'u_saturation_factor': new Uniform1f(context, locations.u_saturation_factor), + 'u_contrast_factor': new Uniform1f(context, locations.u_contrast_factor), + 'u_spin_weights': new Uniform3f(context, locations.u_spin_weights) +}); + +const rasterUniformValues = ( + matrix: Float32Array, + parentTL: [number, number], + parentScaleBy: number, + fade: { + mix: number, + opacity: number + }, + layer: RasterStyleLayer +): UniformValues => ({ + 'u_matrix': matrix, + 'u_tl_parent': parentTL, + 'u_scale_parent': parentScaleBy, + 'u_buffer_scale': 1, + 'u_fade_t': fade.mix, + 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'), + 'u_image0': 0, + 'u_image1': 1, + 'u_brightness_low': layer.paint.get('raster-brightness-min'), + 'u_brightness_high': layer.paint.get('raster-brightness-max'), + 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')), + 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')), + 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')) +}); + +function spinWeights(angle) { + angle *= Math.PI / 180; + const s = Math.sin(angle); + const c = Math.cos(angle); + return [ + (2 * c + 1) / 3, + (-Math.sqrt(3) * s - c + 1) / 3, + (Math.sqrt(3) * s - c + 1) / 3 + ]; +} + +function contrastFactor(contrast) { + return contrast > 0 ? + 1 / (1 - contrast) : + 1 + contrast; +} + +function saturationFactor(saturation) { + return saturation > 0 ? + 1 - 1 / (1.001 - saturation) : + -saturation; +} + +export {rasterUniforms, rasterUniformValues}; diff --git a/src/render/program/symbol_program.js b/src/render/program/symbol_program.js deleted file mode 100644 index 6b08211920..0000000000 --- a/src/render/program/symbol_program.js +++ /dev/null @@ -1,224 +0,0 @@ -// @flow - -import { - Uniform1i, - Uniform1f, - Uniform2f, - UniformMatrix4f -} from '../uniform_binding'; -import {extend} from '../../util/util'; -import browser from '../../util/browser'; - -import type Context from '../../gl/context'; -import type Painter from '../painter'; -import type {UniformValues, UniformLocations} from '../uniform_binding'; - -export type SymbolIconUniformsType = {| - 'u_is_size_zoom_constant': Uniform1i, - 'u_is_size_feature_constant': Uniform1i, - 'u_size_t': Uniform1f, - 'u_size': Uniform1f, - 'u_camera_to_center_distance': Uniform1f, - 'u_pitch': Uniform1f, - 'u_rotate_symbol': Uniform1i, - 'u_aspect_ratio': Uniform1f, - 'u_fade_change': Uniform1f, - 'u_matrix': UniformMatrix4f, - 'u_label_plane_matrix': UniformMatrix4f, - 'u_coord_matrix': UniformMatrix4f, - 'u_is_text': Uniform1i, - 'u_pitch_with_map': Uniform1i, - 'u_texsize': Uniform2f, - 'u_texture': Uniform1i -|}; - -export type SymbolSDFUniformsType = {| - 'u_is_size_zoom_constant': Uniform1i, - 'u_is_size_feature_constant': Uniform1i, - 'u_size_t': Uniform1f, - 'u_size': Uniform1f, - 'u_camera_to_center_distance': Uniform1f, - 'u_pitch': Uniform1f, - 'u_rotate_symbol': Uniform1i, - 'u_aspect_ratio': Uniform1f, - 'u_fade_change': Uniform1f, - 'u_matrix': UniformMatrix4f, - 'u_label_plane_matrix': UniformMatrix4f, - 'u_coord_matrix': UniformMatrix4f, - 'u_is_text': Uniform1i, - 'u_pitch_with_map': Uniform1i, - 'u_texsize': Uniform2f, - 'u_texture': Uniform1i, - 'u_gamma_scale': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_is_halo': Uniform1i -|}; - -export type symbolTextAndIconUniformsType = {| - 'u_is_size_zoom_constant': Uniform1i, - 'u_is_size_feature_constant': Uniform1i, - 'u_size_t': Uniform1f, - 'u_size': Uniform1f, - 'u_camera_to_center_distance': Uniform1f, - 'u_pitch': Uniform1f, - 'u_rotate_symbol': Uniform1i, - 'u_aspect_ratio': Uniform1f, - 'u_fade_change': Uniform1f, - 'u_matrix': UniformMatrix4f, - 'u_label_plane_matrix': UniformMatrix4f, - 'u_coord_matrix': UniformMatrix4f, - 'u_is_text': Uniform1i, - 'u_pitch_with_map': Uniform1i, - 'u_texsize': Uniform2f, - 'u_texsize_icon': Uniform2f, - 'u_texture': Uniform1i, - 'u_texture_icon': Uniform1i, - 'u_gamma_scale': Uniform1f, - 'u_device_pixel_ratio': Uniform1f, - 'u_is_halo': Uniform1i -|}; - -const symbolIconUniforms = (context: Context, locations: UniformLocations): SymbolIconUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texture': new Uniform1i(context, locations.u_texture) -}); - -const symbolSDFUniforms = (context: Context, locations: UniformLocations): SymbolSDFUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texture': new Uniform1i(context, locations.u_texture), - 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_is_halo': new Uniform1i(context, locations.u_is_halo) -}); - -const symbolTextAndIconUniforms = (context: Context, locations: UniformLocations): symbolTextAndIconUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texsize_icon': new Uniform2f(context, locations.u_texsize_icon), - 'u_texture': new Uniform1i(context, locations.u_texture), - 'u_texture_icon': new Uniform1i(context, locations.u_texture_icon), - 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_is_halo': new Uniform1i(context, locations.u_is_halo) -}); - -const symbolIconUniformValues = ( - functionType: string, - size: ?{uSizeT: number, uSize: number}, - rotateInShader: boolean, - pitchWithMap: boolean, - painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, - isText: boolean, - texSize: [number, number] -): UniformValues => { - const transform = painter.transform; - - return { - 'u_is_size_zoom_constant': +(functionType === 'constant' || functionType === 'source'), - 'u_is_size_feature_constant': +(functionType === 'constant' || functionType === 'camera'), - 'u_size_t': size ? size.uSizeT : 0, - 'u_size': size ? size.uSize : 0, - 'u_camera_to_center_distance': transform.cameraToCenterDistance, - 'u_pitch': transform.pitch / 360 * 2 * Math.PI, - 'u_rotate_symbol': +rotateInShader, - 'u_aspect_ratio': transform.width / transform.height, - 'u_fade_change': painter.options.fadeDuration ? painter.symbolFadeChange : 1, - 'u_matrix': matrix, - 'u_label_plane_matrix': labelPlaneMatrix, - 'u_coord_matrix': glCoordMatrix, - 'u_is_text': +isText, - 'u_pitch_with_map': +pitchWithMap, - 'u_texsize': texSize, - 'u_texture': 0 - }; -}; - -const symbolSDFUniformValues = ( - functionType: string, - size: ?{uSizeT: number, uSize: number}, - rotateInShader: boolean, - pitchWithMap: boolean, - painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, - isText: boolean, - texSize: [number, number], - isHalo: boolean -): UniformValues => { - const transform = painter.transform; - - return extend(symbolIconUniformValues(functionType, size, - rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, - glCoordMatrix, isText, texSize), { - 'u_gamma_scale': (pitchWithMap ? Math.cos(transform._pitch) * transform.cameraToCenterDistance : 1), - 'u_device_pixel_ratio': browser.devicePixelRatio, - 'u_is_halo': +isHalo - }); -}; - -const symbolTextAndIconUniformValues = ( - functionType: string, - size: ?{uSizeT: number, uSize: number}, - rotateInShader: boolean, - pitchWithMap: boolean, - painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, - texSizeSDF: [number, number], - texSizeIcon: [number, number] -): UniformValues => { - return extend(symbolSDFUniformValues(functionType, size, - rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, - glCoordMatrix, true, texSizeSDF, true), { - 'u_texsize_icon': texSizeIcon, - 'u_texture_icon': 1 - }); -}; - -export {symbolIconUniforms, symbolSDFUniforms, symbolIconUniformValues, symbolSDFUniformValues, symbolTextAndIconUniformValues, symbolTextAndIconUniforms}; diff --git a/src/render/program/symbol_program.ts b/src/render/program/symbol_program.ts new file mode 100644 index 0000000000..828cd39587 --- /dev/null +++ b/src/render/program/symbol_program.ts @@ -0,0 +1,226 @@ +import { Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; +import {extend} from '../../util/util'; +import browser from '../../util/browser'; + +import type Context from '../../gl/context'; +import type Painter from '../painter'; +import type {UniformValues, UniformLocations} from '../uniform_binding'; + +export type SymbolIconUniformsType = { + 'u_is_size_zoom_constant': Uniform1i, + 'u_is_size_feature_constant': Uniform1i, + 'u_size_t': Uniform1f, + 'u_size': Uniform1f, + 'u_camera_to_center_distance': Uniform1f, + 'u_pitch': Uniform1f, + 'u_rotate_symbol': Uniform1i, + 'u_aspect_ratio': Uniform1f, + 'u_fade_change': Uniform1f, + 'u_matrix': UniformMatrix4f, + 'u_label_plane_matrix': UniformMatrix4f, + 'u_coord_matrix': UniformMatrix4f, + 'u_is_text': Uniform1i, + 'u_pitch_with_map': Uniform1i, + 'u_texsize': Uniform2f, + 'u_texture': Uniform1i +}; + +export type SymbolSDFUniformsType = { + 'u_is_size_zoom_constant': Uniform1i, + 'u_is_size_feature_constant': Uniform1i, + 'u_size_t': Uniform1f, + 'u_size': Uniform1f, + 'u_camera_to_center_distance': Uniform1f, + 'u_pitch': Uniform1f, + 'u_rotate_symbol': Uniform1i, + 'u_aspect_ratio': Uniform1f, + 'u_fade_change': Uniform1f, + 'u_matrix': UniformMatrix4f, + 'u_label_plane_matrix': UniformMatrix4f, + 'u_coord_matrix': UniformMatrix4f, + 'u_is_text': Uniform1i, + 'u_pitch_with_map': Uniform1i, + 'u_texsize': Uniform2f, + 'u_texture': Uniform1i, + 'u_gamma_scale': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_is_halo': Uniform1i +}; + +export type symbolTextAndIconUniformsType = { + 'u_is_size_zoom_constant': Uniform1i, + 'u_is_size_feature_constant': Uniform1i, + 'u_size_t': Uniform1f, + 'u_size': Uniform1f, + 'u_camera_to_center_distance': Uniform1f, + 'u_pitch': Uniform1f, + 'u_rotate_symbol': Uniform1i, + 'u_aspect_ratio': Uniform1f, + 'u_fade_change': Uniform1f, + 'u_matrix': UniformMatrix4f, + 'u_label_plane_matrix': UniformMatrix4f, + 'u_coord_matrix': UniformMatrix4f, + 'u_is_text': Uniform1i, + 'u_pitch_with_map': Uniform1i, + 'u_texsize': Uniform2f, + 'u_texsize_icon': Uniform2f, + 'u_texture': Uniform1i, + 'u_texture_icon': Uniform1i, + 'u_gamma_scale': Uniform1f, + 'u_device_pixel_ratio': Uniform1f, + 'u_is_halo': Uniform1i +}; + +const symbolIconUniforms = (context: Context, locations: UniformLocations): SymbolIconUniformsType => ({ + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texture': new Uniform1i(context, locations.u_texture) +}); + +const symbolSDFUniforms = (context: Context, locations: UniformLocations): SymbolSDFUniformsType => ({ + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texture': new Uniform1i(context, locations.u_texture), + 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_is_halo': new Uniform1i(context, locations.u_is_halo) +}); + +const symbolTextAndIconUniforms = (context: Context, locations: UniformLocations): symbolTextAndIconUniformsType => ({ + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texsize_icon': new Uniform2f(context, locations.u_texsize_icon), + 'u_texture': new Uniform1i(context, locations.u_texture), + 'u_texture_icon': new Uniform1i(context, locations.u_texture_icon), + 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_is_halo': new Uniform1i(context, locations.u_is_halo) +}); + +const symbolIconUniformValues = ( + functionType: string, + size: { + uSizeT: number, + uSize: number + } | undefined | null, + rotateInShader: boolean, + pitchWithMap: boolean, + painter: Painter, + matrix: Float32Array, + labelPlaneMatrix: Float32Array, + glCoordMatrix: Float32Array, + isText: boolean, + texSize: [number, number] +): UniformValues => { + const transform = painter.transform; + + return { + 'u_is_size_zoom_constant': +(functionType === 'constant' || functionType === 'source'), + 'u_is_size_feature_constant': +(functionType === 'constant' || functionType === 'camera'), + 'u_size_t': size ? size.uSizeT : 0, + 'u_size': size ? size.uSize : 0, + 'u_camera_to_center_distance': transform.cameraToCenterDistance, + 'u_pitch': transform.pitch / 360 * 2 * Math.PI, + 'u_rotate_symbol': +rotateInShader, + 'u_aspect_ratio': transform.width / transform.height, + 'u_fade_change': painter.options.fadeDuration ? painter.symbolFadeChange : 1, + 'u_matrix': matrix, + 'u_label_plane_matrix': labelPlaneMatrix, + 'u_coord_matrix': glCoordMatrix, + 'u_is_text': +isText, + 'u_pitch_with_map': +pitchWithMap, + 'u_texsize': texSize, + 'u_texture': 0 + }; +}; + +const symbolSDFUniformValues = ( + functionType: string, + size: { + uSizeT: number, + uSize: number + } | undefined | null, + rotateInShader: boolean, + pitchWithMap: boolean, + painter: Painter, + matrix: Float32Array, + labelPlaneMatrix: Float32Array, + glCoordMatrix: Float32Array, + isText: boolean, + texSize: [number, number], + isHalo: boolean +): UniformValues => { + const transform = painter.transform; + + return extend(symbolIconUniformValues(functionType, size, + rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, + glCoordMatrix, isText, texSize), { + 'u_gamma_scale': (pitchWithMap ? Math.cos(transform._pitch) * transform.cameraToCenterDistance : 1), + 'u_device_pixel_ratio': browser.devicePixelRatio, + 'u_is_halo': +isHalo + }); +}; + +const symbolTextAndIconUniformValues = ( + functionType: string, + size: { + uSizeT: number, + uSize: number + } | undefined | null, + rotateInShader: boolean, + pitchWithMap: boolean, + painter: Painter, + matrix: Float32Array, + labelPlaneMatrix: Float32Array, + glCoordMatrix: Float32Array, + texSizeSDF: [number, number], + texSizeIcon: [number, number] +): UniformValues => { + return extend(symbolSDFUniformValues(functionType, size, + rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, + glCoordMatrix, true, texSizeSDF, true), { + 'u_texsize_icon': texSizeIcon, + 'u_texture_icon': 1 + }); +}; + +export {symbolIconUniforms, symbolSDFUniforms, symbolIconUniformValues, symbolSDFUniformValues, symbolTextAndIconUniformValues, symbolTextAndIconUniforms}; diff --git a/src/render/texture.js b/src/render/texture.ts similarity index 74% rename from src/render/texture.js rename to src/render/texture.ts index 39e5369a7f..1f2710d82f 100644 --- a/src/render/texture.js +++ b/src/render/texture.ts @@ -1,56 +1,47 @@ -// @flow - import window from '../util/window'; const {HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageData, ImageBitmap} = window; import type Context from '../gl/context'; import type {RGBAImage, AlphaImage} from '../util/image'; -export type TextureFormat = - | $PropertyType - | $PropertyType; -export type TextureFilter = - | $PropertyType - | $PropertyType - | $PropertyType; -export type TextureWrap = - | $PropertyType - | $PropertyType - | $PropertyType; +export type TextureFormat = WebGLRenderingContext["RGBA"] | WebGLRenderingContext["ALPHA"]; +export type TextureFilter = WebGLRenderingContext["LINEAR"] | WebGLRenderingContext["LINEAR_MIPMAP_NEAREST"] | WebGLRenderingContext["NEAREST"]; +export type TextureWrap = WebGLRenderingContext["REPEAT"] | WebGLRenderingContext["CLAMP_TO_EDGE"] | WebGLRenderingContext["MIRRORED_REPEAT"]; type EmptyImage = { - width: number, - height: number, - data: null -} + width: number, + height: number, + data: null +}; -export type TextureImage = - | RGBAImage - | AlphaImage - | HTMLImageElement - | HTMLCanvasElement - | HTMLVideoElement - | ImageData - | EmptyImage - | ImageBitmap; +export type TextureImage = RGBAImage | AlphaImage | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageData | EmptyImage | ImageBitmap; class Texture { context: Context; size: [number, number]; texture: WebGLTexture; format: TextureFormat; - filter: ?TextureFilter; - wrap: ?TextureWrap; + filter: TextureFilter | undefined | null; + wrap: TextureWrap | undefined | null; useMipmap: boolean; - constructor(context: Context, image: TextureImage, format: TextureFormat, options: ?{ premultiply?: boolean, useMipmap?: boolean }) { + constructor(context: Context, image: TextureImage, format: TextureFormat, options?: { + premultiply?: boolean, + useMipmap?: boolean + } | null) { this.context = context; this.format = format; this.texture = context.gl.createTexture(); this.update(image, options); } - update(image: TextureImage, options: ?{premultiply?: boolean, useMipmap?: boolean}, position?: { x: number, y: number }) { + update(image: TextureImage, options?: { + premultiply?: boolean, + useMipmap?: boolean + } | null, position?: { + x: number, + y: number + }) { const {width, height} = image; const resize = (!this.size || this.size[0] !== width || this.size[1] !== height) && !position; const {context} = this; @@ -86,7 +77,7 @@ class Texture { } } - bind(filter: TextureFilter, wrap: TextureWrap, minFilter: ?TextureFilter) { + bind(filter: TextureFilter, wrap: TextureWrap, minFilter?: TextureFilter | null) { const {context} = this; const {gl} = context; gl.bindTexture(gl.TEXTURE_2D, this.texture); @@ -115,7 +106,7 @@ class Texture { destroy() { const {gl} = this.context; gl.deleteTexture(this.texture); - this.texture = (null: any); + this.texture = (null as any); } } diff --git a/src/render/uniform_binding.js b/src/render/uniform_binding.ts similarity index 89% rename from src/render/uniform_binding.js rename to src/render/uniform_binding.ts index 4cb0c5f32e..3f3a24d957 100644 --- a/src/render/uniform_binding.js +++ b/src/render/uniform_binding.ts @@ -1,16 +1,19 @@ -// @flow - import Color from '../style-spec/util/color'; import type Context from '../gl/context'; -export type UniformValues - = $Exact<$ObjMap(u: Uniform) => V>>; -export type UniformLocations = {[_: string]: WebGLUniformLocation}; +type $ObjMap any> = { + [K in keyof T]: F extends (v: T[K]) => infer R ? R : never; +}; + +export type UniformValues = $ObjMap(u: Uniform) => V>; +export type UniformLocations = { + [_: string]: WebGLUniformLocation +}; class Uniform { gl: WebGLRenderingContext; - location: ?WebGLUniformLocation; + location: WebGLUniformLocation | undefined | null; current: T; constructor(context: Context, location: WebGLUniformLocation) { @@ -18,7 +21,7 @@ class Uniform { this.location = location; } - +set: (v: T) => void; + readonly set: (v: T) => void; } class Uniform1i extends Uniform { @@ -144,4 +147,6 @@ export { UniformMatrix4f }; -export type UniformBindings = {[_: string]: Uniform}; +export type UniformBindings = { + [_: string]: Uniform +}; diff --git a/src/render/vertex_array_object.js b/src/render/vertex_array_object.ts similarity index 86% rename from src/render/vertex_array_object.js rename to src/render/vertex_array_object.ts index fab9aee0a1..53f9cd6f82 100644 --- a/src/render/vertex_array_object.js +++ b/src/render/vertex_array_object.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import type Program from './program'; @@ -9,13 +7,13 @@ import type Context from '../gl/context'; class VertexArrayObject { context: Context; - boundProgram: ?Program<*>; - boundLayoutVertexBuffer: ?VertexBuffer; + boundProgram: Program | undefined | null; + boundLayoutVertexBuffer: VertexBuffer | undefined | null; boundPaintVertexBuffers: Array; - boundIndexBuffer: ?IndexBuffer; - boundVertexOffset: ?number; - boundDynamicVertexBuffer: ?VertexBuffer; - boundDynamicVertexBuffer2: ?VertexBuffer; + boundIndexBuffer: IndexBuffer | undefined | null; + boundVertexOffset: number | undefined | null; + boundDynamicVertexBuffer: VertexBuffer | undefined | null; + boundDynamicVertexBuffer2: VertexBuffer | undefined | null; vao: any; constructor() { @@ -29,13 +27,13 @@ class VertexArrayObject { } bind(context: Context, - program: Program<*>, + program: Program, layoutVertexBuffer: VertexBuffer, paintVertexBuffers: Array, - indexBuffer: ?IndexBuffer, - vertexOffset: ?number, - dynamicVertexBuffer: ?VertexBuffer, - dynamicVertexBuffer2: ?VertexBuffer) { + indexBuffer?: IndexBuffer | null, + vertexOffset?: number | null, + dynamicVertexBuffer?: VertexBuffer | null, + dynamicVertexBuffer2?: VertexBuffer | null) { this.context = context; @@ -77,13 +75,13 @@ class VertexArrayObject { } } - freshBind(program: Program<*>, + freshBind(program: Program, layoutVertexBuffer: VertexBuffer, paintVertexBuffers: Array, - indexBuffer: ?IndexBuffer, - vertexOffset: ?number, - dynamicVertexBuffer: ?VertexBuffer, - dynamicVertexBuffer2: ?VertexBuffer) { + indexBuffer?: IndexBuffer | null, + vertexOffset?: number | null, + dynamicVertexBuffer?: VertexBuffer | null, + dynamicVertexBuffer2?: VertexBuffer | null) { let numPrevAttributes; const numNextAttributes = program.numAttributes; diff --git a/src/shaders/encode_attribute.js b/src/shaders/encode_attribute.ts similarity index 89% rename from src/shaders/encode_attribute.js rename to src/shaders/encode_attribute.ts index 7e09dd696d..ea58babe12 100644 --- a/src/shaders/encode_attribute.js +++ b/src/shaders/encode_attribute.ts @@ -1,6 +1,4 @@ -// @flow - -import {clamp} from '../util/util'; +import { clamp } from '../util/util'; /** * Packs two numbers, interpreted as 8-bit unsigned integers, into a single diff --git a/src/shaders/index.js b/src/shaders/index.ts similarity index 100% rename from src/shaders/index.js rename to src/shaders/index.ts diff --git a/src/shaders/shaders.js b/src/shaders/shaders.ts similarity index 100% rename from src/shaders/shaders.js rename to src/shaders/shaders.ts diff --git a/src/source/canvas_source.js b/src/source/canvas_source.ts similarity index 96% rename from src/source/canvas_source.js rename to src/source/canvas_source.ts index 3fada4c6c1..1e7bf89a6b 100644 --- a/src/source/canvas_source.js +++ b/src/source/canvas_source.ts @@ -1,5 +1,3 @@ -// @flow - import ImageSource from './image_source'; import window from '../util/window'; @@ -13,12 +11,12 @@ import type Map from '../ui/map'; import type Dispatcher from '../util/dispatcher'; import type {Evented} from '../util/evented'; -export type CanvasSourceSpecification = {| - "type": "canvas", - "coordinates": [[number, number], [number, number], [number, number], [number, number]], - "animate"?: boolean, - "canvas": string | HTMLCanvasElement -|}; +export type CanvasSourceSpecification = { + "type": "canvas", + "coordinates": [[number, number], [number, number], [number, number], [number, number]], + "animate"?: boolean, + "canvas": string | HTMLCanvasElement +}; /** * Options to add a canvas source type to the map. @@ -216,7 +214,7 @@ class CanvasSource extends ImageSource { } } - serialize(): Object { + serialize(): any { return { type: 'canvas', coordinates: this.coordinates diff --git a/src/source/geojson_source.js b/src/source/geojson_source.ts similarity index 96% rename from src/source/geojson_source.js rename to src/source/geojson_source.ts index 2e8ec1c73b..d1b6956f1a 100644 --- a/src/source/geojson_source.js +++ b/src/source/geojson_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event, ErrorEvent, Evented} from '../util/evented'; +import { Event, ErrorEvent, Evented } from '../util/evented'; import {extend} from '../util/util'; import EXTENT from '../data/extent'; @@ -63,13 +61,13 @@ import type {GeoJSONSourceSpecification, PromoteIdSpecification} from '../style- * @see [Create and style clusters](https://maplibre.org/maplibre-gl-js-docs/example/cluster/) */ class GeoJSONSource extends Evented implements Source { - type: 'geojson'; + type: "geojson"; id: string; minzoom: number; maxzoom: number; tileSize: number; attribution: string; - promoteId: ?PromoteIdSpecification; + promoteId: PromoteIdSpecification | undefined | null; isTileClipped: boolean; reparseOverscaled: boolean; @@ -86,7 +84,10 @@ class GeoJSONSource extends Evented implements Source { /** * @private */ - constructor(id: string, options: GeoJSONSourceSpecification & {workerOptions?: any, collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) { + constructor(id: string, options: GeoJSONSourceSpecification & { + workerOptions?: any, + collectResourceTiming: boolean + }, dispatcher: Dispatcher, eventedParent: Evented) { super(); this.id = id; @@ -106,7 +107,7 @@ class GeoJSONSource extends Evented implements Source { this.actor = dispatcher.getActor(); this.setEventedParent(eventedParent); - this._data = (options.data: any); + this._data = (options.data as any); this._options = extend({}, options); this._collectResourceTiming = options.collectResourceTiming; @@ -157,7 +158,7 @@ class GeoJSONSource extends Evented implements Source { return; } - const data: Object = {dataType: 'source', sourceDataType: 'metadata'}; + const data: any = {dataType: 'source', sourceDataType: 'metadata'}; if (this._collectResourceTiming && this._resourceTiming && (this._resourceTiming.length > 0)) { data.resourceTiming = this._resourceTiming; this._resourceTiming = []; @@ -189,7 +190,7 @@ class GeoJSONSource extends Evented implements Source { return; } - const data: Object = {dataType: 'source', sourceDataType: 'content'}; + const data: any = {dataType: 'source', sourceDataType: 'content'}; if (this._collectResourceTiming && this._resourceTiming && (this._resourceTiming.length > 0)) { data.resourceTiming = this._resourceTiming; this._resourceTiming = []; diff --git a/src/source/geojson_worker_source.js b/src/source/geojson_worker_source.ts similarity index 87% rename from src/source/geojson_worker_source.js rename to src/source/geojson_worker_source.ts index a395a6fbbe..3779a3621a 100644 --- a/src/source/geojson_worker_source.js +++ b/src/source/geojson_worker_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {getJSON} from '../util/ajax'; +import { getJSON } from '../util/ajax'; import {RequestPerformance} from '../util/performance'; import rewind from '@mapbox/geojson-rewind'; @@ -26,25 +24,24 @@ import type {Callback} from '../types/callback'; import type {GeoJSONFeature} from '@mapbox/geojson-types'; export type LoadGeoJSONParameters = { - request?: RequestParameters, - data?: string, - source: string, - cluster: boolean, - superclusterOptions?: Object, - geojsonVtOptions?: Object, - clusterProperties?: Object, - filter?: Array + request?: RequestParameters, + data?: string, + source: string, + cluster: boolean, + superclusterOptions?: any, + geojsonVtOptions?: any, + clusterProperties?: any, + filter?: Array }; -export type LoadGeoJSON = (params: LoadGeoJSONParameters, callback: ResponseCallback) => void; +export type LoadGeoJSON = (params: LoadGeoJSONParameters, callback: ResponseCallback) => void; export interface GeoJSONIndex { - getTile(z: number, x: number, y: number): Object; - - // supercluster methods - getClusterExpansionZoom(clusterId: number): number; - getChildren(clusterId: number): Array; - getLeaves(clusterId: number, limit: number, offset: number): Array; + getTile(z: number, x: number, y: number): any; + // supercluster methods + getClusterExpansionZoom(clusterId: number): number; + getChildren(clusterId: number): Array; + getLeaves(clusterId: number, limit: number, offset: number): Array; } function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataCallback) { @@ -76,10 +73,9 @@ function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataC }); } -export type SourceState = - | 'Idle' // Source empty or data loaded - | 'Coalescing' // Data finished loading, but discard 'loadData' messages until receiving 'coalesced' - | 'NeedsLoadData'; // 'loadData' received while coalescing, trigger one more 'loadData' on receiving 'coalesced' +export type SourceState = // Source empty or data loaded +"Idle" | // Data finished loading, but discard 'loadData' messages until receiving 'coalesced' +"Coalescing" | "NeedsLoadData"; // 'loadData' received while coalescing, trigger one more 'loadData' on receiving 'coalesced' /** * The {@link WorkerSource} implementation that supports {@link GeoJSONSource}. @@ -95,10 +91,13 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { loadGeoJSON: LoadGeoJSON; _state: SourceState; _pendingCallback: Callback<{ - resourceTiming?: {[_: string]: Array}, - abandoned?: boolean }>; + resourceTiming?: { + [_: string]: Array + }, + abandoned?: boolean + }>; _pendingLoadDataParams: LoadGeoJSONParameters; - _geoJSONIndex: GeoJSONIndex + _geoJSONIndex: GeoJSONIndex; /** * @param [loadGeoJSON] Optional method for custom loading/parsing of @@ -106,7 +105,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { * See {@link GeoJSONWorkerSource#loadGeoJSON}. * @private */ - constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, loadGeoJSON: ?LoadGeoJSON) { + constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, loadGeoJSON?: LoadGeoJSON | null) { super(actor, layerIndex, availableImages, loadGeoJSONTile); if (loadGeoJSON) { this.loadGeoJSON = loadGeoJSON; @@ -131,8 +130,11 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { * @private */ loadData(params: LoadGeoJSONParameters, callback: Callback<{ - resourceTiming?: {[_: string]: Array}, - abandoned?: boolean }>) { + resourceTiming?: { + [_: string]: Array + }, + abandoned?: boolean + }>) { if (this._pendingCallback) { // Tell the foreground the previous call has been abandoned this._pendingCallback(null, {abandoned: true}); @@ -166,7 +168,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { const perf = (params && params.request && params.request.collectResourceTiming) ? new RequestPerformance(params.request) : false; - this.loadGeoJSON(params, (err: ?Error, data: ?Object) => { + this.loadGeoJSON(params, (err?: Error | null, data?: any | null) => { if (err || !data) { return callback(err); } else if (typeof data !== 'object') { @@ -270,7 +272,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { * @param [params.data] Literal GeoJSON data. Must be provided if `params.url` is not. * @private */ - loadGeoJSON(params: LoadGeoJSONParameters, callback: ResponseCallback) { + loadGeoJSON(params: LoadGeoJSONParameters, callback: ResponseCallback) { // Because of same origin issues, urls must either include an explicit // origin or absolute path. // ie: /foo/bar.json or http://example.com/bar.json @@ -288,7 +290,9 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { } } - removeSource(params: {source: string}, callback: Callback) { + removeSource(params: { + source: string + }, callback: Callback) { if (this._pendingCallback) { // Don't leak callbacks this._pendingCallback(null, {abandoned: true}); @@ -296,7 +300,9 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { callback(); } - getClusterExpansionZoom(params: {clusterId: number}, callback: Callback) { + getClusterExpansionZoom(params: { + clusterId: number + }, callback: Callback) { try { callback(null, this._geoJSONIndex.getClusterExpansionZoom(params.clusterId)); } catch (e) { @@ -304,7 +310,9 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { } } - getClusterChildren(params: {clusterId: number}, callback: Callback>) { + getClusterChildren(params: { + clusterId: number + }, callback: Callback>) { try { callback(null, this._geoJSONIndex.getChildren(params.clusterId)); } catch (e) { @@ -312,7 +320,11 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { } } - getClusterLeaves(params: {clusterId: number, limit: number, offset: number}, callback: Callback>) { + getClusterLeaves(params: { + clusterId: number, + limit: number, + offset: number + }, callback: Callback>) { try { callback(null, this._geoJSONIndex.getLeaves(params.clusterId, params.limit, params.offset)); } catch (e) { diff --git a/src/source/geojson_wrapper.js b/src/source/geojson_wrapper.ts similarity index 86% rename from src/source/geojson_wrapper.js rename to src/source/geojson_wrapper.ts index 35a23afd2c..8e56493765 100644 --- a/src/source/geojson_wrapper.js +++ b/src/source/geojson_wrapper.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import mvt from '@mapbox/vector-tile'; @@ -9,16 +7,20 @@ import EXTENT from '../data/extent'; // The feature type used by geojson-vt and supercluster. Should be extracted to // global type and used in module definitions for those two modules. type Feature = { - type: 1, - id: mixed, - tags: {[_: string]: string | number | boolean}, - geometry: Array<[number, number]>, + type: 1, + id: unknown, + tags: { + [_: string]: string | number | boolean + }, + geometry: Array<[number, number]> } | { - type: 2 | 3, - id: mixed, - tags: {[_: string]: string | number | boolean}, - geometry: Array>, -} + type: 2 | 3, + id: unknown, + tags: { + [_: string]: string | number | boolean + }, + geometry: Array> +}; class FeatureWrapper implements VectorTileFeature { _feature: Feature; @@ -26,7 +28,9 @@ class FeatureWrapper implements VectorTileFeature { extent: number; type: 1 | 2 | 3; id: number; - properties: {[_: string]: string | number | boolean}; + properties: { + [_: string]: string | number | boolean + }; constructor(feature: Feature) { this._feature = feature; @@ -72,7 +76,9 @@ class FeatureWrapper implements VectorTileFeature { } class GeoJSONWrapper implements VectorTile, VectorTileLayer { - layers: {[_: string]: VectorTileLayer}; + layers: { + [_: string]: VectorTileLayer + }; name: string; extent: number; length: number; diff --git a/src/source/image_source.js b/src/source/image_source.ts similarity index 98% rename from src/source/image_source.js rename to src/source/image_source.ts index 9360ab95f5..0df87aea1d 100644 --- a/src/source/image_source.js +++ b/src/source/image_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {CanonicalTileID} from './tile_id'; +import { CanonicalTileID } from './tile_id'; import {Event, ErrorEvent, Evented} from '../util/evented'; import {getImage, ResourceType} from '../util/ajax'; import EXTENT from '../data/extent'; @@ -72,7 +70,9 @@ class ImageSource extends Evented implements Source { url: string; coordinates: Coordinates; - tiles: {[_: string]: Tile}; + tiles: { + [_: string]: Tile + }; options: any; dispatcher: Dispatcher; map: Map; @@ -144,7 +144,10 @@ class ImageSource extends Evented implements Source { * They do not have to represent a rectangle. * @returns {ImageSource} this */ - updateImage(options: {url: string, coordinates?: Coordinates}) { + updateImage(options: { + url: string, + coordinates?: Coordinates + }) { if (!this.image || !options.url) { return this; } @@ -259,7 +262,7 @@ class ImageSource extends Evented implements Source { } } - serialize(): Object { + serialize(): any { return { type: 'image', url: this.options.url, diff --git a/src/source/load_tilejson.js b/src/source/load_tilejson.ts similarity index 91% rename from src/source/load_tilejson.js rename to src/source/load_tilejson.ts index 2f96df7f79..206a22ec6a 100644 --- a/src/source/load_tilejson.js +++ b/src/source/load_tilejson.ts @@ -1,6 +1,4 @@ -// @flow - -import {pick, extend} from '../util/util'; +import { pick, extend } from '../util/util'; import {getJSON, ResourceType} from '../util/ajax'; import browser from '../util/browser'; @@ -11,7 +9,7 @@ import type {TileJSON} from '../types/tilejson'; import type {Cancelable} from '../types/cancelable'; export default function(options: any, requestManager: RequestManager, callback: Callback): Cancelable { - const loaded = function(err: ?Error, tileJSON: ?Object) { + const loaded = function(err: Error | undefined | null, tileJSON: any) { if (err) { return callback(err); } else if (tileJSON) { diff --git a/src/source/pixels_to_tile_units.js b/src/source/pixels_to_tile_units.ts similarity index 80% rename from src/source/pixels_to_tile_units.js rename to src/source/pixels_to_tile_units.ts index 7874396f30..fdae1e9064 100644 --- a/src/source/pixels_to_tile_units.js +++ b/src/source/pixels_to_tile_units.ts @@ -1,5 +1,3 @@ -// @flow - import EXTENT from '../data/extent'; import type {OverscaledTileID} from './tile_id'; @@ -16,6 +14,13 @@ import type {OverscaledTileID} from './tile_id'; * @returns value in tile units * @private */ -export default function(tile: {tileID: OverscaledTileID, tileSize: number}, pixelValue: number, z: number): number { +export default function( + tile: { + tileID: OverscaledTileID, + tileSize: number + }, + pixelValue: number, + z: number +): number { return pixelValue * (EXTENT / (tile.tileSize * Math.pow(2, z - tile.tileID.overscaledZ))); } diff --git a/src/source/query_features.js b/src/source/query_features.ts similarity index 85% rename from src/source/query_features.js rename to src/source/query_features.ts index c7017b577b..a84a951773 100644 --- a/src/source/query_features.js +++ b/src/source/query_features.ts @@ -1,5 +1,3 @@ -// @flow - import type SourceCache from './source_cache'; import type StyleLayer from '../style/style_layer'; import type CollisionIndex from '../symbol/collision_index'; @@ -19,7 +17,9 @@ function getPixelPosMatrix(transform, tileID) { return mat4.multiply(t, t, transform.calculatePosMatrix(tileID.toUnwrapped())); } -function queryIncludes3DLayer(layers?: Array, styleLayers: {[_: string]: StyleLayer}, sourceID: string) { +function queryIncludes3DLayer(layers: Array | undefined | null, styleLayers: { + [_: string]: StyleLayer +}, sourceID: string) { if (layers) { for (const layerID of layers) { const layer = styleLayers[layerID]; @@ -39,10 +39,18 @@ function queryIncludes3DLayer(layers?: Array, styleLayers: {[_: string]: } export function queryRenderedFeatures(sourceCache: SourceCache, - styleLayers: {[_: string]: StyleLayer}, - serializedLayers: {[_: string]: Object}, + styleLayers: { + [_: string]: StyleLayer + }, + serializedLayers: { + [_: string]: any + }, queryGeometry: Array, - params: { filter: FilterSpecification, layers: Array, availableImages: Array }, + params: { + filter: FilterSpecification, + layers: Array, + availableImages: Array + }, transform: Transform) { const has3DLayer = queryIncludes3DLayer(params && params.layers, styleLayers, sourceCache.id); @@ -85,13 +93,25 @@ export function queryRenderedFeatures(sourceCache: SourceCache, return result; } -export function queryRenderedSymbols(styleLayers: {[_: string]: StyleLayer}, - serializedLayers: {[_: string]: StyleLayer}, - sourceCaches: {[_: string]: SourceCache}, +export function queryRenderedSymbols(styleLayers: { + [_: string]: StyleLayer +}, + serializedLayers: { + [_: string]: StyleLayer + }, + sourceCaches: { + [_: string]: SourceCache + }, queryGeometry: Array, - params: { filter: FilterSpecification, layers: Array, availableImages: Array }, + params: { + filter: FilterSpecification, + layers: Array, + availableImages: Array + }, collisionIndex: CollisionIndex, - retainedQueryData: {[_: number]: RetainedQueryData}) { + retainedQueryData: { + [_: number]: RetainedQueryData + }) { const result = {}; const renderedSymbols = collisionIndex.queryRenderedSymbols(queryGeometry); const bucketQueryData = []; diff --git a/src/source/raster_dem_tile_source.js b/src/source/raster_dem_tile_source.ts similarity index 97% rename from src/source/raster_dem_tile_source.js rename to src/source/raster_dem_tile_source.ts index bd36edfdda..461fecdb97 100644 --- a/src/source/raster_dem_tile_source.js +++ b/src/source/raster_dem_tile_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {getImage, ResourceType} from '../util/ajax'; +import { getImage, ResourceType } from '../util/ajax'; import {extend} from '../util/util'; import {Evented} from '../util/evented'; import browser from '../util/browser'; @@ -54,8 +52,8 @@ class RasterDEMTileSource extends RasterTileSource implements Source { callback(err); } else if (img) { if (this.map._refreshExpiredTiles) tile.setExpiryData(img); - delete (img: any).cacheControl; - delete (img: any).expires; + delete (img as any).cacheControl; + delete (img as any).expires; const transfer = window.ImageBitmap && img instanceof window.ImageBitmap && offscreenCanvasSupported(); const rawImageData = transfer ? img : browser.getImageData(img, 1); const params = { diff --git a/src/source/raster_dem_tile_worker_source.js b/src/source/raster_dem_tile_worker_source.ts similarity index 98% rename from src/source/raster_dem_tile_worker_source.js rename to src/source/raster_dem_tile_worker_source.ts index 416462ea16..f56a6b5e10 100644 --- a/src/source/raster_dem_tile_worker_source.js +++ b/src/source/raster_dem_tile_worker_source.ts @@ -1,5 +1,3 @@ -// @flow - import DEMData from '../data/dem_data'; import {RGBAImage} from '../util/image'; import window from '../util/window'; @@ -14,7 +12,9 @@ const {ImageBitmap} = window; class RasterDEMTileWorkerSource { actor: Actor; - loaded: {[_: string]: DEMData}; + loaded: { + [_: string]: DEMData + }; offscreenCanvas: OffscreenCanvas; offscreenCanvasContext: CanvasRenderingContext2D; diff --git a/src/source/raster_tile_source.js b/src/source/raster_tile_source.ts similarity index 94% rename from src/source/raster_tile_source.js rename to src/source/raster_tile_source.ts index 4aa5b71045..927c426934 100644 --- a/src/source/raster_tile_source.js +++ b/src/source/raster_tile_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {extend, pick} from '../util/util'; +import { extend, pick } from '../util/util'; import {getImage, ResourceType} from '../util/ajax'; import {Event, ErrorEvent, Evented} from '../util/evented'; @@ -24,7 +22,7 @@ import type { } from '../style-spec/types'; class RasterTileSource extends Evented implements Source { - type: 'raster' | 'raster-dem'; + type: "raster" | "raster-dem"; id: string; minzoom: number; maxzoom: number; @@ -32,7 +30,7 @@ class RasterTileSource extends Evented implements Source { scheme: string; tileSize: number; - bounds: ?[number, number, number, number]; + bounds: [number, number, number, number] | undefined | null; tileBounds: TileBounds; roundZoom: boolean; dispatcher: Dispatcher; @@ -41,7 +39,7 @@ class RasterTileSource extends Evented implements Source { _loaded: boolean; _options: RasterSourceSpecification | RasterDEMSourceSpecification; - _tileJSONRequest: ?Cancelable; + _tileJSONRequest: Cancelable | undefined | null; constructor(id: string, options: RasterSourceSpecification | RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) { super(); @@ -122,8 +120,8 @@ class RasterTileSource extends Evented implements Source { callback(err); } else if (img) { if (this.map._refreshExpiredTiles) tile.setExpiryData(img); - delete (img: any).cacheControl; - delete (img: any).expires; + delete (img as any).cacheControl; + delete (img as any).expires; const context = this.map.painter.context; const gl = context.gl; diff --git a/src/source/rtl_text_plugin.js b/src/source/rtl_text_plugin.ts similarity index 83% rename from src/source/rtl_text_plugin.js rename to src/source/rtl_text_plugin.ts index 1d1e6888b0..f9f056dfa1 100644 --- a/src/source/rtl_text_plugin.js +++ b/src/source/rtl_text_plugin.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event, Evented} from '../util/evented'; +import { Event, Evented } from '../util/evented'; import {getArrayBuffer} from '../util/ajax'; import browser from '../util/browser'; import assert from 'assert'; @@ -15,11 +13,11 @@ const status = { }; export type PluginState = { - pluginStatus: $Values; - pluginURL: ?string + pluginStatus: typeof status[keyof typeof status], + pluginURL: string | undefined | null }; -type ErrorCallback = (error: ?Error) => void; +type ErrorCallback = (error?: Error | null) => void; type PluginStateSyncCallback = (state: PluginState) => void; let _completionCallback = null; @@ -27,7 +25,7 @@ let _completionCallback = null; let pluginStatus = status.unavailable; let pluginURL = null; -export const triggerPluginCompletionEvent = function(error: ?Error) { +export const triggerPluginCompletionEvent = function(error: Error | undefined | null) { // NetworkError's are not correctly reflected by the plugin status which prevents reloading plugin if (error && typeof error === 'string' && error.indexOf('NetworkError') > -1) { pluginStatus = status.error; @@ -61,7 +59,7 @@ export const clearRTLTextPlugin = function() { pluginURL = null; }; -export const setRTLTextPlugin = function(url: string, callback: ?ErrorCallback, deferred: boolean = false) { +export const setRTLTextPlugin = function(url: string, callback: ErrorCallback | undefined | null, deferred: boolean = false) { if (pluginStatus === status.deferred || pluginStatus === status.loading || pluginStatus === status.loaded) { throw new Error('setRTLTextPlugin cannot be called multiple times.'); } @@ -95,14 +93,14 @@ export const downloadRTLTextPlugin = function() { }; export const plugin: { - applyArabicShaping: ?Function, - processBidirectionalText: ?(string, Array) => Array, - processStyledBidirectionalText: ?(string, Array, Array) => Array<[string, Array]>, - isLoaded: () => boolean, - isLoading: () => boolean, - setState: (state: PluginState) => void, - isParsed: () => boolean, - getPluginURL: () => ?string + applyArabicShaping: Function | undefined | null, + processBidirectionalText: ((b: string, a: Array) => Array) | undefined | null, + processStyledBidirectionalText: ((c: string, b: Array, a: Array) => Array<[string, Array]>) | undefined | null, + isLoaded: () => boolean, + isLoading: () => boolean, + setState: (state: PluginState) => void, + isParsed: () => boolean, + getPluginURL: () => string | undefined | null } = { applyArabicShaping: null, processBidirectionalText: null, @@ -127,7 +125,7 @@ export const plugin: { plugin.processBidirectionalText != null && plugin.processStyledBidirectionalText != null; }, - getPluginURL(): ?string { + getPluginURL(): string | undefined | null { assert(isWorker(), 'rtl-text-plugin url can only be queried from the worker threads'); return pluginURL; } diff --git a/src/source/source.js b/src/source/source.ts similarity index 77% rename from src/source/source.js rename to src/source/source.ts index 92f2279ee4..162a12a937 100644 --- a/src/source/source.js +++ b/src/source/source.ts @@ -1,6 +1,4 @@ -// @flow - -import {bindAll} from '../util/util'; +import { bindAll } from '../util/util'; import type Dispatcher from '../util/dispatcher'; import type {Event, Evented} from '../util/evented'; @@ -35,53 +33,48 @@ import {CanonicalTileID} from './tile_id'; * if they are floor-ed to the nearest integer. */ export interface Source { - +type: string; - id: string; - minzoom: number, - maxzoom: number, - tileSize: number, - attribution?: string, - - roundZoom?: boolean, - isTileClipped?: boolean, - mapbox_logo?: boolean, - tileID?: CanonicalTileID; - reparseOverscaled?: boolean, - vectorLayerIds?: Array, - - hasTransition(): boolean; - loaded(): boolean; - - fire(event: Event): mixed; - - +onAdd?: (map: Map) => void; - +onRemove?: (map: Map) => void; - - loadTile(tile: Tile, callback: Callback): void; - +hasTile?: (tileID: OverscaledTileID) => boolean; - +abortTile?: (tile: Tile, callback: Callback) => void; - +unloadTile?: (tile: Tile, callback: Callback) => void; - - /** + readonly type: string; + id: string; + minzoom: number; + maxzoom: number; + tileSize: number; + attribution?: string; + roundZoom?: boolean; + isTileClipped?: boolean; + mapbox_logo?: boolean; + tileID?: CanonicalTileID; + reparseOverscaled?: boolean; + vectorLayerIds?: Array; + hasTransition(): boolean; + loaded(): boolean; + fire(event: Event): unknown; + readonly onAdd?: (map: Map) => void; + readonly onRemove?: (map: Map) => void; + loadTile(tile: Tile, callback: Callback): void; + readonly hasTile?: (tileID: OverscaledTileID) => boolean; + readonly abortTile?: (tile: Tile, callback: Callback) => void; + readonly unloadTile?: (tile: Tile, callback: Callback) => void; + /** * @returns A plain (stringifiable) JS object representing the current state of the source. * Creating a source using the returned object as the `options` should result in a Source that is * equivalent to this one. * @private */ - serialize(): Object; - - +prepare?: () => void; + serialize(): any; + readonly prepare?: () => void; } type SourceStatics = { - /* + /* * An optional URL to a script which, when run by a Worker, registers a {@link WorkerSource} * implementation for this Source type by calling `self.registerWorkerSource(workerSource: WorkerSource)`. */ - workerSourceURL?: URL; + workerSourceURL?: URL }; -export type SourceClass = Class & SourceStatics; +export type SourceClass = { + new (...args: any): Source +} & SourceStatics; import vector from '../source/vector_tile_source'; import raster from '../source/raster_tile_source'; @@ -114,7 +107,7 @@ const sourceTypes = { * @returns {Source} */ export const create = function(id: string, specification: SourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) { - const source = new sourceTypes[specification.type](id, (specification: any), dispatcher, eventedParent); + const source = new sourceTypes[specification.type](id, (specification as any), dispatcher, eventedParent); if (source.id !== id) { throw new Error(`Expected Source id to be ${id} instead of ${source.id}`); @@ -128,10 +121,12 @@ export const getType = function (name: string) { return sourceTypes[name]; }; -export const setType = function (name: string, type: Class) { +export const setType = function (name: string, type: { + new (...args: any): Source +}) { sourceTypes[name] = type; }; export interface Actor { - send(type: string, data: Object, callback: Callback): void; + send(type: string, data: any, callback: Callback): void; } diff --git a/src/source/source_cache.js b/src/source/source_cache.ts similarity index 95% rename from src/source/source_cache.js rename to src/source/source_cache.ts index 525df8ad00..92e5c5c60e 100644 --- a/src/source/source_cache.js +++ b/src/source/source_cache.ts @@ -1,6 +1,4 @@ -// @flow - -import {create as createSource} from './source'; +import { create as createSource } from './source'; import Tile from './tile'; import {Event, ErrorEvent, Evented} from '../util/evented'; @@ -44,20 +42,30 @@ class SourceCache extends Evented { _source: Source; _sourceLoaded: boolean; _sourceErrored: boolean; - _tiles: {[_: string]: Tile}; + _tiles: { + [_: string]: Tile + }; _prevLng: number | void; _cache: TileCache; - _timers: {[_: any]: TimeoutID}; - _cacheTimers: {[_: any]: TimeoutID}; - _maxTileCacheSize: ?number; + _timers: { + [_ in any]: TimeoutID; + }; + _cacheTimers: { + [_ in any]: TimeoutID; + }; + _maxTileCacheSize: number | undefined | null; _paused: boolean; _shouldReloadOnResume: boolean; - _coveredTiles: {[_: string]: boolean}; + _coveredTiles: { + [_: string]: boolean + }; transform: Transform; _isIdRenderable: (id: string, symbolLayer?: boolean) => boolean; used: boolean; _state: SourceFeatureState; - _loadedParentTiles: {[_: string]: ?Tile}; + _loadedParentTiles: { + [_: string]: Tile | undefined | null + }; static maxUnderzooming: number; static maxOverzooming: number; @@ -184,7 +192,7 @@ class SourceCache extends Evented { * @private */ getIds(): Array { - return (values(this._tiles): any).map((tile: Tile) => tile.tileID).sort(compareTileId).map(id => id.key); + return (values(this._tiles) as any).map((tile: Tile) => tile.tileID).sort(compareTileId).map(id => id.key); } getRenderableIds(symbolLayer?: boolean): Array { @@ -249,10 +257,10 @@ class SourceCache extends Evented { this._loadTile(tile, this._tileLoaded.bind(this, tile, id, state)); } - _tileLoaded(tile: Tile, id: string, previousState: TileState, err: ?Error) { + _tileLoaded(tile: Tile, id: string, previousState: TileState, err?: Error | null) { if (err) { tile.state = 'errored'; - if ((err: any).status !== 404) this._source.fire(new ErrorEvent(err, {tile})); + if ((err as any).status !== 404) this._source.fire(new ErrorEvent(err, {tile})); // continue to try loading parent/children tiles if a tile doesn't exist (404) else this.update(this.transform); return; @@ -329,10 +337,14 @@ class SourceCache extends Evented { * @private */ _retainLoadedChildren( - idealTiles: {[_: any]: OverscaledTileID}, + idealTiles: { + [_ in any]: OverscaledTileID; + }, zoom: number, maxCoveringZoom: number, - retain: {[_: any]: OverscaledTileID} + retain: { + [_ in any]: OverscaledTileID; + } ) { for (const id in this._tiles) { let tile = this._tiles[id]; @@ -374,7 +386,7 @@ class SourceCache extends Evented { * Find a loaded parent of the given tile (up to minCoveringZoom) * @private */ - findLoadedParent(tileID: OverscaledTileID, minCoveringZoom: number): ?Tile { + findLoadedParent(tileID: OverscaledTileID, minCoveringZoom: number): Tile | undefined | null { if (tileID.key in this._loadedParentTiles) { const parent = this._loadedParentTiles[tileID.key]; if (parent && parent.tileID.overscaledZ >= minCoveringZoom) { @@ -392,7 +404,7 @@ class SourceCache extends Evented { } } - _getLoadedTile(tileID: OverscaledTileID): ?Tile { + _getLoadedTile(tileID: OverscaledTileID): Tile | undefined | null { const tile = this._tiles[tileID.key]; if (tile && tile.hasData()) { return tile; @@ -446,7 +458,9 @@ class SourceCache extends Evented { this._prevLng = lng; if (wrapDelta) { - const tiles: {[_: string]: Tile} = {}; + const tiles: { + [_: string]: Tile + } = {}; for (const key in this._tiles) { const tile = this._tiles[key]; tile.tileID = tile.tileID.unwrapTo(tile.tileID.wrap + wrapDelta); @@ -498,7 +512,7 @@ class SourceCache extends Evented { }); if (this._source.hasTile) { - idealTileIDs = idealTileIDs.filter((coord) => (this._source.hasTile: any)(coord)); + idealTileIDs = idealTileIDs.filter((coord) => ((this._source.hasTile as any))(coord)); } } @@ -513,7 +527,9 @@ class SourceCache extends Evented { const retain = this._updateRetainedTiles(idealTileIDs, zoom); if (isRasterType(this._source.type)) { - const parentsForFading: {[_: string]: OverscaledTileID} = {}; + const parentsForFading: { + [_: string]: OverscaledTileID + } = {}; const fadingTiles = {}; const ids = Object.keys(retain); for (const id of ids) { @@ -574,9 +590,15 @@ class SourceCache extends Evented { } } - _updateRetainedTiles(idealTileIDs: Array, zoom: number): {[_: string]: OverscaledTileID} { - const retain: {[_: string]: OverscaledTileID} = {}; - const checked: {[_: string]: boolean } = {}; + _updateRetainedTiles(idealTileIDs: Array, zoom: number): { + [_: string]: OverscaledTileID + } { + const retain: { + [_: string]: OverscaledTileID + } = {}; + const checked: { + [_: string]: boolean + } = {}; const minCoveringZoom = Math.max(zoom - SourceCache.maxOverzooming, this._source.minzoom); const maxCoveringZoom = Math.max(zoom + SourceCache.maxUnderzooming, this._source.minzoom); @@ -660,7 +682,7 @@ class SourceCache extends Evented { for (const tileKey in this._tiles) { const path = []; - let parentTile: ?Tile; + let parentTile: Tile | undefined | null; let currentId = this._tiles[tileKey].tileID; // Find the closest loaded ancestor by traversing the tile tree towards the root and @@ -721,7 +743,7 @@ class SourceCache extends Evented { } // Impossible, but silence flow. - if (!tile) return (null: any); + if (!tile) return null as any; tile.uses++; this._tiles[tileID.key] = tile; @@ -884,7 +906,7 @@ class SourceCache extends Evented { * Set the value of a particular state for a feature * @private */ - setFeatureState(sourceLayer?: string, featureId: number | string, state: Object) { + setFeatureState(sourceLayer: string | undefined | null, featureId: number | string, state: any) { sourceLayer = sourceLayer || '_geojsonTileLayer'; this._state.updateState(sourceLayer, featureId, state); } @@ -902,7 +924,7 @@ class SourceCache extends Evented { * Get the entire state object for a feature * @private */ - getFeatureState(sourceLayer?: string, featureId: number | string) { + getFeatureState(sourceLayer: string | undefined | null, featureId: number | string) { sourceLayer = sourceLayer || '_geojsonTileLayer'; return this._state.getState(sourceLayer, featureId); } diff --git a/src/source/source_state.js b/src/source/source_state.ts similarity index 96% rename from src/source/source_state.js rename to src/source/source_state.ts index 1cc4d03d99..75f2a3f7ab 100644 --- a/src/source/source_state.js +++ b/src/source/source_state.ts @@ -1,11 +1,13 @@ -// @flow - -import {extend} from '../util/util'; +import { extend } from '../util/util'; import Tile from './tile'; import type {FeatureState} from '../style-spec/expression'; -export type FeatureStates = {[feature_id: string]: FeatureState}; -export type LayerFeatureStates = {[layer: string]: FeatureStates}; +export type FeatureStates = { + [feature_id: string]: FeatureState +}; +export type LayerFeatureStates = { + [layer: string]: FeatureStates +}; /** * SourceFeatureState manages the state and pending changes @@ -27,7 +29,7 @@ class SourceFeatureState { this.deletedStates = {}; } - updateState(sourceLayer: string, featureId: number | string, newState: Object) { + updateState(sourceLayer: string, featureId: number | string, newState: any) { const feature = String(featureId); this.stateChanges[sourceLayer] = this.stateChanges[sourceLayer] || {}; this.stateChanges[sourceLayer][feature] = this.stateChanges[sourceLayer][feature] || {}; @@ -103,7 +105,9 @@ class SourceFeatureState { tile.setFeatureState(this.state, painter); } - coalesceChanges(tiles: {[_: any]: Tile}, painter: any) { + coalesceChanges(tiles: { + [_ in any]: Tile; + }, painter: any) { //track changes with full state objects, but only for features that got modified const featuresChanged: LayerFeatureStates = {}; diff --git a/src/source/tile.js b/src/source/tile.ts similarity index 87% rename from src/source/tile.js rename to src/source/tile.ts index 419059b7ac..3f484cb653 100644 --- a/src/source/tile.js +++ b/src/source/tile.ts @@ -1,6 +1,4 @@ -// @flow - -import {uniqueId, parseCacheControl} from '../util/util'; +import { uniqueId, parseCacheControl } from '../util/util'; import {deserialize as deserializeBucket} from '../data/bucket'; import FeatureIndex from '../data/feature_index'; import GeoJSONFeature from '../util/vectortile_to_geojson'; @@ -32,13 +30,12 @@ import type {LayerFeatureStates} from './source_state'; import type {Cancelable} from '../types/cancelable'; import type {FilterSpecification} from '../style-spec/types'; -export type TileState = - | 'loading' // Tile data is in the process of loading. - | 'loaded' // Tile data has been loaded. Tile can be rendered. - | 'reloading' // Tile data has been loaded and is being updated. Tile can be rendered. - | 'unloaded' // Tile data has been deleted. - | 'errored' // Tile data was not loaded because of an error. - | 'expired'; /* Tile data was previously loaded, but has expired per its +export type TileState = // Tile data is in the process of loading. +"loading" | // Tile data has been loaded. Tile can be rendered. +"loaded" | // Tile data has been loaded and is being updated. Tile can be rendered. +"reloading" | // Tile data has been deleted. +"unloaded" | // Tile data was not loaded because of an error. +"errored" | "expired"; /* Tile data was previously loaded, but has expired per its * HTTP headers and is in the process of refreshing. */ /** @@ -52,42 +49,46 @@ class Tile { uid: number; uses: number; tileSize: number; - buckets: {[_: string]: Bucket}; - latestFeatureIndex: ?FeatureIndex; - latestRawTileData: ?ArrayBuffer; - imageAtlas: ?ImageAtlas; + buckets: { + [_: string]: Bucket + }; + latestFeatureIndex: FeatureIndex | undefined | null; + latestRawTileData: ArrayBuffer | undefined | null; + imageAtlas: ImageAtlas | undefined | null; imageAtlasTexture: Texture; - glyphAtlasImage: ?AlphaImage; + glyphAtlasImage: AlphaImage | undefined | null; glyphAtlasTexture: Texture; expirationTime: any; expiredRequestCount: number; state: TileState; timeAdded: any; fadeEndTime: any; - collisionBoxArray: ?CollisionBoxArray; + collisionBoxArray: CollisionBoxArray | undefined | null; redoWhenDone: boolean; showCollisionBoxes: boolean; placementSource: any; - actor: ?Actor; - vtLayers: {[_: string]: VectorTileLayer}; - - neighboringTiles: ?Object; - dem: ?DEMData; - aborted: ?boolean; - needsHillshadePrepare: ?boolean; - request: ?Cancelable; + actor: Actor | undefined | null; + vtLayers: { + [_: string]: VectorTileLayer + }; + + neighboringTiles: any; + dem: DEMData | undefined | null; + aborted: boolean | undefined | null; + needsHillshadePrepare: boolean | undefined | null; + request: Cancelable | undefined | null; texture: any; - fbo: ?Framebuffer; - demTexture: ?Texture; + fbo: Framebuffer | undefined | null; + demTexture: Texture | undefined | null; refreshedUponExpiration: boolean; reloadCallback: any; - resourceTiming: ?Array; + resourceTiming: Array | undefined | null; queryPadding: number; - symbolFadeHoldUntil: ?number; + symbolFadeHoldUntil: number | undefined | null; hasSymbolBuckets: boolean; hasRTLText: boolean; - dependencies: Object; + dependencies: any; /** * @param {OverscaledTileID} tileID @@ -137,7 +138,7 @@ class Tile { * @returns {undefined} * @private */ - loadVectorData(data: WorkerTileResult, painter: any, justReloaded: ?boolean) { + loadVectorData(data: WorkerTileResult, painter: any, justReloaded?: boolean | null) { if (this.hasData()) { this.unloadVectorData(); } @@ -266,16 +267,31 @@ class Tile { // Queries non-symbol features rendered for this tile. // Symbol features are queried globally - queryRenderedFeatures(layers: {[_: string]: StyleLayer}, - serializedLayers: {[string]: Object}, - sourceFeatureState: SourceFeatureState, - queryGeometry: Array, - cameraQueryGeometry: Array, - scale: number, - params: { filter: FilterSpecification, layers: Array, availableImages: Array }, - transform: Transform, - maxPitchScaleFactor: number, - pixelPosMatrix: Float32Array): {[_: string]: Array<{ featureIndex: number, feature: GeoJSONFeature }>} { + queryRenderedFeatures( + layers: { + [_: string]: StyleLayer + }, + serializedLayers: { + [x: string]: any + }, + sourceFeatureState: SourceFeatureState, + queryGeometry: Array, + cameraQueryGeometry: Array, + scale: number, + params: { + filter: FilterSpecification, + layers: Array, + availableImages: Array + }, + transform: Transform, + maxPitchScaleFactor: number, + pixelPosMatrix: Float32Array + ): { + [_: string]: Array<{ + featureIndex: number, + feature: GeoJSONFeature + }> + } { if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData) return {}; @@ -316,7 +332,7 @@ class Tile { } const id = featureIndex.getId(feature, sourceLayer); const geojsonFeature = new GeoJSONFeature(feature, z, x, y, id); - (geojsonFeature: any).tile = coord; + (geojsonFeature as any).tile = coord; result.push(geojsonFeature); } } diff --git a/src/source/tile_bounds.js b/src/source/tile_bounds.ts similarity index 96% rename from src/source/tile_bounds.js rename to src/source/tile_bounds.ts index de9de3a47b..804eda7921 100644 --- a/src/source/tile_bounds.js +++ b/src/source/tile_bounds.ts @@ -1,5 +1,3 @@ -// @flow - import LngLatBounds from '../geo/lng_lat_bounds'; import {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate'; @@ -10,7 +8,7 @@ class TileBounds { minzoom: number; maxzoom: number; - constructor(bounds: [number, number, number, number], minzoom: ?number, maxzoom: ?number) { + constructor(bounds: [number, number, number, number], minzoom?: number | null, maxzoom?: number | null) { this.bounds = LngLatBounds.convert(this.validateBounds(bounds)); this.minzoom = minzoom || 0; this.maxzoom = maxzoom || 24; diff --git a/src/source/tile_cache.js b/src/source/tile_cache.ts similarity index 91% rename from src/source/tile_cache.js rename to src/source/tile_cache.ts index 581d8548c6..2c9deb1daa 100644 --- a/src/source/tile_cache.js +++ b/src/source/tile_cache.ts @@ -1,6 +1,4 @@ -// @flow - -import {OverscaledTileID} from './tile_id'; +import { OverscaledTileID } from './tile_id'; import type Tile from './tile'; /** @@ -12,7 +10,12 @@ import type Tile from './tile'; */ class TileCache { max: number; - data: {[key: string]: Array<{ value: Tile, timeout: ?TimeoutID}>}; + data: { + [key: string]: Array<{ + value: Tile, + timeout: TimeoutID | undefined | null + }> + }; order: Array; onRemove: (element: Tile) => void; /** @@ -102,7 +105,7 @@ class TileCache { * @returns {*} the data, or null if it isn't found * @private */ - getAndRemove(tileID: OverscaledTileID): ?Tile { + getAndRemove(tileID: OverscaledTileID): Tile | undefined | null { if (!this.has(tileID)) { return null; } return this._getAndRemoveByKey(tileID.wrapped().key); } @@ -110,7 +113,7 @@ class TileCache { /* * Get and remove the value with the specified key. */ - _getAndRemoveByKey(key: string): ?Tile { + _getAndRemoveByKey(key: string): Tile | undefined | null { const data = this.data[key].shift(); if (data.timeout) clearTimeout(data.timeout); @@ -125,7 +128,7 @@ class TileCache { /* * Get the value with the specified (wrapped tile) key. */ - getByKey(key: string): ?Tile { + getByKey(key: string): Tile | undefined | null { const data = this.data[key]; return data ? data[0].value : null; } @@ -138,7 +141,7 @@ class TileCache { * @returns {*} the data, or null if it isn't found * @private */ - get(tileID: OverscaledTileID): ?Tile { + get(tileID: OverscaledTileID): Tile | undefined | null { if (!this.has(tileID)) { return null; } const data = this.data[tileID.wrapped().key][0]; @@ -153,7 +156,10 @@ class TileCache { * @returns {TileCache} this cache * @private */ - remove(tileID: OverscaledTileID, value: ?{ value: Tile, timeout: ?TimeoutID}) { + remove(tileID: OverscaledTileID, value?: { + value: Tile, + timeout: TimeoutID | undefined | null + } | null) { if (!this.has(tileID)) { return this; } const key = tileID.wrapped().key; diff --git a/src/source/tile_id.js b/src/source/tile_id.ts similarity index 98% rename from src/source/tile_id.js rename to src/source/tile_id.ts index 244209cee0..eab403c5df 100644 --- a/src/source/tile_id.js +++ b/src/source/tile_id.ts @@ -1,6 +1,4 @@ -// @flow - -import {getTileBBox} from '@mapbox/whoots-js'; +import { getTileBBox } from '@mapbox/whoots-js'; import EXTENT from '../data/extent'; import Point from '@mapbox/point-geometry'; import MercatorCoordinate from '../geo/mercator_coordinate'; @@ -29,7 +27,7 @@ export class CanonicalTileID { } // given a list of urls, choose a url template and return a tile URL - url(urls: Array, scheme: ?string) { + url(urls: Array, scheme?: string | null) { const bbox = getTileBBox(this.x, this.y, this.z); const quadkey = getQuadkey(this.z, this.x, this.y); diff --git a/src/source/vector_tile_source.js b/src/source/vector_tile_source.ts similarity index 95% rename from src/source/vector_tile_source.js rename to src/source/vector_tile_source.ts index b8f19b4ba2..3d1cdb3fdf 100644 --- a/src/source/vector_tile_source.js +++ b/src/source/vector_tile_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event, ErrorEvent, Evented} from '../util/evented'; +import { Event, ErrorEvent, Evented } from '../util/evented'; import {extend, pick} from '../util/util'; import loadTileJSON from './load_tilejson'; @@ -46,28 +44,30 @@ import type {VectorSourceSpecification, PromoteIdSpecification} from '../style-s * @see [Add a third party vector tile source](https://maplibre.org/maplibre-gl-js-docs/example/third-party/) */ class VectorTileSource extends Evented implements Source { - type: 'vector'; + type: "vector"; id: string; minzoom: number; maxzoom: number; url: string; scheme: string; tileSize: number; - promoteId: ?PromoteIdSpecification; + promoteId: PromoteIdSpecification | undefined | null; _options: VectorSourceSpecification; _collectResourceTiming: boolean; dispatcher: Dispatcher; map: Map; - bounds: ?[number, number, number, number]; + bounds: [number, number, number, number] | undefined | null; tiles: Array; tileBounds: TileBounds; reparseOverscaled: boolean; isTileClipped: boolean; - _tileJSONRequest: ?Cancelable; + _tileJSONRequest: Cancelable | undefined | null; _loaded: boolean; - constructor(id: string, options: VectorSourceSpecification & {collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) { + constructor(id: string, options: VectorSourceSpecification & { + collectResourceTiming: boolean + }, dispatcher: Dispatcher, eventedParent: Evented) { super(); this.id = id; this.dispatcher = dispatcher; diff --git a/src/source/vector_tile_worker_source.js b/src/source/vector_tile_worker_source.ts similarity index 91% rename from src/source/vector_tile_worker_source.js rename to src/source/vector_tile_worker_source.ts index 1effce4be1..873671474d 100644 --- a/src/source/vector_tile_worker_source.js +++ b/src/source/vector_tile_worker_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {getArrayBuffer} from '../util/ajax'; +import { getArrayBuffer } from '../util/ajax'; import vt from '@mapbox/vector-tile'; import Protobuf from 'pbf'; @@ -20,11 +18,11 @@ import type StyleLayerIndex from '../style/style_layer_index'; import type {Callback} from '../types/callback'; export type LoadVectorTileResult = { - vectorTile: VectorTile; - rawData: ArrayBuffer; - expires?: any; - cacheControl?: any; - resourceTiming?: Array; + vectorTile: VectorTile, + rawData: ArrayBuffer, + expires?: any, + cacheControl?: any, + resourceTiming?: Array }; /** @@ -33,16 +31,16 @@ export type LoadVectorTileResult = { * @param vectorTile * @private */ -export type LoadVectorDataCallback = Callback; +export type LoadVectorDataCallback = Callback; export type AbortVectorData = () => void; -export type LoadVectorData = (params: WorkerTileParameters, callback: LoadVectorDataCallback) => ?AbortVectorData; +export type LoadVectorData = (params: WorkerTileParameters, callback: LoadVectorDataCallback) => AbortVectorData | undefined | null; /** * @private */ function loadVectorTile(params: WorkerTileParameters, callback: LoadVectorDataCallback) { - const request = getArrayBuffer(params.request, (err: ?Error, data: ?ArrayBuffer, cacheControl: ?string, expires: ?string) => { + const request = getArrayBuffer(params.request, (err?: Error | null, data?: ArrayBuffer | null, cacheControl?: string | null, expires?: string | null) => { if (err) { callback(err); } else if (data) { @@ -74,8 +72,12 @@ class VectorTileWorkerSource implements WorkerSource { layerIndex: StyleLayerIndex; availableImages: Array; loadVectorData: LoadVectorData; - loading: {[_: string]: WorkerTile }; - loaded: {[_: string]: WorkerTile }; + loading: { + [_: string]: WorkerTile + }; + loaded: { + [_: string]: WorkerTile + }; /** * @param [loadVectorData] Optional method for custom loading of a VectorTile @@ -84,7 +86,7 @@ class VectorTileWorkerSource implements WorkerSource { * loads the pbf at `params.url`. * @private */ - constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, loadVectorData: ?LoadVectorData) { + constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array, loadVectorData?: LoadVectorData | null) { this.actor = actor; this.layerIndex = layerIndex; this.availableImages = availableImages; diff --git a/src/source/video_source.js b/src/source/video_source.ts similarity index 98% rename from src/source/video_source.js rename to src/source/video_source.ts index cdaa9af3cd..94f8451d04 100644 --- a/src/source/video_source.js +++ b/src/source/video_source.ts @@ -1,6 +1,4 @@ -// @flow - -import {getVideo, ResourceType} from '../util/ajax'; +import { getVideo, ResourceType } from '../util/ajax'; import ImageSource from './image_source'; import rasterBoundsAttributes from '../data/raster_bounds_attributes'; diff --git a/src/source/worker.js b/src/source/worker.ts similarity index 81% rename from src/source/worker.js rename to src/source/worker.ts index 27a10fa3a5..20918642d2 100644 --- a/src/source/worker.js +++ b/src/source/worker.ts @@ -1,5 +1,3 @@ -// @flow - import Actor from '../util/actor'; import StyleLayerIndex from '../style/style_layer_index'; @@ -30,12 +28,30 @@ import type {PluginState} from './rtl_text_plugin'; export default class Worker { self: WorkerGlobalScopeInterface; actor: Actor; - layerIndexes: {[_: string]: StyleLayerIndex }; - availableImages: {[_: string]: Array }; - workerSourceTypes: {[_: string]: Class }; - workerSources: {[_: string]: {[_: string]: {[_: string]: WorkerSource } } }; - demWorkerSources: {[_: string]: {[_: string]: RasterDEMTileWorkerSource } }; - referrer: ?string; + layerIndexes: { + [_: string]: StyleLayerIndex + }; + availableImages: { + [_: string]: Array + }; + workerSourceTypes: { + [_: string]: { + new (...args: any): WorkerSource + } + }; + workerSources: { + [_: string]: { + [_: string]: { + [_: string]: WorkerSource + } + } + }; + demWorkerSources: { + [_: string]: { + [_: string]: RasterDEMTileWorkerSource + } + }; + referrer: string | undefined | null; constructor(self: WorkerGlobalScopeInterface) { this.self = self; @@ -53,7 +69,9 @@ export default class Worker { this.workerSources = {}; this.demWorkerSources = {}; - this.self.registerWorkerSource = (name: string, WorkerSource: Class) => { + this.self.registerWorkerSource = (name: string, WorkerSource: { + new (...args: any): WorkerSource + }) => { if (this.workerSourceTypes[name]) { throw new Error(`Worker source with name "${name}" already registered.`); } @@ -61,7 +79,11 @@ export default class Worker { }; // This is invoked by the RTL text plugin when the download via the `importScripts` call has finished, and the code has been parsed. - this.self.registerRTLTextPlugin = (rtlTextPlugin: {applyArabicShaping: Function, processBidirectionalText: Function, processStyledBidirectionalText?: Function}) => { + this.self.registerRTLTextPlugin = (rtlTextPlugin: { + applyArabicShaping: Function, + processBidirectionalText: Function, + processStyledBidirectionalText?: Function + }) => { if (globalRTLTextPlugin.isParsed()) { throw new Error('RTL text plugin already registered.'); } @@ -91,12 +113,17 @@ export default class Worker { callback(); } - updateLayers(mapId: string, params: {layers: Array, removedIds: Array}, callback: WorkerTileCallback) { + updateLayers(mapId: string, params: { + layers: Array, + removedIds: Array + }, callback: WorkerTileCallback) { this.getLayerIndex(mapId).update(params.layers, params.removedIds); callback(); } - loadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) { + loadTile(mapId: string, params: WorkerTileParameters & { + type: string + }, callback: WorkerTileCallback) { assert(params.type); this.getWorkerSource(mapId, params.type, params.source).loadTile(params, callback); } @@ -105,17 +132,23 @@ export default class Worker { this.getDEMWorkerSource(mapId, params.source).loadTile(params, callback); } - reloadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) { + reloadTile(mapId: string, params: WorkerTileParameters & { + type: string + }, callback: WorkerTileCallback) { assert(params.type); this.getWorkerSource(mapId, params.type, params.source).reloadTile(params, callback); } - abortTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) { + abortTile(mapId: string, params: TileParameters & { + type: string + }, callback: WorkerTileCallback) { assert(params.type); this.getWorkerSource(mapId, params.type, params.source).abortTile(params, callback); } - removeTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) { + removeTile(mapId: string, params: TileParameters & { + type: string + }, callback: WorkerTileCallback) { assert(params.type); this.getWorkerSource(mapId, params.type, params.source).removeTile(params, callback); } @@ -124,7 +157,11 @@ export default class Worker { this.getDEMWorkerSource(mapId, params.source).removeTile(params); } - removeSource(mapId: string, params: {source: string} & {type: string}, callback: WorkerTileCallback) { + removeSource(mapId: string, params: { + source: string + } & { + type: string + }, callback: WorkerTileCallback) { assert(params.type); assert(params.source); @@ -150,7 +187,9 @@ export default class Worker { * function taking `(name, workerSourceObject)`. * @private */ - loadWorkerSource(map: string, params: { url: string }, callback: Callback) { + loadWorkerSource(map: string, params: { + url: string + }, callback: Callback) { try { this.self.importScripts(params.url); callback(); @@ -210,7 +249,7 @@ export default class Worker { this.actor.send(type, data, callback, mapId); } }; - this.workerSources[mapId][type][source] = new (this.workerSourceTypes[type]: any)((actor: any), this.getLayerIndex(mapId), this.getAvailableImages(mapId)); + this.workerSources[mapId][type][source] = new (this.workerSourceTypes[type] as any)((actor as any), this.getLayerIndex(mapId), this.getAvailableImages(mapId)); } return this.workerSources[mapId][type][source]; diff --git a/src/source/worker_source.js b/src/source/worker_source.ts similarity index 53% rename from src/source/worker_source.js rename to src/source/worker_source.ts index c800049e3b..6a01af0447 100644 --- a/src/source/worker_source.js +++ b/src/source/worker_source.ts @@ -1,6 +1,4 @@ -// @flow - -import type {RequestParameters} from '../util/ajax'; +import type { RequestParameters } from '../util/ajax'; import type {RGBAImage, AlphaImage} from '../util/image'; import type {GlyphPositions} from '../render/glyph_atlas'; import type ImageAtlas from '../render/image_atlas'; @@ -16,45 +14,56 @@ import window from '../util/window'; const {ImageBitmap} = window; export type TileParameters = { - source: string, - uid: string, + source: string, + uid: string }; export type WorkerTileParameters = TileParameters & { - tileID: OverscaledTileID, - request: RequestParameters, - zoom: number, - maxZoom: number, - tileSize: number, - promoteId: ?PromoteIdSpecification, - pixelRatio: number, - showCollisionBoxes: boolean, - collectResourceTiming?: boolean, - returnDependencies?: boolean + tileID: OverscaledTileID, + request: RequestParameters, + zoom: number, + maxZoom: number, + tileSize: number, + promoteId: PromoteIdSpecification | undefined | null, + pixelRatio: number, + showCollisionBoxes: boolean, + collectResourceTiming?: boolean, + returnDependencies?: boolean }; export type WorkerDEMTileParameters = TileParameters & { - coord: { z: number, x: number, y: number, w: number }, - rawImageData: RGBAImage | ImageBitmap, - encoding: "mapbox" | "terrarium" + coord: { + z: number, + x: number, + y: number, + w: number + }, + rawImageData: RGBAImage | ImageBitmap, + encoding: "mapbox" | "terrarium" }; export type WorkerTileResult = { - buckets: Array, - imageAtlas: ImageAtlas, - glyphAtlasImage: AlphaImage, - featureIndex: FeatureIndex, - collisionBoxArray: CollisionBoxArray, - rawTileData?: ArrayBuffer, - resourceTiming?: Array, - // Only used for benchmarking: - glyphMap?: {[_: string]: {[_: number]: ?StyleGlyph}} | null, - iconMap?: {[_: string]: StyleImage} | null, - glyphPositions?: GlyphPositions | null + buckets: Array, + imageAtlas: ImageAtlas, + glyphAtlasImage: AlphaImage, + featureIndex: FeatureIndex, + collisionBoxArray: CollisionBoxArray, + rawTileData?: ArrayBuffer, + resourceTiming?: Array, + // Only used for benchmarking: + glyphMap?: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + } | null, + iconMap?: { + [_: string]: StyleImage + } | null, + glyphPositions?: GlyphPositions | null }; -export type WorkerTileCallback = (error: ?Error, result: ?WorkerTileResult) => void; -export type WorkerDEMTileCallback = (err: ?Error, result: ?DEMData) => void; +export type WorkerTileCallback = (error?: Error | null, result?: WorkerTileResult | null) => void; +export type WorkerDEMTileCallback = (err?: Error | null, result?: DEMData | null) => void; /** * May be implemented by custom source types to provide code that can be run on @@ -71,37 +80,38 @@ export type WorkerDEMTileCallback = (err: ?Error, result: ?DEMData) => void; * @param layerIndex */ export interface WorkerSource { - availableImages: Array, - // Disabled due to https://github.com/facebook/flow/issues/5208 - // constructor(actor: Actor, layerIndex: StyleLayerIndex): WorkerSource; + availableImages: Array; + // Disabled due to https://github.com/facebook/flow/issues/5208 + // constructor(actor: Actor, layerIndex: StyleLayerIndex): WorkerSource; - /** + /** * Loads a tile from the given params and parse it into buckets ready to send * back to the main thread for rendering. Should call the callback with: * `{ buckets, featureIndex, collisionIndex, rawTileData}`. */ - loadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void; - - /** + loadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void; + /** * Re-parses a tile that has already been loaded. Yields the same data as * {@link WorkerSource#loadTile}. */ - reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void; - - /** + reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void; + /** * Aborts loading a tile that is in progress. */ - abortTile(params: TileParameters, callback: WorkerTileCallback): void; - - /** + abortTile(params: TileParameters, callback: WorkerTileCallback): void; + /** * Removes this tile from any local caches. */ - removeTile(params: TileParameters, callback: WorkerTileCallback): void; - - /** + removeTile(params: TileParameters, callback: WorkerTileCallback): void; + /** * Tells the WorkerSource to abort in-progress tasks and release resources. * The foreground Source is responsible for ensuring that 'removeSource' is * the last message sent to the WorkerSource. */ - removeSource?: (params: {source: string}, callback: WorkerTileCallback) => void; + removeSource?: ( + params: { + source: string + }, + callback: WorkerTileCallback + ) => void; } diff --git a/src/source/worker_tile.js b/src/source/worker_tile.ts similarity index 92% rename from src/source/worker_tile.js rename to src/source/worker_tile.ts index fd5e8d5d50..a839d623f8 100644 --- a/src/source/worker_tile.js +++ b/src/source/worker_tile.ts @@ -1,5 +1,3 @@ -// @flow - import FeatureIndex from '../data/feature_index'; import {performSymbolLayout} from '../symbol/symbol_layout'; @@ -35,17 +33,17 @@ class WorkerTile { pixelRatio: number; tileSize: number; source: string; - promoteId: ?PromoteIdSpecification; + promoteId: PromoteIdSpecification | undefined | null; overscaling: number; showCollisionBoxes: boolean; collectResourceTiming: boolean; returnDependencies: boolean; - status: 'parsing' | 'done'; + status: "parsing" | "done"; data: VectorTile; collisionBoxArray: CollisionBoxArray; - abort: ?() => void; + abort: (() => void) | undefined | null; reloadCallback: WorkerTileCallback; vectorTile: VectorTile; @@ -73,7 +71,9 @@ class WorkerTile { const featureIndex = new FeatureIndex(this.tileID, this.promoteId); featureIndex.bucketLayerIDs = []; - const buckets: {[_: string]: Bucket} = {}; + const buckets: { + [_: string]: Bucket + } = {}; const options = { featureIndex, @@ -129,10 +129,18 @@ class WorkerTile { } } - let error: ?Error; - let glyphMap: ?{[_: string]: {[_: number]: ?StyleGlyph}}; - let iconMap: ?{[_: string]: StyleImage}; - let patternMap: ?{[_: string]: StyleImage}; + let error: Error | undefined | null; + let glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + } | undefined | null; + let iconMap: { + [_: string]: StyleImage + } | undefined | null; + let patternMap: { + [_: string]: StyleImage + } | undefined | null; const stacks = mapObject(options.glyphDependencies, (glyphs) => Object.keys(glyphs).map(Number)); if (Object.keys(stacks).length) { @@ -213,7 +221,7 @@ class WorkerTile { } } -function recalculateLayers(layers: $ReadOnlyArray, zoom: number, availableImages: Array) { +function recalculateLayers(layers: ReadonlyArray, zoom: number, availableImages: Array) { // Layers are shared and may have been used by a WorkerTile with a different zoom. const parameters = new EvaluationParameters(zoom); for (const layer of layers) { diff --git a/src/style-spec/composite.js b/src/style-spec/composite.ts similarity index 100% rename from src/style-spec/composite.js rename to src/style-spec/composite.ts diff --git a/src/style-spec/declass.js b/src/style-spec/declass.ts similarity index 100% rename from src/style-spec/declass.js rename to src/style-spec/declass.ts diff --git a/src/style-spec/deref.js b/src/style-spec/deref.ts similarity index 100% rename from src/style-spec/deref.js rename to src/style-spec/deref.ts diff --git a/src/style-spec/diff.js b/src/style-spec/diff.ts similarity index 100% rename from src/style-spec/diff.js rename to src/style-spec/diff.ts diff --git a/src/style-spec/empty.js b/src/style-spec/empty.ts similarity index 100% rename from src/style-spec/empty.js rename to src/style-spec/empty.ts diff --git a/src/style-spec/error/parsing_error.js b/src/style-spec/error/parsing_error.ts similarity index 97% rename from src/style-spec/error/parsing_error.js rename to src/style-spec/error/parsing_error.ts index 8ddb923e2b..1e08c64b57 100644 --- a/src/style-spec/error/parsing_error.js +++ b/src/style-spec/error/parsing_error.ts @@ -1,5 +1,3 @@ -// @flow - // Note: Do not inherit from Error. It breaks when transpiling to ES5. export default class ParsingError { diff --git a/src/style-spec/error/validation_error.js b/src/style-spec/error/validation_error.ts similarity index 61% rename from src/style-spec/error/validation_error.js rename to src/style-spec/error/validation_error.ts index 9b90c2f980..20da6e58e0 100644 --- a/src/style-spec/error/validation_error.js +++ b/src/style-spec/error/validation_error.ts @@ -1,13 +1,13 @@ -// @flow - // Note: Do not inherit from Error. It breaks when transpiling to ES5. export default class ValidationError { message: string; - identifier: ?string; - line: ?number; + identifier: string | undefined | null; + line: number | undefined | null; - constructor(key: ?string, value: ?{ __line__: number }, message: string, identifier: ?string) { + constructor(key: string | undefined | null, value: { + __line__: number + } | undefined | null, message: string, identifier?: string | null) { this.message = (key ? `${key}: ` : '') + message; if (identifier) this.identifier = identifier; diff --git a/src/style-spec/expression/compound_expression.js b/src/style-spec/expression/compound_expression.ts similarity index 89% rename from src/style-spec/expression/compound_expression.js rename to src/style-spec/expression/compound_expression.ts index e948b0b768..6f23ad218a 100644 --- a/src/style-spec/expression/compound_expression.js +++ b/src/style-spec/expression/compound_expression.ts @@ -1,6 +1,4 @@ -// @flow - -import {toString} from './types'; +import { toString } from './types'; import ParsingContext from './parsing_context'; import EvaluationContext from './evaluation_context'; @@ -10,11 +8,16 @@ import type {Expression, ExpressionRegistry} from './expression'; import type {Type} from './types'; import type {Value} from './values'; -export type Varargs = {| type: Type |}; +export type Varargs = { + type: Type +}; type Signature = Array | Varargs; -type Evaluate = (EvaluationContext, Array) => Value; -type Definition = [Type, Signature, Evaluate] | - {|type: Type, overloads: Array<[Signature, Evaluate]>|}; +type Evaluate = (b: EvaluationContext, a: Array) => Value; + +type Definition = [Type, Signature, Evaluate] | { + type: Type, + overloads: Array<[Signature, Evaluate]> +}; class CompoundExpression implements Expression { name: string; @@ -22,7 +25,9 @@ class CompoundExpression implements Expression { _evaluate: Evaluate; args: Array; - static definitions: {[_: string]: Definition }; + static definitions: { + [_: string]: Definition + }; constructor(name: string, type: Type, evaluate: Evaluate, args: Array) { this.name = name; @@ -43,12 +48,12 @@ class CompoundExpression implements Expression { return false; } - serialize(): Array { + serialize(): Array { return [this.name].concat(this.args.map(arg => arg.serialize())); } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { - const op: string = (args[0]: any); + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { + const op: string = (args[0] as any); const definition = CompoundExpression.definitions[op]; if (!definition) { return context.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0); @@ -67,7 +72,7 @@ class CompoundExpression implements Expression { signature.length === args.length - 1 // correct param count )); - let signatureContext: ParsingContext = (null: any); + let signatureContext: ParsingContext = (null as any); for (const [params, evaluate] of overloads) { // Use a fresh context for each attempted signature so that, if @@ -141,7 +146,9 @@ class CompoundExpression implements Expression { static register( registry: ExpressionRegistry, - definitions: {[_: string]: Definition } + definitions: { + [_: string]: Definition + } ) { assert(!CompoundExpression.definitions); CompoundExpression.definitions = definitions; diff --git a/src/style-spec/expression/definitions/assertion.js b/src/style-spec/expression/definitions/assertion.ts similarity index 95% rename from src/style-spec/expression/definitions/assertion.js rename to src/style-spec/expression/definitions/assertion.ts index cfadac6d5d..84c8d55c57 100644 --- a/src/style-spec/expression/definitions/assertion.js +++ b/src/style-spec/expression/definitions/assertion.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import { @@ -36,14 +34,14 @@ class Assertion implements Expression { this.args = args; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) return context.error(`Expected at least one argument.`); let i = 1; let type; - const name: string = (args[0]: any); + const name: string = (args[0] as any); if (name === 'array') { let itemType; if (args.length > 2) { @@ -108,7 +106,7 @@ class Assertion implements Expression { return this.args.every(arg => arg.outputDefined()); } - serialize(): Array { + serialize(): Array { const type = this.type; const serialized = [type.kind]; if (type.kind === 'array') { diff --git a/src/style-spec/expression/definitions/at.js b/src/style-spec/expression/definitions/at.ts similarity index 83% rename from src/style-spec/expression/definitions/at.js rename to src/style-spec/expression/definitions/at.ts index e777f43355..588e41209d 100644 --- a/src/style-spec/expression/definitions/at.js +++ b/src/style-spec/expression/definitions/at.ts @@ -1,6 +1,4 @@ -// @flow - -import {array, ValueType, NumberType} from '../types'; +import { array, ValueType, NumberType } from '../types'; import RuntimeError from '../runtime_error'; @@ -21,7 +19,7 @@ class At implements Expression { this.input = input; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 3) return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); @@ -30,13 +28,13 @@ class At implements Expression { if (!index || !input) return null; - const t: ArrayType = (input.type: any); + const t: ArrayType = (input.type as any); return new At(t.itemType, index, input); } evaluate(ctx: EvaluationContext) { - const index = ((this.index.evaluate(ctx): any): number); - const array = ((this.input.evaluate(ctx): any): Array); + const index = (this.index.evaluate(ctx) as any as number); + const array = (this.input.evaluate(ctx) as any as Array); if (index < 0) { throw new RuntimeError(`Array index out of bounds: ${index} < 0.`); diff --git a/src/style-spec/expression/definitions/case.js b/src/style-spec/expression/definitions/case.ts similarity index 92% rename from src/style-spec/expression/definitions/case.js rename to src/style-spec/expression/definitions/case.ts index c750aed5ed..4561b3b328 100644 --- a/src/style-spec/expression/definitions/case.js +++ b/src/style-spec/expression/definitions/case.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {BooleanType} from '../types'; @@ -23,13 +21,13 @@ class Case implements Expression { this.otherwise = otherwise; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length < 4) return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`); if (args.length % 2 !== 0) return context.error(`Expected an odd number of arguments.`); - let outputType: ?Type; + let outputType: Type | undefined | null; if (context.expectedType && context.expectedType.kind !== 'value') { outputType = context.expectedType; } @@ -51,7 +49,7 @@ class Case implements Expression { if (!otherwise) return null; assert(outputType); - return new Case((outputType: any), branches, otherwise); + return new Case((outputType as any), branches, otherwise); } evaluate(ctx: EvaluationContext) { diff --git a/src/style-spec/expression/definitions/coalesce.js b/src/style-spec/expression/definitions/coalesce.ts similarity index 94% rename from src/style-spec/expression/definitions/coalesce.js rename to src/style-spec/expression/definitions/coalesce.ts index 9cfce9e987..7c935981ad 100644 --- a/src/style-spec/expression/definitions/coalesce.js +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {checkSubtype, ValueType} from '../types'; @@ -19,11 +17,11 @@ class Coalesce implements Expression { this.args = args; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length < 2) { return context.error("Expectected at least one argument."); } - let outputType: Type = (null: any); + let outputType: Type = (null as any); const expectedType = context.expectedType; if (expectedType && expectedType.kind !== 'value') { outputType = expectedType; @@ -48,7 +46,7 @@ class Coalesce implements Expression { return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : - new Coalesce((outputType: any), parsedArgs); + new Coalesce((outputType as any), parsedArgs); } evaluate(ctx: EvaluationContext) { diff --git a/src/style-spec/expression/definitions/coercion.js b/src/style-spec/expression/definitions/coercion.ts similarity index 94% rename from src/style-spec/expression/definitions/coercion.js rename to src/style-spec/expression/definitions/coercion.ts index 3eb46f7766..b34361793b 100644 --- a/src/style-spec/expression/definitions/coercion.js +++ b/src/style-spec/expression/definitions/coercion.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types'; @@ -38,11 +36,11 @@ class Coercion implements Expression { this.args = args; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) return context.error(`Expected at least one argument.`); - const name: string = (args[0]: any); + const name: string = (args[0] as any); assert(types[name], name); if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2) @@ -81,7 +79,7 @@ class Coercion implements Expression { error = validateRGBA(input[0], input[1], input[2], input[3]); } if (!error) { - return new Color((input[0]: any) / 255, (input[1]: any) / 255, (input[2]: any) / 255, (input[3]: any)); + return new Color((input[0] as any) / 255, (input[1] as any) / 255, (input[2] as any) / 255, (input[3] as any)); } } } diff --git a/src/style-spec/expression/definitions/collator.js b/src/style-spec/expression/definitions/collator.ts similarity index 92% rename from src/style-spec/expression/definitions/collator.js rename to src/style-spec/expression/definitions/collator.ts index 379d5d6047..70e8ec6347 100644 --- a/src/style-spec/expression/definitions/collator.js +++ b/src/style-spec/expression/definitions/collator.ts @@ -1,6 +1,4 @@ -// @flow - -import {StringType, BooleanType, CollatorType} from '../types'; +import { StringType, BooleanType, CollatorType } from '../types'; import Collator from '../types/collator'; import type {Expression} from '../expression'; @@ -21,11 +19,11 @@ export default class CollatorExpression implements Expression { this.diacriticSensitive = diacriticSensitive; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) return context.error(`Expected one argument.`); - const options = (args[1]: any); + const options = (args[1] as any); if (typeof options !== "object" || Array.isArray(options)) return context.error(`Collator options argument must be an object.`); diff --git a/src/style-spec/expression/definitions/comparison.js b/src/style-spec/expression/definitions/comparison.ts similarity index 93% rename from src/style-spec/expression/definitions/comparison.js rename to src/style-spec/expression/definitions/comparison.ts index 210df55ac7..3c7c096b8b 100644 --- a/src/style-spec/expression/definitions/comparison.js +++ b/src/style-spec/expression/definitions/comparison.ts @@ -1,6 +1,4 @@ -// @flow - -import {toString, ValueType, BooleanType, CollatorType} from '../types'; +import { toString, ValueType, BooleanType, CollatorType } from '../types'; import Assertion from './assertion'; import {typeOf} from '../values'; import RuntimeError from '../runtime_error'; @@ -10,7 +8,7 @@ import type EvaluationContext from '../evaluation_context'; import type ParsingContext from '../parsing_context'; import type {Type} from '../types'; -type ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=' ; +type ComparisonOperator = "==" | "!=" | "<" | ">" | "<=" | ">="; function isComparableType(op: ComparisonOperator, type: Type) { if (op === '==' || op === '!=') { @@ -66,10 +64,10 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato type: Type; lhs: Expression; rhs: Expression; - collator: ?Expression; + collator: Expression | undefined | null; hasUntypedArgument: boolean; - constructor(lhs: Expression, rhs: Expression, collator: ?Expression) { + constructor(lhs: Expression, rhs: Expression, collator?: Expression | null) { this.type = BooleanType; this.lhs = lhs; this.rhs = rhs; @@ -77,11 +75,11 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value'; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3 && args.length !== 4) return context.error(`Expected two or three arguments.`); - const op: ComparisonOperator = (args[0]: any); + const op: ComparisonOperator = (args[0] as any); let lhs = context.parse(args[1], 1, ValueType); if (!lhs) return null; diff --git a/src/style-spec/expression/definitions/format.js b/src/style-spec/expression/definitions/format.ts similarity index 90% rename from src/style-spec/expression/definitions/format.js rename to src/style-spec/expression/definitions/format.ts index a376cacff0..8e6f6dc7e0 100644 --- a/src/style-spec/expression/definitions/format.js +++ b/src/style-spec/expression/definitions/format.ts @@ -1,6 +1,12 @@ -// @flow - -import {NumberType, ValueType, FormattedType, array, StringType, ColorType, ResolvedImageType} from '../types'; +import { + NumberType, + ValueType, + FormattedType, + array, + StringType, + ColorType, + ResolvedImageType, +} from '../types'; import Formatted, {FormattedSection} from '../types/formatted'; import {toString, typeOf} from '../values'; @@ -10,13 +16,13 @@ import type ParsingContext from '../parsing_context'; import type {Type} from '../types'; type FormattedSectionExpression = { - // Content of a section may be Image expression or other - // type of expression that is coercable to 'string'. - content: Expression, - scale: Expression | null; - font: Expression | null; - textColor: Expression | null; -} + // Content of a section may be Image expression or other + // type of expression that is coercable to 'string'. + content: Expression, + scale: Expression | null, + font: Expression | null, + textColor: Expression | null +}; export default class FormatExpression implements Expression { type: Type; @@ -27,7 +33,7 @@ export default class FormatExpression implements Expression { this.sections = sections; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { return context.error(`Expected at least one argument.`); } @@ -40,7 +46,7 @@ export default class FormatExpression implements Expression { const sections: Array = []; let nextTokenMayBeObject = false; for (let i = 1; i <= args.length - 1; ++i) { - const arg = (args[i]: any); + const arg = (args[i] as any); if (nextTokenMayBeObject && typeof arg === "object" && !Array.isArray(arg)) { nextTokenMayBeObject = false; diff --git a/src/style-spec/expression/definitions/image.js b/src/style-spec/expression/definitions/image.ts similarity index 89% rename from src/style-spec/expression/definitions/image.js rename to src/style-spec/expression/definitions/image.ts index 8b73e1c79d..80253a71cc 100644 --- a/src/style-spec/expression/definitions/image.js +++ b/src/style-spec/expression/definitions/image.ts @@ -1,6 +1,4 @@ -// @flow - -import {ResolvedImageType, StringType} from '../types'; +import { ResolvedImageType, StringType } from '../types'; import ResolvedImage from '../types/resolved_image'; import type {Expression} from '../expression'; @@ -17,7 +15,7 @@ export default class ImageExpression implements Expression { this.input = input; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) { return context.error(`Expected two arguments.`); } diff --git a/src/style-spec/expression/definitions/in.js b/src/style-spec/expression/definitions/in.ts similarity index 85% rename from src/style-spec/expression/definitions/in.js rename to src/style-spec/expression/definitions/in.ts index 0e6681a508..90efdafc5c 100644 --- a/src/style-spec/expression/definitions/in.js +++ b/src/style-spec/expression/definitions/in.ts @@ -1,6 +1,13 @@ -// @flow - -import {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types'; +import { + BooleanType, + StringType, + ValueType, + NullType, + toString, + NumberType, + isValidType, + isValidNativeType, +} from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; @@ -20,7 +27,7 @@ class In implements Expression { this.haystack = haystack; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 3) { return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); } @@ -39,8 +46,8 @@ class In implements Expression { } evaluate(ctx: EvaluationContext) { - const needle = (this.needle.evaluate(ctx): any); - const haystack = (this.haystack.evaluate(ctx): any); + const needle = (this.needle.evaluate(ctx) as any); + const haystack = (this.haystack.evaluate(ctx) as any); if (!haystack) return false; diff --git a/src/style-spec/expression/definitions/index.js b/src/style-spec/expression/definitions/index.ts similarity index 90% rename from src/style-spec/expression/definitions/index.js rename to src/style-spec/expression/definitions/index.ts index fcc1535c8b..deaee865e8 100644 --- a/src/style-spec/expression/definitions/index.js +++ b/src/style-spec/expression/definitions/index.ts @@ -1,19 +1,18 @@ -// @flow - import { - type Type, - NumberType, - StringType, - BooleanType, - ColorType, - ObjectType, - ValueType, - ErrorType, - CollatorType, - array, - toString as typeToString + NumberType, + StringType, + BooleanType, + ColorType, + ObjectType, + ValueType, + ErrorType, + CollatorType, + array, + toString as typeToString, } from '../types'; +import type { Type } from '../types'; + import {typeOf, Color, validateRGBA, toString as valueToString} from '../values'; import CompoundExpression from '../compound_expression'; import RuntimeError from '../runtime_error'; @@ -369,24 +368,24 @@ CompoundExpression.register(expressions, { 'filter-==': [ BooleanType, [StringType, ValueType], - (ctx, [k, v]) => ctx.properties()[(k: any).value] === (v: any).value + (ctx, [k, v]) => ctx.properties()[(k as any).value] === (v as any).value ], 'filter-id-==': [ BooleanType, [ValueType], - (ctx, [v]) => ctx.id() === (v: any).value + (ctx, [v]) => ctx.id() === (v as any).value ], 'filter-type-==': [ BooleanType, [StringType], - (ctx, [v]) => ctx.geometryType() === (v: any).value + (ctx, [v]) => ctx.geometryType() === (v as any).value ], 'filter-<': [ BooleanType, [StringType, ValueType], (ctx, [k, v]) => { - const a = ctx.properties()[(k: any).value]; - const b = (v: any).value; + const a = ctx.properties()[(k as any).value]; + const b = (v as any).value; return typeof a === typeof b && a < b; } ], @@ -395,7 +394,7 @@ CompoundExpression.register(expressions, { [ValueType], (ctx, [v]) => { const a = ctx.id(); - const b = (v: any).value; + const b = (v as any).value; return typeof a === typeof b && a < b; } ], @@ -403,8 +402,8 @@ CompoundExpression.register(expressions, { BooleanType, [StringType, ValueType], (ctx, [k, v]) => { - const a = ctx.properties()[(k: any).value]; - const b = (v: any).value; + const a = ctx.properties()[(k as any).value]; + const b = (v as any).value; return typeof a === typeof b && a > b; } ], @@ -413,7 +412,7 @@ CompoundExpression.register(expressions, { [ValueType], (ctx, [v]) => { const a = ctx.id(); - const b = (v: any).value; + const b = (v as any).value; return typeof a === typeof b && a > b; } ], @@ -421,8 +420,8 @@ CompoundExpression.register(expressions, { BooleanType, [StringType, ValueType], (ctx, [k, v]) => { - const a = ctx.properties()[(k: any).value]; - const b = (v: any).value; + const a = ctx.properties()[(k as any).value]; + const b = (v as any).value; return typeof a === typeof b && a <= b; } ], @@ -431,7 +430,7 @@ CompoundExpression.register(expressions, { [ValueType], (ctx, [v]) => { const a = ctx.id(); - const b = (v: any).value; + const b = (v as any).value; return typeof a === typeof b && a <= b; } ], @@ -439,8 +438,8 @@ CompoundExpression.register(expressions, { BooleanType, [StringType, ValueType], (ctx, [k, v]) => { - const a = ctx.properties()[(k: any).value]; - const b = (v: any).value; + const a = ctx.properties()[(k as any).value]; + const b = (v as any).value; return typeof a === typeof b && a >= b; } ], @@ -449,14 +448,14 @@ CompoundExpression.register(expressions, { [ValueType], (ctx, [v]) => { const a = ctx.id(); - const b = (v: any).value; + const b = (v as any).value; return typeof a === typeof b && a >= b; } ], 'filter-has': [ BooleanType, [ValueType], - (ctx, [k]) => (k: any).value in ctx.properties() + (ctx, [k]) => (k as any).value in ctx.properties() ], 'filter-has-id': [ BooleanType, @@ -466,24 +465,24 @@ CompoundExpression.register(expressions, { 'filter-type-in': [ BooleanType, [array(StringType)], - (ctx, [v]) => (v: any).value.indexOf(ctx.geometryType()) >= 0 + (ctx, [v]) => (v as any).value.indexOf(ctx.geometryType()) >= 0 ], 'filter-id-in': [ BooleanType, [array(ValueType)], - (ctx, [v]) => (v: any).value.indexOf(ctx.id()) >= 0 + (ctx, [v]) => (v as any).value.indexOf(ctx.id()) >= 0 ], 'filter-in-small': [ BooleanType, [StringType, array(ValueType)], // assumes v is an array literal - (ctx, [k, v]) => (v: any).value.indexOf(ctx.properties()[(k: any).value]) >= 0 + (ctx, [k, v]) => (v as any).value.indexOf(ctx.properties()[(k as any).value]) >= 0 ], 'filter-in-large': [ BooleanType, [StringType, array(ValueType)], // assumes v is a array literal with values sorted in ascending order and of a single type - (ctx, [k, v]) => binarySearch(ctx.properties()[(k: any).value], (v: any).value, 0, (v: any).value.length - 1) + (ctx, [k, v]) => binarySearch(ctx.properties()[(k as any).value], (v as any).value, 0, (v as any).value.length - 1) ], 'all': { type: BooleanType, diff --git a/src/style-spec/expression/definitions/index_of.js b/src/style-spec/expression/definitions/index_of.ts similarity index 85% rename from src/style-spec/expression/definitions/index_of.js rename to src/style-spec/expression/definitions/index_of.ts index 48e629335c..0b5ed21464 100644 --- a/src/style-spec/expression/definitions/index_of.js +++ b/src/style-spec/expression/definitions/index_of.ts @@ -1,6 +1,13 @@ -// @flow - -import {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types'; +import { + BooleanType, + StringType, + ValueType, + NullType, + toString, + NumberType, + isValidType, + isValidNativeType, +} from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; @@ -13,7 +20,7 @@ class IndexOf implements Expression { type: Type; needle: Expression; haystack: Expression; - fromIndex: ?Expression; + fromIndex: Expression | undefined | null; constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) { this.type = NumberType; @@ -22,7 +29,7 @@ class IndexOf implements Expression { this.fromIndex = fromIndex; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length <= 2 || args.length >= 5) { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); } @@ -46,8 +53,8 @@ class IndexOf implements Expression { } evaluate(ctx: EvaluationContext) { - const needle = (this.needle.evaluate(ctx): any); - const haystack = (this.haystack.evaluate(ctx): any); + const needle = (this.needle.evaluate(ctx) as any); + const haystack = (this.haystack.evaluate(ctx) as any); if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) { throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`); @@ -58,7 +65,7 @@ class IndexOf implements Expression { } if (this.fromIndex) { - const fromIndex = (this.fromIndex.evaluate(ctx): number); + const fromIndex = (this.fromIndex.evaluate(ctx) as number); return haystack.indexOf(needle, fromIndex); } diff --git a/src/style-spec/expression/definitions/interpolate.js b/src/style-spec/expression/definitions/interpolate.ts similarity index 91% rename from src/style-spec/expression/definitions/interpolate.js rename to src/style-spec/expression/definitions/interpolate.ts index 98a1b65e4f..2856d07b8a 100644 --- a/src/style-spec/expression/definitions/interpolate.js +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -1,5 +1,3 @@ -// @flow - import UnitBezier from '@mapbox/unitbezier'; import * as interpolate from '../../util/interpolate'; @@ -13,21 +11,26 @@ import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; import type {Type} from '../types'; -export type InterpolationType = - { name: 'linear' } | - { name: 'exponential', base: number } | - { name: 'cubic-bezier', controlPoints: [number, number, number, number] }; +export type InterpolationType = { + name: "linear" +} | { + name: "exponential", + base: number +} | { + name: "cubic-bezier", + controlPoints: [number, number, number, number] +}; class Interpolate implements Expression { type: Type; - operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab'; + operator: "interpolate" | "interpolate-hcl" | "interpolate-lab"; interpolation: InterpolationType; input: Expression; labels: Array; outputs: Array; - constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) { + constructor(type: Type, operator: "interpolate" | "interpolate-hcl" | "interpolate-lab", interpolation: InterpolationType, input: Expression, stops: Stops) { this.type = type; this.operator = operator; this.interpolation = interpolation; @@ -55,7 +58,7 @@ class Interpolate implements Expression { return t; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { let [operator, interpolation, input, ...rest] = args; if (!Array.isArray(interpolation) || interpolation.length === 0) { @@ -83,7 +86,7 @@ class Interpolate implements Expression { interpolation = { name: 'cubic-bezier', - controlPoints: (controlPoints: any) + controlPoints: (controlPoints as any) }; } else { return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0); @@ -102,7 +105,7 @@ class Interpolate implements Expression { const stops: Stops = []; - let outputType: Type = (null: any); + let outputType: Type = (null as any); if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') { outputType = ColorType; } else if (context.expectedType && context.expectedType.kind !== 'value') { @@ -141,7 +144,7 @@ class Interpolate implements Expression { return context.error(`Type ${toString(outputType)} is not interpolatable.`); } - return new Interpolate(outputType, (operator: any), interpolation, input, stops); + return new Interpolate(outputType, (operator as any), interpolation, input, stops); } evaluate(ctx: EvaluationContext) { @@ -152,7 +155,7 @@ class Interpolate implements Expression { return outputs[0].evaluate(ctx); } - const value = ((this.input.evaluate(ctx): any): number); + const value = (this.input.evaluate(ctx) as any as number); if (value <= labels[0]) { return outputs[0].evaluate(ctx); } @@ -171,7 +174,7 @@ class Interpolate implements Expression { const outputUpper = outputs[index + 1].evaluate(ctx); if (this.operator === 'interpolate') { - return (interpolate[this.type.kind.toLowerCase()]: any)(outputLower, outputUpper, t); // eslint-disable-line import/namespace + return ((interpolate[this.type.kind.toLowerCase()] as any))(outputLower, outputUpper, t); // eslint-disable-line import/namespace } else if (this.operator === 'interpolate-hcl') { return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t)); } else { @@ -190,7 +193,7 @@ class Interpolate implements Expression { return this.outputs.every(out => out.outputDefined()); } - serialize(): Array { + serialize(): Array { let interpolation; if (this.interpolation.name === 'linear') { interpolation = ["linear"]; diff --git a/src/style-spec/expression/definitions/length.js b/src/style-spec/expression/definitions/length.ts similarity index 92% rename from src/style-spec/expression/definitions/length.js rename to src/style-spec/expression/definitions/length.ts index abaaf0bc04..974054254f 100644 --- a/src/style-spec/expression/definitions/length.js +++ b/src/style-spec/expression/definitions/length.ts @@ -1,6 +1,4 @@ -// @flow - -import {NumberType, toString} from '../types'; +import { NumberType, toString } from '../types'; import {typeOf} from '../values'; import RuntimeError from '../runtime_error'; @@ -19,7 +17,7 @@ class Length implements Expression { this.input = input; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 2) return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/let.js b/src/style-spec/expression/definitions/let.ts similarity index 94% rename from src/style-spec/expression/definitions/let.js rename to src/style-spec/expression/definitions/let.ts index cfa449d8a7..03e559cf05 100644 --- a/src/style-spec/expression/definitions/let.js +++ b/src/style-spec/expression/definitions/let.ts @@ -1,6 +1,4 @@ -// @flow - -import type {Type} from '../types'; +import type { Type } from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; @@ -27,7 +25,7 @@ class Let implements Expression { fn(this.result); } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length < 4) return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/literal.js b/src/style-spec/expression/definitions/literal.ts similarity index 91% rename from src/style-spec/expression/definitions/literal.js rename to src/style-spec/expression/definitions/literal.ts index cdb45dd7fd..5f366dd52c 100644 --- a/src/style-spec/expression/definitions/literal.js +++ b/src/style-spec/expression/definitions/literal.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {isValue, typeOf, Color} from '../values'; import Formatted from '../types/formatted'; @@ -18,14 +16,14 @@ class Literal implements Expression { this.value = value; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 2) return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`); if (!isValue(args[1])) return context.error(`invalid value`); - const value = (args[1]: any); + const value = (args[1] as any); let type = typeOf(value); // special case: infer the item type if possible for zero-length arrays @@ -53,7 +51,7 @@ class Literal implements Expression { return true; } - serialize(): Array { + serialize(): Array { if (this.type.kind === 'array' || this.type.kind === 'object') { return ["literal", this.value]; } else if (this.value instanceof Color) { @@ -69,7 +67,7 @@ class Literal implements Expression { typeof this.value === 'string' || typeof this.value === 'number' || typeof this.value === 'boolean'); - return (this.value: any); + return this.value as any; } } } diff --git a/src/style-spec/expression/definitions/match.js b/src/style-spec/expression/definitions/match.ts similarity index 90% rename from src/style-spec/expression/definitions/match.js rename to src/style-spec/expression/definitions/match.ts index ec4d1c30fa..a9841f3fd2 100644 --- a/src/style-spec/expression/definitions/match.js +++ b/src/style-spec/expression/definitions/match.ts @@ -1,16 +1,18 @@ -// @flow - import assert from 'assert'; import {typeOf} from '../values'; -import {ValueType, type Type} from '../types'; +import { ValueType } from '../types'; + +import type { Type } from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; // Map input label values to output expression index -type Cases = {[number | string]: number}; +type Cases = { + [k in number | string]: number; +}; class Match implements Expression { type: Type; @@ -30,7 +32,7 @@ class Match implements Expression { this.otherwise = otherwise; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length < 5) return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); if (args.length % 2 !== 1) @@ -92,15 +94,15 @@ class Match implements Expression { assert(inputType && outputType); - if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType: any), input.type)) { + if (input.type.kind !== 'value' && context.concat(1).checkSubtype(((inputType as any)), input.type)) { return null; } - return new Match((inputType: any), (outputType: any), input, cases, outputs, otherwise); + return new Match((inputType as any), (outputType as any), input, cases, outputs, otherwise); } evaluate(ctx: EvaluationContext) { - const input = (this.input.evaluate(ctx): any); + const input = (this.input.evaluate(ctx) as any); const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise; return output.evaluate(ctx); } @@ -115,7 +117,7 @@ class Match implements Expression { return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined(); } - serialize(): Array { + serialize(): Array { const serialized = ["match", this.input.serialize()]; // Sort so serialization has an arbitrary defined order, even though @@ -125,7 +127,9 @@ class Match implements Expression { // Group branches by unique match expression to support condensed // serializations of the form [case1, case2, ...] -> matchExpression const groupedByOutput: Array<[number, Array]> = []; - const outputLookup: {[index: number]: number} = {}; // lookup index into groupedByOutput for a given output expression + const outputLookup: { + [index: number]: number + } = {}; // lookup index into groupedByOutput for a given output expression for (const label of sortedLabels) { const outputIndex = outputLookup[this.cases[label]]; if (outputIndex === undefined) { diff --git a/src/style-spec/expression/definitions/number_format.js b/src/style-spec/expression/definitions/number_format.ts similarity index 85% rename from src/style-spec/expression/definitions/number_format.js rename to src/style-spec/expression/definitions/number_format.ts index 754503fb19..0f4b8ca42e 100644 --- a/src/style-spec/expression/definitions/number_format.js +++ b/src/style-spec/expression/definitions/number_format.ts @@ -1,6 +1,4 @@ -// @flow - -import {StringType, NumberType} from '../types'; +import { StringType, NumberType } from '../types'; import type {Expression} from '../expression'; import type EvaluationContext from '../evaluation_context'; @@ -8,30 +6,22 @@ import type ParsingContext from '../parsing_context'; import type {Type} from '../types'; declare var Intl: { - NumberFormat: Class + NumberFormat: { + new (...args: any): Intl$NumberFormat + } }; declare class Intl$NumberFormat { - constructor ( - locales?: string | string[], - options?: NumberFormatOptions - ): Intl$NumberFormat; - - static ( - locales?: string | string[], - options?: NumberFormatOptions - ): Intl$NumberFormat; - - format(a: number): string; - - resolvedOptions(): any; + constructor(locales?: string | string[], options?: NumberFormatOptions); + format(a: number): string; + resolvedOptions(): any; } type NumberFormatOptions = { - style?: 'decimal' | 'currency' | 'percent'; - currency?: null | string; - minimumFractionDigits?: null | string; - maximumFractionDigits?: null | string; + style?: "decimal" | "currency" | "percent", + currency?: null | string, + minimumFractionDigits?: null | string, + maximumFractionDigits?: null | string }; export default class NumberFormat implements Expression { @@ -55,14 +45,14 @@ export default class NumberFormat implements Expression { this.maxFractionDigits = maxFractionDigits; } - static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) return context.error(`Expected two arguments.`); const number = context.parse(args[1], 1, NumberType); if (!number) return null; - const options = (args[2]: any); + const options = (args[2] as any); if (typeof options !== "object" || Array.isArray(options)) return context.error(`NumberFormat options argument must be an object.`); diff --git a/src/style-spec/expression/definitions/slice.js b/src/style-spec/expression/definitions/slice.ts similarity index 84% rename from src/style-spec/expression/definitions/slice.js rename to src/style-spec/expression/definitions/slice.ts index 09a47c10e9..a7d12075d4 100644 --- a/src/style-spec/expression/definitions/slice.js +++ b/src/style-spec/expression/definitions/slice.ts @@ -1,6 +1,12 @@ -// @flow - -import {ValueType, NumberType, StringType, array, toString, isValidType, isValidNativeType} from '../types'; +import { + ValueType, + NumberType, + StringType, + array, + toString, + isValidType, + isValidNativeType, +} from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; @@ -13,7 +19,7 @@ class Slice implements Expression { type: Type; input: Expression; beginIndex: Expression; - endIndex: ?Expression; + endIndex: Expression | undefined | null; constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) { this.type = type; @@ -23,7 +29,7 @@ class Slice implements Expression { } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length <= 2 || args.length >= 5) { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); } @@ -47,15 +53,15 @@ class Slice implements Expression { } evaluate(ctx: EvaluationContext) { - const input = (this.input.evaluate(ctx): any); - const beginIndex = (this.beginIndex.evaluate(ctx): number); + const input = (this.input.evaluate(ctx) as any); + const beginIndex = (this.beginIndex.evaluate(ctx) as number); if (!isValidNativeType(input, ['string', 'array'])) { throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString(typeOf(input))} instead.`); } if (this.endIndex) { - const endIndex = (this.endIndex.evaluate(ctx): number); + const endIndex = (this.endIndex.evaluate(ctx) as number); return input.slice(beginIndex, endIndex); } diff --git a/src/style-spec/expression/definitions/step.js b/src/style-spec/expression/definitions/step.ts similarity index 93% rename from src/style-spec/expression/definitions/step.js rename to src/style-spec/expression/definitions/step.ts index 3e2058290b..553071856d 100644 --- a/src/style-spec/expression/definitions/step.js +++ b/src/style-spec/expression/definitions/step.ts @@ -1,6 +1,4 @@ -// @flow - -import {NumberType} from '../types'; +import { NumberType } from '../types'; import {findStopLessThanOrEqualTo} from '../stops'; @@ -29,7 +27,7 @@ class Step implements Expression { } } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length - 1 < 4) { return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); } @@ -43,7 +41,7 @@ class Step implements Expression { const stops: Stops = []; - let outputType: Type = (null: any); + let outputType: Type = (null as any); if (context.expectedType && context.expectedType.kind !== 'value') { outputType = context.expectedType; } @@ -80,7 +78,7 @@ class Step implements Expression { return outputs[0].evaluate(ctx); } - const value = ((this.input.evaluate(ctx): any): number); + const value = (this.input.evaluate(ctx) as any as number); if (value <= labels[0]) { return outputs[0].evaluate(ctx); } diff --git a/src/style-spec/expression/definitions/var.js b/src/style-spec/expression/definitions/var.ts similarity index 90% rename from src/style-spec/expression/definitions/var.js rename to src/style-spec/expression/definitions/var.ts index aa97e6cc2e..35b4c75932 100644 --- a/src/style-spec/expression/definitions/var.js +++ b/src/style-spec/expression/definitions/var.ts @@ -1,6 +1,4 @@ -// @flow - -import type {Type} from '../types'; +import type { Type } from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; @@ -16,7 +14,7 @@ class Var implements Expression { this.boundExpression = boundExpression; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 2 || typeof args[1] !== 'string') return context.error(`'var' expression requires exactly one string literal argument.`); diff --git a/src/style-spec/expression/definitions/within.js b/src/style-spec/expression/definitions/within.ts similarity index 97% rename from src/style-spec/expression/definitions/within.js rename to src/style-spec/expression/definitions/within.ts index 67d60beec4..41e3b97098 100644 --- a/src/style-spec/expression/definitions/within.js +++ b/src/style-spec/expression/definitions/within.ts @@ -1,6 +1,4 @@ -// @flow - -import {isValue} from '../values'; +import { isValue } from '../values'; import type {Type} from '../types'; import {BooleanType} from '../types'; import type {Expression} from '../expression'; @@ -10,10 +8,11 @@ import type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson import Point from '@mapbox/point-geometry'; import type {CanonicalTileID} from '../../../source/tile_id'; -type GeoJSONPolygons =| GeoJSONPolygon | GeoJSONMultiPolygon; +type GeoJSONPolygons = GeoJSONPolygon | GeoJSONMultiPolygon; // minX, minY, maxX, maxY type BBox = [number, number, number, number]; + const EXTENT = 8192; function updateBBox(bbox: BBox, coord: Point) { @@ -283,7 +282,7 @@ function linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPol class Within implements Expression { type: Type; - geojson: GeoJSON + geojson: GeoJSON; geometries: GeoJSONPolygons; constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) { @@ -292,11 +291,11 @@ class Within implements Expression { this.geometries = geometries; } - static parse(args: $ReadOnlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext) { if (args.length !== 2) return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`); if (isValue(args[1])) { - const geojson = (args[1]: Object); + const geojson = (args[1] as any); if (geojson.type === 'FeatureCollection') { for (let i = 0; i < geojson.features.length; ++i) { const type = geojson.features[i].geometry.type; @@ -333,7 +332,7 @@ class Within implements Expression { return true; } - serialize(): Array { + serialize(): Array { return ["within", this.geojson]; } diff --git a/src/style-spec/expression/evaluation_context.js b/src/style-spec/expression/evaluation_context.ts similarity index 73% rename from src/style-spec/expression/evaluation_context.js rename to src/style-spec/expression/evaluation_context.ts index 1e7a6d587e..4ee318eeb2 100644 --- a/src/style-spec/expression/evaluation_context.js +++ b/src/style-spec/expression/evaluation_context.ts @@ -1,6 +1,4 @@ -// @flow - -import {Color} from './values'; +import { Color } from './values'; import type {FormattedSection} from './types/formatted'; import type {GlobalProperties, Feature, FeatureState} from './index'; import type {CanonicalTileID} from '../../source/tile_id'; @@ -9,16 +7,18 @@ const geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon']; class EvaluationContext { globals: GlobalProperties; - feature: ?Feature; - featureState: ?FeatureState; - formattedSection: ?FormattedSection; - availableImages: ?Array; - canonical: ?CanonicalTileID; + feature: Feature | undefined | null; + featureState: FeatureState | undefined | null; + formattedSection: FormattedSection | undefined | null; + availableImages: Array | undefined | null; + canonical: CanonicalTileID | undefined | null; - _parseColorCache: {[_: string]: ?Color}; + _parseColorCache: { + [_: string]: Color | undefined | null + }; constructor() { - this.globals = (null: any); + this.globals = (null as any); this.feature = null; this.featureState = null; this.formattedSection = null; @@ -47,7 +47,7 @@ class EvaluationContext { return this.feature && this.feature.properties || {}; } - parseColor(input: string): ?Color { + parseColor(input: string): Color | undefined | null { let cached = this._parseColorCache[input]; if (!cached) { cached = this._parseColorCache[input] = Color.parse(input); diff --git a/src/style-spec/expression/expression.js b/src/style-spec/expression/expression.js deleted file mode 100644 index 3404686ede..0000000000 --- a/src/style-spec/expression/expression.js +++ /dev/null @@ -1,27 +0,0 @@ -// @flow - -import type {Type} from './types'; -import type ParsingContext from './parsing_context'; -import type EvaluationContext from './evaluation_context'; - -type SerializedExpression = Array | string | number | boolean | null; - -export interface Expression { - +type: Type; - - evaluate(ctx: EvaluationContext): any; - - eachChild(fn: Expression => void): void; - - /** - * Statically analyze the expression, attempting to enumerate possible outputs. Returns - * false if the complete set of outputs is statically undecidable, otherwise true. - */ - outputDefined(): boolean; - - serialize(): SerializedExpression; -} - -export type ExpressionParser = (args: $ReadOnlyArray, context: ParsingContext) => ?Expression; -export type ExpressionRegistration = Class & { +parse: ExpressionParser }; -export type ExpressionRegistry = {[_: string]: ExpressionRegistration}; diff --git a/src/style-spec/expression/expression.ts b/src/style-spec/expression/expression.ts new file mode 100644 index 0000000000..8cdf5a0062 --- /dev/null +++ b/src/style-spec/expression/expression.ts @@ -0,0 +1,27 @@ +import type { Type } from './types'; +import type ParsingContext from './parsing_context'; +import type EvaluationContext from './evaluation_context'; + +type SerializedExpression = Array | string | number | boolean | null; + +export interface Expression { + readonly type: Type; + evaluate(ctx: EvaluationContext): any; + eachChild(fn: (a: Expression) => void): void; + /** + * Statically analyze the expression, attempting to enumerate possible outputs. Returns + * false if the complete set of outputs is statically undecidable, otherwise true. + */ + outputDefined(): boolean; + serialize(): SerializedExpression; +} + +export type ExpressionParser = (args: ReadonlyArray, context: ParsingContext) => Expression | undefined | null; +export type ExpressionRegistration = { + new (...args: any): Expression +} & { + readonly parse: ExpressionParser +}; +export type ExpressionRegistry = { + [_: string]: ExpressionRegistration +}; diff --git a/src/style-spec/expression/index.js b/src/style-spec/expression/index.ts similarity index 69% rename from src/style-spec/expression/index.js rename to src/style-spec/expression/index.ts index 736ad8fdc2..d3a610bc13 100644 --- a/src/style-spec/expression/index.js +++ b/src/style-spec/expression/index.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import extend from '../util/extend'; @@ -29,21 +27,31 @@ import type Point from '@mapbox/point-geometry'; import type {CanonicalTileID} from '../../source/tile_id'; export type Feature = { - +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon', - +id?: any, - +properties: {[_: string]: any}, - +patterns?: {[_: string]: {"min": string, "mid": string, "max": string}}, - +geometry?: Array> + readonly type: 1 | 2 | 3 | "Unknown" | "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon", + readonly id?: any, + readonly properties: { + [_: string]: any + }, + readonly patterns?: { + [_: string]: { + "min": string, + "mid": string, + "max": string + } + }, + readonly geometry?: Array> }; -export type FeatureState = {[_: string]: any}; +export type FeatureState = { + [_: string]: any +}; -export type GlobalProperties = $ReadOnly<{ - zoom: number, - heatmapDensity?: number, - lineProgress?: number, - isSupportedScript?: (_: string) => boolean, - accumulated?: Value +export type GlobalProperties = Readonly<{ + zoom: number, + heatmapDensity?: number, + lineProgress?: number, + isSupportedScript?: (_: string) => boolean, + accumulated?: Value }>; export class StyleExpression { @@ -51,10 +59,14 @@ export class StyleExpression { _evaluator: EvaluationContext; _defaultValue: Value; - _warningHistory: {[key: string]: boolean}; - _enumValues: ?{[_: string]: any}; + _warningHistory: { + [key: string]: boolean + }; + _enumValues: { + [_: string]: any + } | undefined | null; - constructor(expression: Expression, propertySpec: ?StylePropertySpecification) { + constructor(expression: Expression, propertySpec?: StylePropertySpecification | null) { this.expression = expression; this._warningHistory = {}; this._evaluator = new EvaluationContext(); @@ -62,7 +74,14 @@ export class StyleExpression { this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null; } - evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluateWithoutErrorHandling( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { this._evaluator.globals = globals; this._evaluator.feature = feature; this._evaluator.featureState = featureState; @@ -73,7 +92,14 @@ export class StyleExpression { return this.expression.evaluate(this._evaluator); } - evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluate( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { this._evaluator.globals = globals; this._evaluator.feature = feature || null; this._evaluator.featureState = featureState || null; @@ -103,7 +129,7 @@ export class StyleExpression { } } -export function isExpression(expression: mixed) { +export function isExpression(expression: unknown) { return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in definitions; } @@ -117,7 +143,7 @@ export function isExpression(expression: mixed) { * * @private */ -export function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result> { +export function createExpression(expression: unknown, propertySpec?: StylePropertySpecification | null): Result> { const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined); // For string-valued properties, coerce to string at the top level rather than asserting. @@ -132,7 +158,7 @@ export function createExpression(expression: mixed, propertySpec: ?StyleProperty return success(new StyleExpression(parsed, propertySpec)); } -export class ZoomConstantExpression { +export class ZoomConstantExpression { kind: Kind; isStateDependent: boolean; _styleExpression: StyleExpression; @@ -140,39 +166,67 @@ export class ZoomConstantExpression { constructor(kind: Kind, expression: StyleExpression) { this.kind = kind; this._styleExpression = expression; - this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression); + this.isStateDependent = kind !== ('constant' as EvaluationKind) && !isConstant.isStateConstant(expression.expression); } - evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluateWithoutErrorHandling( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection); } - evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluate( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection); } } -export class ZoomDependentExpression { +export class ZoomDependentExpression { kind: Kind; zoomStops: Array; isStateDependent: boolean; _styleExpression: StyleExpression; - interpolationType: ?InterpolationType; + interpolationType: InterpolationType | undefined | null; constructor(kind: Kind, expression: StyleExpression, zoomStops: Array, interpolationType?: InterpolationType) { this.kind = kind; this.zoomStops = zoomStops; this._styleExpression = expression; - this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression); + this.isStateDependent = kind !== ('camera' as EvaluationKind) && !isConstant.isStateConstant(expression.expression); this.interpolationType = interpolationType; } - evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluateWithoutErrorHandling( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection); } - evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any { + evaluate( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ): any { return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection); } @@ -186,40 +240,62 @@ export class ZoomDependentExpression { } export type ConstantExpression = { - kind: 'constant', - +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any, -} + kind: "constant", + readonly evaluate: ( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array + ) => any +}; export type SourceExpression = { - kind: 'source', - isStateDependent: boolean, - +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any, + kind: "source", + isStateDependent: boolean, + readonly evaluate: ( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ) => any }; export type CameraExpression = { - kind: 'camera', - +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any, - +interpolationFactor: (input: number, lower: number, upper: number) => number, - zoomStops: Array, - interpolationType: ?InterpolationType + kind: "camera", + readonly evaluate: ( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array + ) => any, + readonly interpolationFactor: (input: number, lower: number, upper: number) => number, + zoomStops: Array, + interpolationType: InterpolationType | undefined | null }; export type CompositeExpression = { - kind: 'composite', - isStateDependent: boolean, - +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any, - +interpolationFactor: (input: number, lower: number, upper: number) => number, - zoomStops: Array, - interpolationType: ?InterpolationType + kind: "composite", + isStateDependent: boolean, + readonly evaluate: ( + globals: GlobalProperties, + feature?: Feature, + featureState?: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array, + formattedSection?: FormattedSection + ) => any, + readonly interpolationFactor: (input: number, lower: number, upper: number) => number, + zoomStops: Array, + interpolationType: InterpolationType | undefined | null }; -export type StylePropertyExpression = - | ConstantExpression - | SourceExpression - | CameraExpression - | CompositeExpression; +export type StylePropertyExpression = ConstantExpression | SourceExpression | CameraExpression | CompositeExpression; -export function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result> { +export function createPropertyExpression(expression: unknown, propertySpec: StylePropertySpecification): Result> { expression = createExpression(expression, propertySpec); if (expression.result === 'error') { return expression; @@ -248,15 +324,15 @@ export function createPropertyExpression(expression: mixed, propertySpec: StyleP if (!zoomCurve) { return success(isFeatureConstant ? - (new ZoomConstantExpression('constant', expression.value): ConstantExpression) : - (new ZoomConstantExpression('source', expression.value): SourceExpression)); + (new ZoomConstantExpression('constant', expression.value) as ConstantExpression) : + (new ZoomConstantExpression('source', expression.value) as SourceExpression)); } const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined; return success(isFeatureConstant ? - (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) : - (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression)); + (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) as CameraExpression) : + (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType) as CompositeExpression)); } import {isFunction, createFunction} from '../function'; @@ -270,8 +346,8 @@ export class StylePropertyFunction { kind: EvaluationKind; evaluate: (globals: GlobalProperties, feature?: Feature) => any; - interpolationFactor: ?(input: number, lower: number, upper: number) => number; - zoomStops: ?Array; + interpolationFactor: ((input: number, lower: number, upper: number) => number) | undefined | null; + zoomStops: Array | undefined | null; constructor(parameters: PropertyValueSpecification, specification: StylePropertySpecification) { this._parameters = parameters; @@ -279,8 +355,11 @@ export class StylePropertyFunction { extend(this, createFunction(this._parameters, this._specification)); } - static deserialize(serialized: {_parameters: PropertyValueSpecification, _specification: StylePropertySpecification}) { - return ((new StylePropertyFunction(serialized._parameters, serialized._specification)): StylePropertyFunction); + static deserialize(serialized: { + _parameters: PropertyValueSpecification, + _specification: StylePropertySpecification + }) { + return new StylePropertyFunction(serialized._parameters, serialized._specification) as StylePropertyFunction; } static serialize(input: StylePropertyFunction) { @@ -291,9 +370,12 @@ export class StylePropertyFunction { } } -export function normalizePropertyExpression(value: PropertyValueSpecification, specification: StylePropertySpecification): StylePropertyExpression { +export function normalizePropertyExpression( + value: PropertyValueSpecification, + specification: StylePropertySpecification +): StylePropertyExpression { if (isFunction(value)) { - return (new StylePropertyFunction(value, specification): any); + return new StylePropertyFunction(value, specification) as any; } else if (isExpression(value)) { const expression = createPropertyExpression(value, specification); diff --git a/src/style-spec/expression/is_constant.js b/src/style-spec/expression/is_constant.ts similarity index 96% rename from src/style-spec/expression/is_constant.js rename to src/style-spec/expression/is_constant.ts index bb997e899a..4e09764bd0 100644 --- a/src/style-spec/expression/is_constant.js +++ b/src/style-spec/expression/is_constant.ts @@ -1,8 +1,6 @@ -// @flow - import CompoundExpression from './compound_expression'; import Within from './definitions/within'; -import type {Expression} from './expression.js'; +import type {Expression} from "./expression"; function isFeatureConstant(e: Expression) { if (e instanceof CompoundExpression) { diff --git a/src/style-spec/expression/parsing_context.js b/src/style-spec/expression/parsing_context.ts similarity index 92% rename from src/style-spec/expression/parsing_context.js rename to src/style-spec/expression/parsing_context.ts index 7cf8ce94e8..7f1b02092a 100644 --- a/src/style-spec/expression/parsing_context.js +++ b/src/style-spec/expression/parsing_context.ts @@ -1,5 +1,3 @@ -// @flow - import Scope from './scope'; import {checkSubtype} from './types'; import ParsingError from './parsing_error'; @@ -31,12 +29,12 @@ class ParsingContext { // implementations to infer argument types: Expression#parse() need not // check that the output type of the parsed expression matches // `expectedType`. - expectedType: ?Type; + expectedType: Type | undefined | null; constructor( registry: ExpressionRegistry, path: Array = [], - expectedType: ?Type, + expectedType?: Type | null, scope: Scope = new Scope(), errors: Array = [] ) { @@ -56,24 +54,31 @@ class ParsingContext { * @private */ parse( - expr: mixed, - index?: number, - expectedType?: ?Type, - bindings?: Array<[string, Expression]>, - options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'} = {} - ): ?Expression { + expr: unknown, + index?: number, + expectedType?: Type | null, + bindings?: Array<[string, Expression]>, + options: { + typeAnnotation?: "assert" | "coerce" | "omit" + } = {} + ): Expression | undefined | null { if (index) { return this.concat(index, expectedType, bindings)._parse(expr, options); } return this._parse(expr, options); } - _parse(expr: mixed, options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'}): ?Expression { + _parse( + expr: unknown, + options: { + typeAnnotation?: "assert" | "coerce" | "omit" + } + ): Expression | undefined | null { if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') { expr = ['literal', expr]; } - function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') { + function annotate(parsed, type, typeAnnotation: "assert" | "coerce" | "omit") { if (typeAnnotation === 'assert') { return new Assertion(type, [parsed]); } else if (typeAnnotation === 'coerce') { @@ -155,7 +160,7 @@ class ParsingContext { * parsing, is copied by reference rather than cloned. * @private */ - concat(index: number, expectedType?: ?Type, bindings?: Array<[string, Expression]>) { + concat(index: number, expectedType?: Type | null, bindings?: Array<[string, Expression]>) { const path = typeof index === 'number' ? this.path.concat(index) : this.path; const scope = bindings ? this.scope.concat(bindings) : this.scope; return new ParsingContext( @@ -183,7 +188,7 @@ class ParsingContext { * Returns null if `t` is a subtype of `expected`; otherwise returns an * error message and also pushes it to `this.errors`. */ - checkSubtype(expected: Type, t: Type): ?string { + checkSubtype(expected: Type, t: Type): string | undefined | null { const error = checkSubtype(expected, t); if (error) this.error(error); return error; diff --git a/src/style-spec/expression/parsing_error.js b/src/style-spec/expression/parsing_error.ts similarity index 95% rename from src/style-spec/expression/parsing_error.js rename to src/style-spec/expression/parsing_error.ts index 8f676e8131..b381fe4bc9 100644 --- a/src/style-spec/expression/parsing_error.js +++ b/src/style-spec/expression/parsing_error.ts @@ -1,5 +1,3 @@ -// @flow - class ParsingError extends Error { key: string; message: string; diff --git a/src/style-spec/expression/runtime_error.js b/src/style-spec/expression/runtime_error.ts similarity index 96% rename from src/style-spec/expression/runtime_error.js rename to src/style-spec/expression/runtime_error.ts index 6c7c114485..5dd9064449 100644 --- a/src/style-spec/expression/runtime_error.js +++ b/src/style-spec/expression/runtime_error.ts @@ -1,5 +1,3 @@ -// @flow - class RuntimeError { name: string; message: string; diff --git a/src/style-spec/expression/scope.js b/src/style-spec/expression/scope.ts similarity index 85% rename from src/style-spec/expression/scope.js rename to src/style-spec/expression/scope.ts index b47e7cda5b..23e585561d 100644 --- a/src/style-spec/expression/scope.js +++ b/src/style-spec/expression/scope.ts @@ -1,14 +1,14 @@ -// @flow - -import type {Expression} from './expression'; +import type { Expression } from './expression'; /** * Tracks `let` bindings during expression parsing. * @private */ class Scope { - parent: ?Scope; - bindings: {[_: string]: Expression}; + parent: Scope | undefined | null; + bindings: { + [_: string]: Expression + }; constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) { this.parent = parent; this.bindings = {}; diff --git a/src/style-spec/expression/stops.js b/src/style-spec/expression/stops.ts similarity index 99% rename from src/style-spec/expression/stops.js rename to src/style-spec/expression/stops.ts index 770ab4acfb..b9f00f0ffc 100644 --- a/src/style-spec/expression/stops.js +++ b/src/style-spec/expression/stops.ts @@ -1,5 +1,3 @@ -// @flow - import RuntimeError from './runtime_error'; import type {Expression} from './expression'; diff --git a/src/style-spec/expression/types.js b/src/style-spec/expression/types.ts similarity index 69% rename from src/style-spec/expression/types.js rename to src/style-spec/expression/types.ts index 320c713de9..8df6b1ee44 100644 --- a/src/style-spec/expression/types.js +++ b/src/style-spec/expression/types.ts @@ -1,40 +1,49 @@ -// @flow +export type NullTypeT = { + kind: "null" +}; +export type NumberTypeT = { + kind: "number" +}; +export type StringTypeT = { + kind: "string" +}; +export type BooleanTypeT = { + kind: "boolean" +}; +export type ColorTypeT = { + kind: "color" +}; +export type ObjectTypeT = { + kind: "object" +}; +export type ValueTypeT = { + kind: "value" +}; +export type ErrorTypeT = { + kind: "error" +}; +export type CollatorTypeT = { + kind: "collator" +}; +export type FormattedTypeT = { + kind: "formatted" +}; +export type ResolvedImageTypeT = { + kind: "resolvedImage" +}; -export type NullTypeT = { kind: 'null' }; -export type NumberTypeT = { kind: 'number' }; -export type StringTypeT = { kind: 'string' }; -export type BooleanTypeT = { kind: 'boolean' }; -export type ColorTypeT = { kind: 'color' }; -export type ObjectTypeT = { kind: 'object' }; -export type ValueTypeT = { kind: 'value' }; -export type ErrorTypeT = { kind: 'error' }; -export type CollatorTypeT = { kind: 'collator' }; -export type FormattedTypeT = { kind: 'formatted' }; -export type ResolvedImageTypeT = { kind: 'resolvedImage' }; +export type EvaluationKind = "constant" | "source" | "camera" | "composite"; -export type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite'; - -export type Type = - NullTypeT | - NumberTypeT | - StringTypeT | - BooleanTypeT | - ColorTypeT | - ObjectTypeT | - ValueTypeT | - ArrayType | // eslint-disable-line no-use-before-define - ErrorTypeT | - CollatorTypeT | - FormattedTypeT | - ResolvedImageTypeT +export type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ObjectTypeT | ValueTypeT | // eslint-disable-line no-use-before-define +ArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | ResolvedImageTypeT; export type ArrayType = { - kind: 'array', - itemType: Type, - N: ?number -} + kind: "array", + itemType: Type, + N: number | undefined | null +}; -export type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object' +export type NativeType = "number" | "string" | "boolean" | "null" | "array" | "object"; export const NullType = {kind: 'null'}; export const NumberType = {kind: 'number'}; @@ -48,7 +57,7 @@ export const CollatorType = {kind: 'collator'}; export const FormattedType = {kind: 'formatted'}; export const ResolvedImageType = {kind: 'resolvedImage'}; -export function array(itemType: Type, N: ?number): ArrayType { +export function array(itemType: Type, N?: number | null): ArrayType { return { kind: 'array', itemType, @@ -84,7 +93,7 @@ const valueMemberTypes = [ * error message. * @private */ -export function checkSubtype(expected: Type, t: Type): ?string { +export function checkSubtype(expected: Type, t: Type): string | undefined | null { if (t.kind === 'error') { // Error is a subtype of every type return null; diff --git a/src/style-spec/expression/types/collator.js b/src/style-spec/expression/types/collator.ts similarity index 64% rename from src/style-spec/expression/types/collator.js rename to src/style-spec/expression/types/collator.ts index c9bcd61589..3d223e45ff 100644 --- a/src/style-spec/expression/types/collator.js +++ b/src/style-spec/expression/types/collator.ts @@ -1,40 +1,30 @@ -// @flow - // Flow type declarations for Intl cribbed from // https://github.com/facebook/flow/issues/1270 declare var Intl: { - Collator: Class + Collator: { + new (...args: any): Intl$Collator + } }; declare class Intl$Collator { - constructor ( - locales?: string | string[], - options?: CollatorOptions - ): Intl$Collator; - - static ( - locales?: string | string[], - options?: CollatorOptions - ): Intl$Collator; - - compare (a: string, b: string): number; - - resolvedOptions(): any; + constructor(locales?: string | string[], options?: CollatorOptions); + compare(a: string, b: string): number; + resolvedOptions(): any; } type CollatorOptions = { - localeMatcher?: 'lookup' | 'best fit', - usage?: 'sort' | 'search', - sensitivity?: 'base' | 'accent' | 'case' | 'variant', - ignorePunctuation?: boolean, - numeric?: boolean, - caseFirst?: 'upper' | 'lower' | 'false' -} + localeMatcher?: "lookup" | "best fit", + usage?: "sort" | "search", + sensitivity?: "base" | "accent" | "case" | "variant", + ignorePunctuation?: boolean, + numeric?: boolean, + caseFirst?: "upper" | "lower" | "false" +}; export default class Collator { locale: string | null; - sensitivity: 'base' | 'accent' | 'case' | 'variant'; + sensitivity: "base" | "accent" | "case" | "variant"; collator: Intl$Collator; constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) { diff --git a/src/style-spec/expression/types/formatted.js b/src/style-spec/expression/types/formatted.ts similarity index 88% rename from src/style-spec/expression/types/formatted.js rename to src/style-spec/expression/types/formatted.ts index 378a0a2bd5..4a2fd59b8f 100644 --- a/src/style-spec/expression/types/formatted.js +++ b/src/style-spec/expression/types/formatted.ts @@ -1,4 +1,3 @@ -// @flow import type Color from '../../util/color'; import type ResolvedImage from '../types/resolved_image'; @@ -48,15 +47,17 @@ export default class Formatted { return this.sections.map(section => section.text).join(''); } - serialize(): Array { - const serialized: Array = ["format"]; + serialize(): Array { + const serialized: Array = ["format"]; for (const section of this.sections) { if (section.image) { serialized.push(["image", section.image.name]); continue; } serialized.push(section.text); - const options: { [key: string]: mixed } = {}; + const options: { + [key: string]: unknown + } = {}; if (section.fontStack) { options["text-font"] = ["literal", section.fontStack.split(',')]; } @@ -64,7 +65,7 @@ export default class Formatted { options["font-scale"] = section.scale; } if (section.textColor) { - options["text-color"] = (["rgba"]: Array).concat(section.textColor.toArray()); + options["text-color"] = (["rgba"] as Array).concat(section.textColor.toArray()); } serialized.push(options); } diff --git a/src/style-spec/expression/types/resolved_image.js b/src/style-spec/expression/types/resolved_image.ts similarity index 91% rename from src/style-spec/expression/types/resolved_image.js rename to src/style-spec/expression/types/resolved_image.ts index a9e92f8fed..4221170000 100644 --- a/src/style-spec/expression/types/resolved_image.js +++ b/src/style-spec/expression/types/resolved_image.ts @@ -1,8 +1,6 @@ -// @flow - export type ResolvedImageOptions = { - name: string, - available: boolean + name: string, + available: boolean }; export default class ResolvedImage { diff --git a/src/style-spec/expression/values.js b/src/style-spec/expression/values.ts similarity index 93% rename from src/style-spec/expression/values.js rename to src/style-spec/expression/values.ts index 6c5e5407dc..922b6297f2 100644 --- a/src/style-spec/expression/values.js +++ b/src/style-spec/expression/values.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import Color from '../util/color'; @@ -10,7 +8,7 @@ import {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, Va import type {Type} from './types'; -export function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | null { +export function validateRGBA(r: unknown, g: unknown, b: unknown, a?: unknown): string | null { if (!( typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && @@ -29,9 +27,11 @@ export function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | return null; } -export type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | $ReadOnlyArray | { +[string]: Value } +export type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | ReadonlyArray | { + readonly [x: string]: Value +}; -export function isValue(mixed: mixed): boolean { +export function isValue(mixed: unknown): boolean { if (mixed === null) { return true; } else if (typeof mixed === 'string') { diff --git a/src/style-spec/feature_filter/convert.js b/src/style-spec/feature_filter/convert.ts similarity index 90% rename from src/style-spec/feature_filter/convert.js rename to src/style-spec/feature_filter/convert.ts index d7d473c2c4..f0fd28cfd5 100644 --- a/src/style-spec/feature_filter/convert.js +++ b/src/style-spec/feature_filter/convert.ts @@ -1,17 +1,17 @@ -// @flow - -import {isExpressionFilter} from './index'; +import { isExpressionFilter } from './index'; import type {FilterSpecification} from '../types'; -type ExpectedTypes = {[_: string]: 'string' | 'number' | 'boolean'}; +type ExpectedTypes = { + [_: string]: "string" | "number" | "boolean" +}; /** * Convert the given legacy filter to (the JSON representation of) an * equivalent expression * @private */ -export default function convertFilter(filter: FilterSpecification): mixed { +export default function convertFilter(filter: FilterSpecification): unknown { return _convertFilter(filter, {}); } @@ -63,7 +63,7 @@ export default function convertFilter(filter: FilterSpecification): mixed { * false (legacy filter semantics) are equivalent: they cause the filter to * produce a `false` result. */ -function _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes): mixed { +function _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes): unknown { if (isExpressionFilter(filter)) { return filter; } if (!filter) return true; @@ -80,10 +80,10 @@ function _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedType op === '<=' || op === '>=' ) { - const [, property, value] = (filter: any); + const [, property, value] = (filter as any); converted = convertComparisonOp(property, value, op, expectedTypes); } else if (op === 'any') { - const children = (filter: any).slice(1).map(f => { + const children = (filter as any).slice(1).map(f => { const types = {}; const child = _convertFilter(f, types); const typechecks = runtimeTypeChecks(types); @@ -91,18 +91,18 @@ function _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedType }); return ['any'].concat(children); } else if (op === 'all') { - const children = (filter: any).slice(1).map(f => _convertFilter(f, expectedTypes)); + const children = (filter as any).slice(1).map(f => _convertFilter(f, expectedTypes)); return children.length > 1 ? ['all'].concat(children) : [].concat(...children); } else if (op === 'none') { return ['!', _convertFilter(['any'].concat(filter.slice(1)), {})]; } else if (op === 'in') { - converted = convertInOp((filter[1]: any), filter.slice(2)); + converted = convertInOp(((filter[1] as any)), filter.slice(2)); } else if (op === '!in') { - converted = convertInOp((filter[1]: any), filter.slice(2), true); + converted = convertInOp(((filter[1] as any)), filter.slice(2), true); } else if (op === 'has') { - converted = convertHasOp((filter[1]: any)); + converted = convertHasOp(((filter[1] as any))); } else if (op === '!has') { - converted = ['!', convertHasOp((filter[1]: any))]; + converted = ['!', convertHasOp(((filter[1] as any)))]; } else { converted = true; } @@ -129,7 +129,7 @@ function runtimeTypeChecks(expectedTypes: ExpectedTypes) { return ['all'].concat(conditions); } -function convertComparisonOp(property: string, value: any, op: string, expectedTypes: ?ExpectedTypes) { +function convertComparisonOp(property: string, value: any, op: string, expectedTypes?: ExpectedTypes | null) { let get; if (property === '$type') { return [op, ['geometry-type'], value]; @@ -140,7 +140,7 @@ function convertComparisonOp(property: string, value: any, op: string, expectedT } if (expectedTypes && value !== null) { - const type = ((typeof value): any); + const type = (typeof value as any); expectedTypes[property] = type; } diff --git a/src/style-spec/feature_filter/index.js b/src/style-spec/feature_filter/index.ts similarity index 93% rename from src/style-spec/feature_filter/index.js rename to src/style-spec/feature_filter/index.ts index c95904bd92..c5186f6f23 100644 --- a/src/style-spec/feature_filter/index.js +++ b/src/style-spec/feature_filter/index.ts @@ -1,11 +1,17 @@ -// @flow - -import {createExpression} from '../expression'; +import { createExpression } from '../expression'; import type {GlobalProperties, Feature} from '../expression'; import type {CanonicalTileID} from '../../source/tile_id'; -type FilterExpression = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => boolean; -export type FeatureFilter ={filter: FilterExpression, needGeometry: boolean}; +type FilterExpression = ( + globalProperties: GlobalProperties, + feature: Feature, + canonical?: CanonicalTileID +) => boolean; + +export type FeatureFilter = { + filter: FilterExpression, + needGeometry: boolean +}; export default createFilter; export {isExpressionFilter}; @@ -105,7 +111,7 @@ function geometryNeeded(filter) { return false; } -function convertFilter(filter: ?Array): mixed { +function convertFilter(filter?: Array | null): unknown { if (!filter) return true; const op = filter[0]; if (filter.length <= 1) return (op !== 'any'); @@ -170,6 +176,6 @@ function convertHasOp(property: string) { } } -function convertNegation(filter: mixed) { +function convertNegation(filter: unknown) { return ['!', filter]; } diff --git a/src/style-spec/format.js b/src/style-spec/format.ts similarity index 100% rename from src/style-spec/format.js rename to src/style-spec/format.ts diff --git a/src/style-spec/function/convert.js b/src/style-spec/function/convert.ts similarity index 98% rename from src/style-spec/function/convert.js rename to src/style-spec/function/convert.ts index 34624f4238..46c1661f99 100644 --- a/src/style-spec/function/convert.js +++ b/src/style-spec/function/convert.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import type {StylePropertySpecification} from '../style-spec'; @@ -36,7 +34,7 @@ function convertFunction(parameters: any, propertySpec: StylePropertySpecificati } } -function convertIdentityFunction(parameters, propertySpec): Array { +function convertIdentityFunction(parameters, propertySpec): Array { const get = ['get', parameters.property]; if (parameters.default === undefined) { @@ -239,7 +237,7 @@ function getFunctionType(parameters, propertySpec) { return parameters.type; } else { assert(propertySpec.expression); - return (propertySpec.expression: any).interpolated ? 'exponential' : 'interval'; + return (propertySpec.expression as any).interpolated ? 'exponential' : 'interval'; } } diff --git a/src/style-spec/function/index.js b/src/style-spec/function/index.ts similarity index 100% rename from src/style-spec/function/index.js rename to src/style-spec/function/index.ts diff --git a/src/style-spec/group_by_layout.js b/src/style-spec/group_by_layout.ts similarity index 100% rename from src/style-spec/group_by_layout.js rename to src/style-spec/group_by_layout.ts diff --git a/src/style-spec/migrate.js b/src/style-spec/migrate.ts similarity index 100% rename from src/style-spec/migrate.js rename to src/style-spec/migrate.ts diff --git a/src/style-spec/migrate/expressions.js b/src/style-spec/migrate/expressions.ts similarity index 88% rename from src/style-spec/migrate/expressions.js rename to src/style-spec/migrate/expressions.ts index 544e6d15d0..21b6c7c1c2 100644 --- a/src/style-spec/migrate/expressions.js +++ b/src/style-spec/migrate/expressions.ts @@ -1,9 +1,4 @@ -// @flow - -import { - eachLayer, - eachProperty -} from '../visit'; +import { eachLayer, eachProperty } from '../visit'; import {isExpression} from '../expression'; import convertFunction, {convertTokenString} from '../function/convert'; import convertFilter from '../feature_filter/convert'; @@ -20,7 +15,7 @@ export default function(style: StyleSpecification) { eachLayer(style, (layer) => { if (layer.filter) { - layer.filter = (convertFilter(layer.filter): any); + layer.filter = (convertFilter(layer.filter) as any); } }); diff --git a/src/style-spec/migrate/v8.js b/src/style-spec/migrate/v8.ts similarity index 100% rename from src/style-spec/migrate/v8.js rename to src/style-spec/migrate/v8.ts diff --git a/src/style-spec/migrate/v9.js b/src/style-spec/migrate/v9.ts similarity index 100% rename from src/style-spec/migrate/v9.js rename to src/style-spec/migrate/v9.ts diff --git a/src/style-spec/read_style.js b/src/style-spec/read_style.ts similarity index 100% rename from src/style-spec/read_style.js rename to src/style-spec/read_style.ts diff --git a/src/style-spec/reference/latest.js b/src/style-spec/reference/latest.ts similarity index 100% rename from src/style-spec/reference/latest.js rename to src/style-spec/reference/latest.ts diff --git a/src/style-spec/rollup.config.js b/src/style-spec/rollup.config.ts similarity index 100% rename from src/style-spec/rollup.config.js rename to src/style-spec/rollup.config.ts diff --git a/src/style-spec/style-spec.js b/src/style-spec/style-spec.ts similarity index 53% rename from src/style-spec/style-spec.js rename to src/style-spec/style-spec.ts index 1ad1fe676f..1542550ad9 100644 --- a/src/style-spec/style-spec.js +++ b/src/style-spec/style-spec.ts @@ -1,62 +1,62 @@ -// @flow - -type ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven' | 'color-ramp' | 'data-constant' | 'constant'; -type ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress'>; +type ExpressionType = "data-driven" | "cross-faded" | "cross-faded-data-driven" | "color-ramp" | "data-constant" | "constant"; +type ExpressionParameters = Array<"zoom" | "feature" | "feature-state" | "heatmap-density" | "line-progress">; type ExpressionSpecification = { - interpolated: boolean, - parameters: ExpressionParameters -} + interpolated: boolean, + parameters: ExpressionParameters +}; export type StylePropertySpecification = { - type: 'number', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - transition: boolean, - default?: number + type: "number", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + transition: boolean, + default?: number } | { - type: 'string', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - transition: boolean, - default?: string, - tokens?: boolean + type: "string", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + transition: boolean, + default?: string, + tokens?: boolean } | { - type: 'boolean', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - transition: boolean, - default?: boolean + type: "boolean", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + transition: boolean, + default?: boolean } | { - type: 'enum', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - values: {[_: string]: {}}, - transition: boolean, - default?: string + type: "enum", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + values: { + [_: string]: {} + }, + transition: boolean, + default?: string } | { - type: 'color', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - transition: boolean, - default?: string, - overridable: boolean + type: "color", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + transition: boolean, + default?: string, + overridable: boolean } | { - type: 'array', - value: 'number', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - length?: number, - transition: boolean, - default?: Array + type: "array", + value: "number", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + length?: number, + transition: boolean, + default?: Array } | { - type: 'array', - value: 'string', - 'property-type': ExpressionType, - expression?: ExpressionSpecification, - length?: number, - transition: boolean, - default?: Array + type: "array", + value: "string", + 'property-type': ExpressionType, + expression?: ExpressionSpecification, + length?: number, + transition: boolean, + default?: Array }; import v8 from './reference/v8.json'; diff --git a/src/style-spec/types.js b/src/style-spec/types.js deleted file mode 100644 index 34a380e1ba..0000000000 --- a/src/style-spec/types.js +++ /dev/null @@ -1,432 +0,0 @@ -// @flow -// Generated code; do not edit. Edit build/generate-flow-typed-style-spec.js instead. -/* eslint-disable */ - -export type ColorSpecification = string; - -export type FormattedSpecification = string; - -export type ResolvedImageSpecification = string; - -export type PromoteIdSpecification = {[_: string]: string} | string; - -export type FilterSpecification = - | ['has', string] - | ['!has', string] - | ['==', string, string | number | boolean] - | ['!=', string, string | number | boolean] - | ['>', string, string | number | boolean] - | ['>=', string, string | number | boolean] - | ['<', string, string | number | boolean] - | ['<=', string, string | number | boolean] - | Array; // Can't type in, !in, all, any, none -- https://github.com/facebook/flow/issues/2443 - -export type TransitionSpecification = { - duration?: number, - delay?: number -}; - -// Note: doesn't capture interpolatable vs. non-interpolatable types. - -export type CameraFunctionSpecification = - | {| type: 'exponential', stops: Array<[number, T]> |} - | {| type: 'interval', stops: Array<[number, T]> |}; - -export type SourceFunctionSpecification = - | {| type: 'exponential', stops: Array<[number, T]>, property: string, default?: T |} - | {| type: 'interval', stops: Array<[number, T]>, property: string, default?: T |} - | {| type: 'categorical', stops: Array<[string | number | boolean, T]>, property: string, default?: T |} - | {| type: 'identity', property: string, default?: T |}; - -export type CompositeFunctionSpecification = - | {| type: 'exponential', stops: Array<[{zoom: number, value: number}, T]>, property: string, default?: T |} - | {| type: 'interval', stops: Array<[{zoom: number, value: number}, T]>, property: string, default?: T |} - | {| type: 'categorical', stops: Array<[{zoom: number, value: string | number | boolean}, T]>, property: string, default?: T |}; - -export type ExpressionSpecification = Array; - -export type PropertyValueSpecification = - | T - | CameraFunctionSpecification - | ExpressionSpecification; - -export type DataDrivenPropertyValueSpecification = - | T - | CameraFunctionSpecification - | SourceFunctionSpecification - | CompositeFunctionSpecification - | ExpressionSpecification; - -export type StyleSpecification = {| - "version": 8, - "name"?: string, - "metadata"?: mixed, - "center"?: Array, - "zoom"?: number, - "bearing"?: number, - "pitch"?: number, - "light"?: LightSpecification, - "sources": {[_: string]: SourceSpecification}, - "sprite"?: string, - "glyphs"?: string, - "transition"?: TransitionSpecification, - "layers": Array -|} - -export type LightSpecification = {| - "anchor"?: PropertyValueSpecification<"map" | "viewport">, - "position"?: PropertyValueSpecification<[number, number, number]>, - "color"?: PropertyValueSpecification, - "intensity"?: PropertyValueSpecification -|} - -export type VectorSourceSpecification = { - "type": "vector", - "url"?: string, - "tiles"?: Array, - "bounds"?: [number, number, number, number], - "scheme"?: "xyz" | "tms", - "minzoom"?: number, - "maxzoom"?: number, - "attribution"?: string, - "promoteId"?: PromoteIdSpecification, - "volatile"?: boolean -} - -export type RasterSourceSpecification = { - "type": "raster", - "url"?: string, - "tiles"?: Array, - "bounds"?: [number, number, number, number], - "minzoom"?: number, - "maxzoom"?: number, - "tileSize"?: number, - "scheme"?: "xyz" | "tms", - "attribution"?: string, - "volatile"?: boolean -} - -export type RasterDEMSourceSpecification = { - "type": "raster-dem", - "url"?: string, - "tiles"?: Array, - "bounds"?: [number, number, number, number], - "minzoom"?: number, - "maxzoom"?: number, - "tileSize"?: number, - "attribution"?: string, - "encoding"?: "terrarium" | "mapbox", - "volatile"?: boolean -} - -export type GeoJSONSourceSpecification = {| - "type": "geojson", - "data"?: mixed, - "maxzoom"?: number, - "attribution"?: string, - "buffer"?: number, - "filter"?: mixed, - "tolerance"?: number, - "cluster"?: boolean, - "clusterRadius"?: number, - "clusterMaxZoom"?: number, - "clusterMinPoints"?: number, - "clusterProperties"?: mixed, - "lineMetrics"?: boolean, - "generateId"?: boolean, - "promoteId"?: PromoteIdSpecification -|} - -export type VideoSourceSpecification = {| - "type": "video", - "urls": Array, - "coordinates": [[number, number], [number, number], [number, number], [number, number]] -|} - -export type ImageSourceSpecification = {| - "type": "image", - "url": string, - "coordinates": [[number, number], [number, number], [number, number], [number, number]] -|} - -export type SourceSpecification = - | VectorSourceSpecification - | RasterSourceSpecification - | RasterDEMSourceSpecification - | GeoJSONSourceSpecification - | VideoSourceSpecification - | ImageSourceSpecification - -export type FillLayerSpecification = {| - "id": string, - "type": "fill", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "fill-sort-key"?: DataDrivenPropertyValueSpecification, - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "fill-antialias"?: PropertyValueSpecification, - "fill-opacity"?: DataDrivenPropertyValueSpecification, - "fill-color"?: DataDrivenPropertyValueSpecification, - "fill-outline-color"?: DataDrivenPropertyValueSpecification, - "fill-translate"?: PropertyValueSpecification<[number, number]>, - "fill-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "fill-pattern"?: DataDrivenPropertyValueSpecification - |} -|} - -export type LineLayerSpecification = {| - "id": string, - "type": "line", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "line-cap"?: PropertyValueSpecification<"butt" | "round" | "square">, - "line-join"?: DataDrivenPropertyValueSpecification<"bevel" | "round" | "miter">, - "line-miter-limit"?: PropertyValueSpecification, - "line-round-limit"?: PropertyValueSpecification, - "line-sort-key"?: DataDrivenPropertyValueSpecification, - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "line-opacity"?: DataDrivenPropertyValueSpecification, - "line-color"?: DataDrivenPropertyValueSpecification, - "line-translate"?: PropertyValueSpecification<[number, number]>, - "line-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "line-width"?: DataDrivenPropertyValueSpecification, - "line-gap-width"?: DataDrivenPropertyValueSpecification, - "line-offset"?: DataDrivenPropertyValueSpecification, - "line-blur"?: DataDrivenPropertyValueSpecification, - "line-dasharray"?: PropertyValueSpecification>, - "line-pattern"?: DataDrivenPropertyValueSpecification, - "line-gradient"?: ExpressionSpecification - |} -|} - -export type SymbolLayerSpecification = {| - "id": string, - "type": "symbol", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "symbol-placement"?: PropertyValueSpecification<"point" | "line" | "line-center">, - "symbol-spacing"?: PropertyValueSpecification, - "symbol-avoid-edges"?: PropertyValueSpecification, - "symbol-sort-key"?: DataDrivenPropertyValueSpecification, - "symbol-z-order"?: PropertyValueSpecification<"auto" | "viewport-y" | "source">, - "icon-allow-overlap"?: PropertyValueSpecification, - "icon-ignore-placement"?: PropertyValueSpecification, - "icon-optional"?: PropertyValueSpecification, - "icon-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, - "icon-size"?: DataDrivenPropertyValueSpecification, - "icon-text-fit"?: PropertyValueSpecification<"none" | "width" | "height" | "both">, - "icon-text-fit-padding"?: PropertyValueSpecification<[number, number, number, number]>, - "icon-image"?: DataDrivenPropertyValueSpecification, - "icon-rotate"?: DataDrivenPropertyValueSpecification, - "icon-padding"?: PropertyValueSpecification, - "icon-keep-upright"?: PropertyValueSpecification, - "icon-offset"?: DataDrivenPropertyValueSpecification<[number, number]>, - "icon-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, - "icon-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, - "text-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, - "text-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, - "text-field"?: DataDrivenPropertyValueSpecification, - "text-font"?: DataDrivenPropertyValueSpecification>, - "text-size"?: DataDrivenPropertyValueSpecification, - "text-max-width"?: DataDrivenPropertyValueSpecification, - "text-line-height"?: PropertyValueSpecification, - "text-letter-spacing"?: DataDrivenPropertyValueSpecification, - "text-justify"?: DataDrivenPropertyValueSpecification<"auto" | "left" | "center" | "right">, - "text-radial-offset"?: DataDrivenPropertyValueSpecification, - "text-variable-anchor"?: PropertyValueSpecification>, - "text-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, - "text-max-angle"?: PropertyValueSpecification, - "text-writing-mode"?: PropertyValueSpecification>, - "text-rotate"?: DataDrivenPropertyValueSpecification, - "text-padding"?: PropertyValueSpecification, - "text-keep-upright"?: PropertyValueSpecification, - "text-transform"?: DataDrivenPropertyValueSpecification<"none" | "uppercase" | "lowercase">, - "text-offset"?: DataDrivenPropertyValueSpecification<[number, number]>, - "text-allow-overlap"?: PropertyValueSpecification, - "text-ignore-placement"?: PropertyValueSpecification, - "text-optional"?: PropertyValueSpecification, - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "icon-opacity"?: DataDrivenPropertyValueSpecification, - "icon-color"?: DataDrivenPropertyValueSpecification, - "icon-halo-color"?: DataDrivenPropertyValueSpecification, - "icon-halo-width"?: DataDrivenPropertyValueSpecification, - "icon-halo-blur"?: DataDrivenPropertyValueSpecification, - "icon-translate"?: PropertyValueSpecification<[number, number]>, - "icon-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "text-opacity"?: DataDrivenPropertyValueSpecification, - "text-color"?: DataDrivenPropertyValueSpecification, - "text-halo-color"?: DataDrivenPropertyValueSpecification, - "text-halo-width"?: DataDrivenPropertyValueSpecification, - "text-halo-blur"?: DataDrivenPropertyValueSpecification, - "text-translate"?: PropertyValueSpecification<[number, number]>, - "text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport"> - |} -|} - -export type CircleLayerSpecification = {| - "id": string, - "type": "circle", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "circle-sort-key"?: DataDrivenPropertyValueSpecification, - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "circle-radius"?: DataDrivenPropertyValueSpecification, - "circle-color"?: DataDrivenPropertyValueSpecification, - "circle-blur"?: DataDrivenPropertyValueSpecification, - "circle-opacity"?: DataDrivenPropertyValueSpecification, - "circle-translate"?: PropertyValueSpecification<[number, number]>, - "circle-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "circle-pitch-scale"?: PropertyValueSpecification<"map" | "viewport">, - "circle-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport">, - "circle-stroke-width"?: DataDrivenPropertyValueSpecification, - "circle-stroke-color"?: DataDrivenPropertyValueSpecification, - "circle-stroke-opacity"?: DataDrivenPropertyValueSpecification - |} -|} - -export type HeatmapLayerSpecification = {| - "id": string, - "type": "heatmap", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "heatmap-radius"?: DataDrivenPropertyValueSpecification, - "heatmap-weight"?: DataDrivenPropertyValueSpecification, - "heatmap-intensity"?: PropertyValueSpecification, - "heatmap-color"?: ExpressionSpecification, - "heatmap-opacity"?: PropertyValueSpecification - |} -|} - -export type FillExtrusionLayerSpecification = {| - "id": string, - "type": "fill-extrusion", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "fill-extrusion-opacity"?: PropertyValueSpecification, - "fill-extrusion-color"?: DataDrivenPropertyValueSpecification, - "fill-extrusion-translate"?: PropertyValueSpecification<[number, number]>, - "fill-extrusion-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "fill-extrusion-pattern"?: DataDrivenPropertyValueSpecification, - "fill-extrusion-height"?: DataDrivenPropertyValueSpecification, - "fill-extrusion-base"?: DataDrivenPropertyValueSpecification, - "fill-extrusion-vertical-gradient"?: PropertyValueSpecification - |} -|} - -export type RasterLayerSpecification = {| - "id": string, - "type": "raster", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "raster-opacity"?: PropertyValueSpecification, - "raster-hue-rotate"?: PropertyValueSpecification, - "raster-brightness-min"?: PropertyValueSpecification, - "raster-brightness-max"?: PropertyValueSpecification, - "raster-saturation"?: PropertyValueSpecification, - "raster-contrast"?: PropertyValueSpecification, - "raster-resampling"?: PropertyValueSpecification<"linear" | "nearest">, - "raster-fade-duration"?: PropertyValueSpecification - |} -|} - -export type HillshadeLayerSpecification = {| - "id": string, - "type": "hillshade", - "metadata"?: mixed, - "source": string, - "source-layer"?: string, - "minzoom"?: number, - "maxzoom"?: number, - "filter"?: FilterSpecification, - "layout"?: {| - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "hillshade-illumination-direction"?: PropertyValueSpecification, - "hillshade-illumination-anchor"?: PropertyValueSpecification<"map" | "viewport">, - "hillshade-exaggeration"?: PropertyValueSpecification, - "hillshade-shadow-color"?: PropertyValueSpecification, - "hillshade-highlight-color"?: PropertyValueSpecification, - "hillshade-accent-color"?: PropertyValueSpecification - |} -|} - -export type BackgroundLayerSpecification = {| - "id": string, - "type": "background", - "metadata"?: mixed, - "minzoom"?: number, - "maxzoom"?: number, - "layout"?: {| - "visibility"?: "visible" | "none" - |}, - "paint"?: {| - "background-color"?: PropertyValueSpecification, - "background-pattern"?: PropertyValueSpecification, - "background-opacity"?: PropertyValueSpecification - |} -|} - -export type LayerSpecification = - | FillLayerSpecification - | LineLayerSpecification - | SymbolLayerSpecification - | CircleLayerSpecification - | HeatmapLayerSpecification - | FillExtrusionLayerSpecification - | RasterLayerSpecification - | HillshadeLayerSpecification - | BackgroundLayerSpecification; - diff --git a/src/style-spec/types.ts b/src/style-spec/types.ts new file mode 100644 index 0000000000..de2337aaff --- /dev/null +++ b/src/style-spec/types.ts @@ -0,0 +1,443 @@ +// Generated code; do not edit. Edit build/generate-flow-typed-style-spec.js instead. +/* eslint-disable */ + +export type ColorSpecification = string; + +export type FormattedSpecification = string; + +export type ResolvedImageSpecification = string; + +export type PromoteIdSpecification = { + [_: string]: string +} | string; + +export type FilterSpecification = ["has", string] | ["!has", string] | ["==", string, string | number | boolean] | ["!=", string, string | number | boolean] | [">", string, string | number | boolean] | [">=", string, string | number | boolean] | ["<", string, string | number | boolean] | ["<=", string, string | number | boolean] | Array; // Can't type in, !in, all, any, none -- https://github.com/facebook/flow/issues/2443 + +export type TransitionSpecification = { + duration?: number, + delay?: number +}; + +// Note: doesn't capture interpolatable vs. non-interpolatable types. + +export type CameraFunctionSpecification = { + type: "exponential", + stops: Array<[number, T]> +} | { + type: "interval", + stops: Array<[number, T]> +}; + +export type SourceFunctionSpecification = { + type: "exponential", + stops: Array<[number, T]>, + property: string, + default?: T +} | { + type: "interval", + stops: Array<[number, T]>, + property: string, + default?: T +} | { + type: "categorical", + stops: Array<[string | number | boolean, T]>, + property: string, + default?: T +} | { + type: "identity", + property: string, + default?: T +}; + +export type CompositeFunctionSpecification = { + type: "exponential", + stops: Array<[{ + zoom: number, + value: number + }, T]>, + property: string, + default?: T +} | { + type: "interval", + stops: Array<[{ + zoom: number, + value: number + }, T]>, + property: string, + default?: T +} | { + type: "categorical", + stops: Array<[{ + zoom: number, + value: string | number | boolean + }, T]>, + property: string, + default?: T +}; + +export type ExpressionSpecification = Array; + +export type PropertyValueSpecification = T | CameraFunctionSpecification | ExpressionSpecification; + +export type DataDrivenPropertyValueSpecification = T | CameraFunctionSpecification | SourceFunctionSpecification | CompositeFunctionSpecification | ExpressionSpecification; + +export type StyleSpecification = { + "version": 8, + "name"?: string, + "metadata"?: unknown, + "center"?: Array, + "zoom"?: number, + "bearing"?: number, + "pitch"?: number, + "light"?: LightSpecification, + "sources": { + [_: string]: SourceSpecification + }, + "sprite"?: string, + "glyphs"?: string, + "transition"?: TransitionSpecification, + "layers": Array +}; + +export type LightSpecification = { + "anchor"?: PropertyValueSpecification<"map" | "viewport">, + "position"?: PropertyValueSpecification<[number, number, number]>, + "color"?: PropertyValueSpecification, + "intensity"?: PropertyValueSpecification +}; + +export type VectorSourceSpecification = { + "type": "vector", + "url"?: string, + "tiles"?: Array, + "bounds"?: [number, number, number, number], + "scheme"?: "xyz" | "tms", + "minzoom"?: number, + "maxzoom"?: number, + "attribution"?: string, + "promoteId"?: PromoteIdSpecification, + "volatile"?: boolean +}; + +export type RasterSourceSpecification = { + "type": "raster", + "url"?: string, + "tiles"?: Array, + "bounds"?: [number, number, number, number], + "minzoom"?: number, + "maxzoom"?: number, + "tileSize"?: number, + "scheme"?: "xyz" | "tms", + "attribution"?: string, + "volatile"?: boolean +}; + +export type RasterDEMSourceSpecification = { + "type": "raster-dem", + "url"?: string, + "tiles"?: Array, + "bounds"?: [number, number, number, number], + "minzoom"?: number, + "maxzoom"?: number, + "tileSize"?: number, + "attribution"?: string, + "encoding"?: "terrarium" | "mapbox", + "volatile"?: boolean +}; + +export type GeoJSONSourceSpecification = { + "type": "geojson", + "data"?: unknown, + "maxzoom"?: number, + "attribution"?: string, + "buffer"?: number, + "filter"?: unknown, + "tolerance"?: number, + "cluster"?: boolean, + "clusterRadius"?: number, + "clusterMaxZoom"?: number, + "clusterMinPoints"?: number, + "clusterProperties"?: unknown, + "lineMetrics"?: boolean, + "generateId"?: boolean, + "promoteId"?: PromoteIdSpecification +}; + +export type VideoSourceSpecification = { + "type": "video", + "urls": Array, + "coordinates": [[number, number], [number, number], [number, number], [number, number]] +}; + +export type ImageSourceSpecification = { + "type": "image", + "url": string, + "coordinates": [[number, number], [number, number], [number, number], [number, number]] +}; + +export type SourceSpecification = VectorSourceSpecification | RasterSourceSpecification | RasterDEMSourceSpecification | GeoJSONSourceSpecification | VideoSourceSpecification | ImageSourceSpecification; + +export type FillLayerSpecification = { + "id": string, + "type": "fill", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "fill-sort-key"?: DataDrivenPropertyValueSpecification, + "visibility"?: "visible" | "none" + }, + "paint"?: { + "fill-antialias"?: PropertyValueSpecification, + "fill-opacity"?: DataDrivenPropertyValueSpecification, + "fill-color"?: DataDrivenPropertyValueSpecification, + "fill-outline-color"?: DataDrivenPropertyValueSpecification, + "fill-translate"?: PropertyValueSpecification<[number, number]>, + "fill-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "fill-pattern"?: DataDrivenPropertyValueSpecification + } +}; + +export type LineLayerSpecification = { + "id": string, + "type": "line", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "line-cap"?: PropertyValueSpecification<"butt" | "round" | "square">, + "line-join"?: DataDrivenPropertyValueSpecification<"bevel" | "round" | "miter">, + "line-miter-limit"?: PropertyValueSpecification, + "line-round-limit"?: PropertyValueSpecification, + "line-sort-key"?: DataDrivenPropertyValueSpecification, + "visibility"?: "visible" | "none" + }, + "paint"?: { + "line-opacity"?: DataDrivenPropertyValueSpecification, + "line-color"?: DataDrivenPropertyValueSpecification, + "line-translate"?: PropertyValueSpecification<[number, number]>, + "line-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "line-width"?: DataDrivenPropertyValueSpecification, + "line-gap-width"?: DataDrivenPropertyValueSpecification, + "line-offset"?: DataDrivenPropertyValueSpecification, + "line-blur"?: DataDrivenPropertyValueSpecification, + "line-dasharray"?: PropertyValueSpecification>, + "line-pattern"?: DataDrivenPropertyValueSpecification, + "line-gradient"?: ExpressionSpecification + } +}; + +export type SymbolLayerSpecification = { + "id": string, + "type": "symbol", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "symbol-placement"?: PropertyValueSpecification<"point" | "line" | "line-center">, + "symbol-spacing"?: PropertyValueSpecification, + "symbol-avoid-edges"?: PropertyValueSpecification, + "symbol-sort-key"?: DataDrivenPropertyValueSpecification, + "symbol-z-order"?: PropertyValueSpecification<"auto" | "viewport-y" | "source">, + "icon-allow-overlap"?: PropertyValueSpecification, + "icon-ignore-placement"?: PropertyValueSpecification, + "icon-optional"?: PropertyValueSpecification, + "icon-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, + "icon-size"?: DataDrivenPropertyValueSpecification, + "icon-text-fit"?: PropertyValueSpecification<"none" | "width" | "height" | "both">, + "icon-text-fit-padding"?: PropertyValueSpecification<[number, number, number, number]>, + "icon-image"?: DataDrivenPropertyValueSpecification, + "icon-rotate"?: DataDrivenPropertyValueSpecification, + "icon-padding"?: PropertyValueSpecification, + "icon-keep-upright"?: PropertyValueSpecification, + "icon-offset"?: DataDrivenPropertyValueSpecification<[number, number]>, + "icon-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "icon-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, + "text-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, + "text-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">, + "text-field"?: DataDrivenPropertyValueSpecification, + "text-font"?: DataDrivenPropertyValueSpecification>, + "text-size"?: DataDrivenPropertyValueSpecification, + "text-max-width"?: DataDrivenPropertyValueSpecification, + "text-line-height"?: PropertyValueSpecification, + "text-letter-spacing"?: DataDrivenPropertyValueSpecification, + "text-justify"?: DataDrivenPropertyValueSpecification<"auto" | "left" | "center" | "right">, + "text-radial-offset"?: DataDrivenPropertyValueSpecification, + "text-variable-anchor"?: PropertyValueSpecification>, + "text-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "text-max-angle"?: PropertyValueSpecification, + "text-writing-mode"?: PropertyValueSpecification>, + "text-rotate"?: DataDrivenPropertyValueSpecification, + "text-padding"?: PropertyValueSpecification, + "text-keep-upright"?: PropertyValueSpecification, + "text-transform"?: DataDrivenPropertyValueSpecification<"none" | "uppercase" | "lowercase">, + "text-offset"?: DataDrivenPropertyValueSpecification<[number, number]>, + "text-allow-overlap"?: PropertyValueSpecification, + "text-ignore-placement"?: PropertyValueSpecification, + "text-optional"?: PropertyValueSpecification, + "visibility"?: "visible" | "none" + }, + "paint"?: { + "icon-opacity"?: DataDrivenPropertyValueSpecification, + "icon-color"?: DataDrivenPropertyValueSpecification, + "icon-halo-color"?: DataDrivenPropertyValueSpecification, + "icon-halo-width"?: DataDrivenPropertyValueSpecification, + "icon-halo-blur"?: DataDrivenPropertyValueSpecification, + "icon-translate"?: PropertyValueSpecification<[number, number]>, + "icon-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "text-opacity"?: DataDrivenPropertyValueSpecification, + "text-color"?: DataDrivenPropertyValueSpecification, + "text-halo-color"?: DataDrivenPropertyValueSpecification, + "text-halo-width"?: DataDrivenPropertyValueSpecification, + "text-halo-blur"?: DataDrivenPropertyValueSpecification, + "text-translate"?: PropertyValueSpecification<[number, number]>, + "text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport"> + } +}; + +export type CircleLayerSpecification = { + "id": string, + "type": "circle", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "circle-sort-key"?: DataDrivenPropertyValueSpecification, + "visibility"?: "visible" | "none" + }, + "paint"?: { + "circle-radius"?: DataDrivenPropertyValueSpecification, + "circle-color"?: DataDrivenPropertyValueSpecification, + "circle-blur"?: DataDrivenPropertyValueSpecification, + "circle-opacity"?: DataDrivenPropertyValueSpecification, + "circle-translate"?: PropertyValueSpecification<[number, number]>, + "circle-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "circle-pitch-scale"?: PropertyValueSpecification<"map" | "viewport">, + "circle-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport">, + "circle-stroke-width"?: DataDrivenPropertyValueSpecification, + "circle-stroke-color"?: DataDrivenPropertyValueSpecification, + "circle-stroke-opacity"?: DataDrivenPropertyValueSpecification + } +}; + +export type HeatmapLayerSpecification = { + "id": string, + "type": "heatmap", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "visibility"?: "visible" | "none" + }, + "paint"?: { + "heatmap-radius"?: DataDrivenPropertyValueSpecification, + "heatmap-weight"?: DataDrivenPropertyValueSpecification, + "heatmap-intensity"?: PropertyValueSpecification, + "heatmap-color"?: ExpressionSpecification, + "heatmap-opacity"?: PropertyValueSpecification + } +}; + +export type FillExtrusionLayerSpecification = { + "id": string, + "type": "fill-extrusion", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "visibility"?: "visible" | "none" + }, + "paint"?: { + "fill-extrusion-opacity"?: PropertyValueSpecification, + "fill-extrusion-color"?: DataDrivenPropertyValueSpecification, + "fill-extrusion-translate"?: PropertyValueSpecification<[number, number]>, + "fill-extrusion-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "fill-extrusion-pattern"?: DataDrivenPropertyValueSpecification, + "fill-extrusion-height"?: DataDrivenPropertyValueSpecification, + "fill-extrusion-base"?: DataDrivenPropertyValueSpecification, + "fill-extrusion-vertical-gradient"?: PropertyValueSpecification + } +}; + +export type RasterLayerSpecification = { + "id": string, + "type": "raster", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "visibility"?: "visible" | "none" + }, + "paint"?: { + "raster-opacity"?: PropertyValueSpecification, + "raster-hue-rotate"?: PropertyValueSpecification, + "raster-brightness-min"?: PropertyValueSpecification, + "raster-brightness-max"?: PropertyValueSpecification, + "raster-saturation"?: PropertyValueSpecification, + "raster-contrast"?: PropertyValueSpecification, + "raster-resampling"?: PropertyValueSpecification<"linear" | "nearest">, + "raster-fade-duration"?: PropertyValueSpecification + } +}; + +export type HillshadeLayerSpecification = { + "id": string, + "type": "hillshade", + "metadata"?: unknown, + "source": string, + "source-layer"?: string, + "minzoom"?: number, + "maxzoom"?: number, + "filter"?: FilterSpecification, + "layout"?: { + "visibility"?: "visible" | "none" + }, + "paint"?: { + "hillshade-illumination-direction"?: PropertyValueSpecification, + "hillshade-illumination-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "hillshade-exaggeration"?: PropertyValueSpecification, + "hillshade-shadow-color"?: PropertyValueSpecification, + "hillshade-highlight-color"?: PropertyValueSpecification, + "hillshade-accent-color"?: PropertyValueSpecification + } +}; + +export type BackgroundLayerSpecification = { + "id": string, + "type": "background", + "metadata"?: unknown, + "minzoom"?: number, + "maxzoom"?: number, + "layout"?: { + "visibility"?: "visible" | "none" + }, + "paint"?: { + "background-color"?: PropertyValueSpecification, + "background-pattern"?: PropertyValueSpecification, + "background-opacity"?: PropertyValueSpecification + } +}; + +export type LayerSpecification = FillLayerSpecification | LineLayerSpecification | SymbolLayerSpecification | CircleLayerSpecification | HeatmapLayerSpecification | FillExtrusionLayerSpecification | RasterLayerSpecification | HillshadeLayerSpecification | BackgroundLayerSpecification; + diff --git a/src/style-spec/util/color.js b/src/style-spec/util/color.ts similarity index 97% rename from src/style-spec/util/color.js rename to src/style-spec/util/color.ts index a8e59b74f0..26af250ea5 100644 --- a/src/style-spec/util/color.js +++ b/src/style-spec/util/color.ts @@ -1,6 +1,4 @@ -// @flow - -import {parseCSSColor} from 'csscolorparser'; +import { parseCSSColor } from 'csscolorparser'; /** * An RGBA color value. Create instances from color strings using the static diff --git a/src/style-spec/util/color_spaces.js b/src/style-spec/util/color_spaces.ts similarity index 96% rename from src/style-spec/util/color_spaces.js rename to src/style-spec/util/color_spaces.ts index 21ee75b0c6..61ef982a78 100644 --- a/src/style-spec/util/color_spaces.js +++ b/src/style-spec/util/color_spaces.ts @@ -1,21 +1,19 @@ -// @flow - import Color from './color'; import {number as interpolateNumber} from './interpolate'; type LABColor = { - l: number, - a: number, - b: number, - alpha: number + l: number, + a: number, + b: number, + alpha: number }; type HCLColor = { - h: number, - c: number, - l: number, - alpha: number + h: number, + c: number, + l: number, + alpha: number }; // Constants diff --git a/src/style-spec/util/deep_equal.js b/src/style-spec/util/deep_equal.ts similarity index 90% rename from src/style-spec/util/deep_equal.js rename to src/style-spec/util/deep_equal.ts index 773af912f5..1ea97d1f7f 100644 --- a/src/style-spec/util/deep_equal.js +++ b/src/style-spec/util/deep_equal.ts @@ -1,11 +1,9 @@ -// @flow - /** * Deeply compares two object literals. * * @private */ -function deepEqual(a: ?mixed, b: ?mixed): boolean { +function deepEqual(a?: unknown | null, b?: unknown | null): boolean { if (Array.isArray(a)) { if (!Array.isArray(b) || a.length !== b.length) return false; for (let i = 0; i < a.length; i++) { diff --git a/src/style-spec/util/extend.js b/src/style-spec/util/extend.ts similarity index 65% rename from src/style-spec/util/extend.js rename to src/style-spec/util/extend.ts index 076b6f278a..2ae4a51102 100644 --- a/src/style-spec/util/extend.js +++ b/src/style-spec/util/extend.ts @@ -1,6 +1,4 @@ -// @flow - -export default function (output: any, ...inputs: Array) { +export default function(output: any, ...inputs: Array) { for (const input of inputs) { for (const k in input) { output[k] = input[k]; diff --git a/src/style-spec/util/get_type.js b/src/style-spec/util/get_type.ts similarity index 84% rename from src/style-spec/util/get_type.js rename to src/style-spec/util/get_type.ts index 18b03eb625..4cf28f488b 100644 --- a/src/style-spec/util/get_type.js +++ b/src/style-spec/util/get_type.ts @@ -1,6 +1,4 @@ -// @flow - -export default function getType(val: mixed): string { +export default function getType(val: unknown): string { if (val instanceof Number) { return 'number'; } else if (val instanceof String) { diff --git a/src/style-spec/util/interpolate.js b/src/style-spec/util/interpolate.ts similarity index 98% rename from src/style-spec/util/interpolate.js rename to src/style-spec/util/interpolate.ts index 9cbed3caa1..57a191874a 100644 --- a/src/style-spec/util/interpolate.js +++ b/src/style-spec/util/interpolate.ts @@ -1,5 +1,3 @@ -// @flow - import Color from './color'; export function number(a: number, b: number, t: number) { diff --git a/src/style-spec/util/properties.js b/src/style-spec/util/properties.ts similarity index 87% rename from src/style-spec/util/properties.js rename to src/style-spec/util/properties.ts index dbb3ef9144..bfdf41aa5f 100644 --- a/src/style-spec/util/properties.js +++ b/src/style-spec/util/properties.ts @@ -1,6 +1,4 @@ -// @flow - -import type {StylePropertySpecification} from '../style-spec'; +import type { StylePropertySpecification } from '../style-spec'; export function supportsPropertyExpression(spec: StylePropertySpecification): boolean { return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven'; diff --git a/src/style-spec/util/ref_properties.js b/src/style-spec/util/ref_properties.ts similarity index 100% rename from src/style-spec/util/ref_properties.js rename to src/style-spec/util/ref_properties.ts diff --git a/src/style-spec/util/result.js b/src/style-spec/util/result.ts similarity index 77% rename from src/style-spec/util/result.js rename to src/style-spec/util/result.ts index 9d0d3a6c4f..63dd48966f 100644 --- a/src/style-spec/util/result.js +++ b/src/style-spec/util/result.ts @@ -1,14 +1,16 @@ -// @flow - /** * A type used for returning and propagating errors. The first element of the union * represents success and contains a value, and the second represents an error and * contains an error value. * @private */ -export type Result = - | {| result: 'success', value: T |} - | {| result: 'error', value: E |}; +export type Result = { + result: "success", + value: T +} | { + result: "error", + value: E +}; export function success(value: T): Result { return {result: 'success', value}; diff --git a/src/style-spec/util/unbundle_jsonlint.js b/src/style-spec/util/unbundle_jsonlint.ts similarity index 77% rename from src/style-spec/util/unbundle_jsonlint.js rename to src/style-spec/util/unbundle_jsonlint.ts index 72eb2d9264..d8d2d1458c 100644 --- a/src/style-spec/util/unbundle_jsonlint.js +++ b/src/style-spec/util/unbundle_jsonlint.ts @@ -1,7 +1,5 @@ -// @flow - // Turn jsonlint-lines-primitives objects into primitive objects -export function unbundle(value: mixed) { +export function unbundle(value: unknown) { if (value instanceof Number || value instanceof String || value instanceof Boolean) { return value.valueOf(); } else { @@ -9,11 +7,13 @@ export function unbundle(value: mixed) { } } -export function deepUnbundle(value: mixed): mixed { +export function deepUnbundle(value: unknown): unknown { if (Array.isArray(value)) { return value.map(deepUnbundle); } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) { - const unbundledValue: { [key: string]: mixed } = {}; + const unbundledValue: { + [key: string]: unknown + } = {}; for (const key in value) { unbundledValue[key] = deepUnbundle(value[key]); } diff --git a/src/style-spec/validate/latest.js b/src/style-spec/validate/latest.ts similarity index 100% rename from src/style-spec/validate/latest.js rename to src/style-spec/validate/latest.ts diff --git a/src/style-spec/validate/validate.js b/src/style-spec/validate/validate.ts similarity index 100% rename from src/style-spec/validate/validate.js rename to src/style-spec/validate/validate.ts diff --git a/src/style-spec/validate/validate_array.js b/src/style-spec/validate/validate_array.ts similarity index 100% rename from src/style-spec/validate/validate_array.js rename to src/style-spec/validate/validate_array.ts diff --git a/src/style-spec/validate/validate_boolean.js b/src/style-spec/validate/validate_boolean.ts similarity index 100% rename from src/style-spec/validate/validate_boolean.js rename to src/style-spec/validate/validate_boolean.ts diff --git a/src/style-spec/validate/validate_color.js b/src/style-spec/validate/validate_color.ts similarity index 100% rename from src/style-spec/validate/validate_color.js rename to src/style-spec/validate/validate_color.ts diff --git a/src/style-spec/validate/validate_constants.js b/src/style-spec/validate/validate_constants.ts similarity index 100% rename from src/style-spec/validate/validate_constants.js rename to src/style-spec/validate/validate_constants.ts diff --git a/src/style-spec/validate/validate_enum.js b/src/style-spec/validate/validate_enum.ts similarity index 100% rename from src/style-spec/validate/validate_enum.js rename to src/style-spec/validate/validate_enum.ts diff --git a/src/style-spec/validate/validate_expression.js b/src/style-spec/validate/validate_expression.ts similarity index 94% rename from src/style-spec/validate/validate_expression.js rename to src/style-spec/validate/validate_expression.ts index 63a73f441c..f331880bfe 100644 --- a/src/style-spec/validate/validate_expression.js +++ b/src/style-spec/validate/validate_expression.ts @@ -1,5 +1,3 @@ -// @flow - import ValidationError from '../error/validation_error'; import {createExpression, createPropertyExpression} from '../expression'; @@ -14,7 +12,7 @@ export default function validateExpression(options: any): Array }); } - const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression; + const expressionObj = (expression.value as any).expression || (expression.value as any)._styleExpression.expression; if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') && !expressionObj.outputDefined()) { diff --git a/src/style-spec/validate/validate_filter.js b/src/style-spec/validate/validate_filter.ts similarity index 100% rename from src/style-spec/validate/validate_filter.js rename to src/style-spec/validate/validate_filter.ts diff --git a/src/style-spec/validate/validate_formatted.js b/src/style-spec/validate/validate_formatted.ts similarity index 96% rename from src/style-spec/validate/validate_formatted.js rename to src/style-spec/validate/validate_formatted.ts index 61ed402df3..3b622a6816 100644 --- a/src/style-spec/validate/validate_formatted.js +++ b/src/style-spec/validate/validate_formatted.ts @@ -1,4 +1,3 @@ -// @flow import validateExpression from './validate_expression'; import validateString from './validate_string'; diff --git a/src/style-spec/validate/validate_function.js b/src/style-spec/validate/validate_function.ts similarity index 100% rename from src/style-spec/validate/validate_function.js rename to src/style-spec/validate/validate_function.ts diff --git a/src/style-spec/validate/validate_glyphs_url.js b/src/style-spec/validate/validate_glyphs_url.ts similarity index 100% rename from src/style-spec/validate/validate_glyphs_url.js rename to src/style-spec/validate/validate_glyphs_url.ts diff --git a/src/style-spec/validate/validate_image.js b/src/style-spec/validate/validate_image.ts similarity index 96% rename from src/style-spec/validate/validate_image.js rename to src/style-spec/validate/validate_image.ts index b02763ffd9..6bc72596ba 100644 --- a/src/style-spec/validate/validate_image.js +++ b/src/style-spec/validate/validate_image.ts @@ -1,4 +1,3 @@ -// @flow import validateExpression from './validate_expression'; import validateString from './validate_string'; diff --git a/src/style-spec/validate/validate_layer.js b/src/style-spec/validate/validate_layer.ts similarity index 100% rename from src/style-spec/validate/validate_layer.js rename to src/style-spec/validate/validate_layer.ts diff --git a/src/style-spec/validate/validate_layout_property.js b/src/style-spec/validate/validate_layout_property.ts similarity index 100% rename from src/style-spec/validate/validate_layout_property.js rename to src/style-spec/validate/validate_layout_property.ts diff --git a/src/style-spec/validate/validate_light.js b/src/style-spec/validate/validate_light.ts similarity index 100% rename from src/style-spec/validate/validate_light.js rename to src/style-spec/validate/validate_light.ts diff --git a/src/style-spec/validate/validate_number.js b/src/style-spec/validate/validate_number.ts similarity index 100% rename from src/style-spec/validate/validate_number.js rename to src/style-spec/validate/validate_number.ts diff --git a/src/style-spec/validate/validate_object.js b/src/style-spec/validate/validate_object.ts similarity index 100% rename from src/style-spec/validate/validate_object.js rename to src/style-spec/validate/validate_object.ts diff --git a/src/style-spec/validate/validate_paint_property.js b/src/style-spec/validate/validate_paint_property.ts similarity index 100% rename from src/style-spec/validate/validate_paint_property.js rename to src/style-spec/validate/validate_paint_property.ts diff --git a/src/style-spec/validate/validate_property.js b/src/style-spec/validate/validate_property.ts similarity index 100% rename from src/style-spec/validate/validate_property.js rename to src/style-spec/validate/validate_property.ts diff --git a/src/style-spec/validate/validate_source.js b/src/style-spec/validate/validate_source.ts similarity index 100% rename from src/style-spec/validate/validate_source.js rename to src/style-spec/validate/validate_source.ts diff --git a/src/style-spec/validate/validate_string.js b/src/style-spec/validate/validate_string.ts similarity index 100% rename from src/style-spec/validate/validate_string.js rename to src/style-spec/validate/validate_string.ts diff --git a/src/style-spec/validate_style.min.js b/src/style-spec/validate_style.min.ts similarity index 100% rename from src/style-spec/validate_style.min.js rename to src/style-spec/validate_style.min.ts diff --git a/src/style-spec/validate_style.js b/src/style-spec/validate_style.ts similarity index 100% rename from src/style-spec/validate_style.js rename to src/style-spec/validate_style.ts diff --git a/src/style-spec/visit.js b/src/style-spec/visit.ts similarity index 70% rename from src/style-spec/visit.js rename to src/style-spec/visit.ts index 2911c1f036..e5bb8e2581 100644 --- a/src/style-spec/visit.js +++ b/src/style-spec/visit.ts @@ -1,5 +1,3 @@ -// @flow - import Reference from './reference/v8.json'; import type {StylePropertySpecification} from './style-spec'; import type { @@ -13,16 +11,16 @@ import type { function getPropertyReference(propertyName): StylePropertySpecification { for (let i = 0; i < Reference.layout.length; i++) { for (const key in Reference[Reference.layout[i]]) { - if (key === propertyName) return (Reference[Reference.layout[i]][key]: any); + if (key === propertyName) return Reference[Reference.layout[i]][key] as any; } } for (let i = 0; i < Reference.paint.length; i++) { for (const key in Reference[Reference.paint[i]]) { - if (key === propertyName) return (Reference[Reference.paint[i]][key]: any); + if (key === propertyName) return Reference[Reference.paint[i]][key] as any; } } - return (null: any); + return null as any; } export function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) { @@ -37,21 +35,28 @@ export function eachLayer(style: StyleSpecification, callback: (_: LayerSpecific } } -type PropertyCallback = ({ - path: [string, 'paint' | 'layout', string], // [layerid, paint/layout, property key] +type PropertyCallback = ( + a: { + path: [string, "paint" | "layout", string] // [layerid, paint/layout, property key], key: string, - value: PropertyValueSpecification | DataDrivenPropertyValueSpecification, + value: PropertyValueSpecification | DataDrivenPropertyValueSpecification, reference: StylePropertySpecification, - set: (PropertyValueSpecification | DataDrivenPropertyValueSpecification) => void -}) => void; + set: ( + a: PropertyValueSpecification | DataDrivenPropertyValueSpecification + ) => void + } +) => void; export function eachProperty( style: StyleSpecification, - options: {paint?: boolean, layout?: boolean}, + options: { + paint?: boolean, + layout?: boolean + }, callback: PropertyCallback ) { - function inner(layer, propertyType: 'paint' | 'layout') { - const properties = (layer[propertyType]: any); + function inner(layer, propertyType: "paint" | "layout") { + const properties = (layer[propertyType] as any); if (!properties) return; Object.keys(properties).forEach((key) => { callback({ diff --git a/src/style/create_style_layer.js b/src/style/create_style_layer.ts similarity index 99% rename from src/style/create_style_layer.js rename to src/style/create_style_layer.ts index aae084e6e8..11fe8d434c 100644 --- a/src/style/create_style_layer.js +++ b/src/style/create_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import circle from './style_layer/circle_style_layer'; import heatmap from './style_layer/heatmap_style_layer'; import hillshade from './style_layer/hillshade_style_layer'; diff --git a/src/style/evaluation_parameters.js b/src/style/evaluation_parameters.ts similarity index 93% rename from src/style/evaluation_parameters.js rename to src/style/evaluation_parameters.ts index a0bdc3930e..94265084f8 100644 --- a/src/style/evaluation_parameters.js +++ b/src/style/evaluation_parameters.ts @@ -1,5 +1,3 @@ -// @flow - import ZoomHistory from './zoom_history'; import {isStringInSupportedScript} from '../util/script_detection'; import {plugin as rtlTextPlugin} from '../source/rtl_text_plugin'; @@ -7,9 +5,9 @@ import {plugin as rtlTextPlugin} from '../source/rtl_text_plugin'; import type {TransitionSpecification} from '../style-spec/types'; export type CrossfadeParameters = { - fromScale: number, - toScale: number, - t: number + fromScale: number, + toScale: number, + t: number }; class EvaluationParameters { @@ -20,7 +18,7 @@ class EvaluationParameters { transition: TransitionSpecification; // "options" may also be another EvaluationParameters to copy, see CrossFadedProperty.possiblyEvaluate - constructor(zoom: number, options?: *) { + constructor(zoom: number, options?: any) { this.zoom = zoom; if (options) { diff --git a/src/style/format_section_override.js b/src/style/format_section_override.ts similarity index 95% rename from src/style/format_section_override.js rename to src/style/format_section_override.ts index fd69be19ee..83725c51cb 100644 --- a/src/style/format_section_override.js +++ b/src/style/format_section_override.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import type {Expression} from '../style-spec/expression/expression'; import type EvaluationContext from '../style-spec/expression/evaluation_context'; @@ -38,7 +36,7 @@ export default class FormatSectionOverride implements Expression { eachChild(fn: (_: Expression) => void) { if (!this.defaultValue.isConstant()) { - const expr: ZoomConstantExpression<'source'> = ((this.defaultValue.value): any); + const expr: ZoomConstantExpression<"source"> = (this.defaultValue.value as any); fn(expr._styleExpression.expression); } } diff --git a/src/style/light.js b/src/style/light.ts similarity index 88% rename from src/style/light.js rename to src/style/light.ts index 99c24d0d23..d3e4cbea53 100644 --- a/src/style/light.js +++ b/src/style/light.ts @@ -1,5 +1,3 @@ -// @flow - import styleSpec from '../style-spec/reference/latest'; import {endsWith, extend, sphericalToCartesian} from '../util/util'; @@ -26,9 +24,9 @@ import type { import type {LightSpecification} from '../style-spec/types'; type LightPosition = { - x: number, - y: number, - z: number + x: number, + y: number, + z: number }; class LightPositionProperty implements Property<[number, number, number], LightPosition> { @@ -38,7 +36,10 @@ class LightPositionProperty implements Property<[number, number, number], LightP this.specification = styleSpec.light.position; } - possiblyEvaluate(value: PropertyValue<[number, number, number], LightPosition>, parameters: EvaluationParameters): LightPosition { + possiblyEvaluate( + value: PropertyValue<[number, number, number], LightPosition>, + parameters: EvaluationParameters + ): LightPosition { return sphericalToCartesian(value.expression.evaluate(parameters)); } @@ -51,12 +52,12 @@ class LightPositionProperty implements Property<[number, number, number], LightP } } -type Props = {| - "anchor": DataConstantProperty<"map" | "viewport">, - "position": LightPositionProperty, - "color": DataConstantProperty, - "intensity": DataConstantProperty, -|}; +type Props = { + "anchor": DataConstantProperty<"map" | "viewport">, + "position": LightPositionProperty, + "color": DataConstantProperty, + "intensity": DataConstantProperty +}; const properties: Properties = new Properties({ "anchor": new DataConstantProperty(styleSpec.light.anchor), @@ -113,7 +114,9 @@ class Light extends Evented { this.properties = this._transitioning.possiblyEvaluate(parameters); } - _validate(validate: Function, value: mixed, options?: {validate?: boolean}) { + _validate(validate: Function, value: unknown, options?: { + validate?: boolean + }) { if (options && options.validate === false) { return false; } diff --git a/src/style/load_glyph_range.js b/src/style/load_glyph_range.ts similarity index 77% rename from src/style/load_glyph_range.js rename to src/style/load_glyph_range.ts index d57efd6f02..9cc2b28717 100644 --- a/src/style/load_glyph_range.js +++ b/src/style/load_glyph_range.ts @@ -1,6 +1,4 @@ -// @flow - -import {getArrayBuffer, ResourceType} from '../util/ajax'; +import { getArrayBuffer, ResourceType } from '../util/ajax'; import parseGlyphPBF from './parse_glyph_pbf'; @@ -12,7 +10,9 @@ export default function (fontstack: string, range: number, urlTemplate: string, requestManager: RequestManager, - callback: Callback<{[_: number]: StyleGlyph | null}>) { + callback: Callback<{ + [_: number]: StyleGlyph | null + }>) { const begin = range * 256; const end = begin + 255; @@ -22,7 +22,7 @@ export default function (fontstack: string, .replace('{range}', `${begin}-${end}`), ResourceType.Glyphs); - getArrayBuffer(request, (err: ?Error, data: ?ArrayBuffer) => { + getArrayBuffer(request, (err?: Error | null, data?: ArrayBuffer | null) => { if (err) { callback(err); } else if (data) { diff --git a/src/style/load_sprite.js b/src/style/load_sprite.ts similarity index 85% rename from src/style/load_sprite.js rename to src/style/load_sprite.ts index 2f166ca0c0..70b3e767d6 100644 --- a/src/style/load_sprite.js +++ b/src/style/load_sprite.ts @@ -1,6 +1,4 @@ -// @flow - -import {getJSON, getImage, ResourceType} from '../util/ajax'; +import { getJSON, getImage, ResourceType } from '../util/ajax'; import browser from '../util/browser'; import {RGBAImage} from '../util/image'; @@ -10,13 +8,17 @@ import type {RequestManager} from '../util/mapbox'; import type {Callback} from '../types/callback'; import type {Cancelable} from '../types/cancelable'; -export default function(baseURL: string, - requestManager: RequestManager, - callback: Callback<{[_: string]: StyleImage}>): Cancelable { +export default function( + baseURL: string, + requestManager: RequestManager, + callback: Callback<{ + [_: string]: StyleImage + }> +): Cancelable { let json: any, image, error; const format = browser.devicePixelRatio > 1 ? '@2x' : ''; - let jsonRequest = getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), ResourceType.SpriteJSON), (err: ?Error, data: ?Object) => { + let jsonRequest = getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), ResourceType.SpriteJSON), (err?: Error | null, data?: any | null) => { jsonRequest = null; if (!error) { error = err; diff --git a/src/style/parse_glyph_pbf.js b/src/style/parse_glyph_pbf.ts similarity index 86% rename from src/style/parse_glyph_pbf.js rename to src/style/parse_glyph_pbf.ts index c5536d721e..b3b52ca050 100644 --- a/src/style/parse_glyph_pbf.js +++ b/src/style/parse_glyph_pbf.ts @@ -1,6 +1,4 @@ -// @flow - -import {AlphaImage} from '../util/image'; +import { AlphaImage } from '../util/image'; import Protobuf from 'pbf'; const border = 3; @@ -27,7 +25,7 @@ function readFontstack(tag: number, glyphs: Array, pbf: Protobuf) { } } -function readGlyph(tag: number, glyph: Object, pbf: Protobuf) { +function readGlyph(tag: number, glyph: any, pbf: Protobuf) { if (tag === 1) glyph.id = pbf.readVarint(); else if (tag === 2) glyph.bitmap = pbf.readBytes(); else if (tag === 3) glyph.width = pbf.readVarint(); @@ -37,7 +35,7 @@ function readGlyph(tag: number, glyph: Object, pbf: Protobuf) { else if (tag === 7) glyph.advance = pbf.readVarint(); } -export default function (data: ArrayBuffer | Uint8Array): Array { +export default function(data: ArrayBuffer | Uint8Array): Array { return new Protobuf(data).readFields(readFontstacks, []); } diff --git a/src/style/pauseable_placement.js b/src/style/pauseable_placement.ts similarity index 91% rename from src/style/pauseable_placement.js rename to src/style/pauseable_placement.ts index 7143206cae..223f71452a 100644 --- a/src/style/pauseable_placement.js +++ b/src/style/pauseable_placement.ts @@ -1,5 +1,3 @@ -// @flow - import browser from '../util/browser'; import {Placement} from '../symbol/placement'; @@ -14,7 +12,9 @@ class LayerPlacement { _sortAcrossTiles: boolean; _currentTileIndex: number; _currentPartIndex: number; - _seenCrossTileIDs: { [string | number]: boolean }; + _seenCrossTileIDs: { + [k in string | number]: boolean; + }; _bucketParts: Array; constructor(styleLayer: SymbolStyleLayer) { @@ -43,7 +43,7 @@ class LayerPlacement { if (this._sortAcrossTiles) { this._sortAcrossTiles = false; - bucketParts.sort((a, b) => ((a.sortKey: any): number) - ((b.sortKey: any): number)); + bucketParts.sort((a, b) => (a.sortKey as any as number) - (b.sortKey as any as number)); } while (this._currentPartIndex < bucketParts.length) { @@ -65,7 +65,7 @@ class PauseablePlacement { _currentPlacementIndex: number; _forceFullPlacement: boolean; _showCollisionBoxes: boolean; - _inProgressLayer: ?LayerPlacement; + _inProgressLayer: LayerPlacement | undefined | null; constructor(transform: Transform, order: Array, forceFullPlacement: boolean, @@ -85,7 +85,11 @@ class PauseablePlacement { return this._done; } - continuePlacement(order: Array, layers: {[_: string]: StyleLayer}, layerTiles: {[_: string]: Array}) { + continuePlacement(order: Array, layers: { + [_: string]: StyleLayer + }, layerTiles: { + [_: string]: Array + }) { const startTime = browser.now(); const shouldPausePlacement = () => { @@ -102,7 +106,7 @@ class PauseablePlacement { (!layer.maxzoom || layer.maxzoom > placementZoom)) { if (!this._inProgressLayer) { - this._inProgressLayer = new LayerPlacement(((layer: any): SymbolStyleLayer)); + this._inProgressLayer = new LayerPlacement((layer as any as SymbolStyleLayer)); } const pausePlacement = this._inProgressLayer.continuePlacement(layerTiles[layer.source], this.placement, this._showCollisionBoxes, layer, shouldPausePlacement); diff --git a/src/style/properties.js b/src/style/properties.ts similarity index 82% rename from src/style/properties.js rename to src/style/properties.ts index 57829f85bd..7b23c66544 100644 --- a/src/style/properties.js +++ b/src/style/properties.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {clone, extend, easeCubicInOut} from '../util/util'; import * as interpolate from '../style-spec/util/interpolate'; @@ -23,11 +21,15 @@ import type { CompositeExpression } from '../style-spec/expression'; +type $ObjMap any> = { + [K in keyof T]: F extends (v: T[K]) => infer R ? R : never; +}; + type TimePoint = number; export type CrossFaded = { - to: T, - from: T + to: T, + from: T }; /** @@ -66,9 +68,14 @@ export type CrossFaded = { * @private */ export interface Property { - specification: StylePropertySpecification; - possiblyEvaluate(value: PropertyValue, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): R; - interpolate(a: R, b: R, t: number): R; + specification: StylePropertySpecification; + possiblyEvaluate( + value: PropertyValue, + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): R; + interpolate(a: R, b: R, t: number): R; } /** @@ -105,7 +112,11 @@ export class PropertyValue { return this.expression.kind === 'source' || this.expression.kind === 'composite'; } - possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): R { + possiblyEvaluate( + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): R { return this.property.possiblyEvaluate(this, parameters, canonical, availableImages); } } @@ -113,8 +124,8 @@ export class PropertyValue { // ------- Transitionable ------- export type TransitionParameters = { - now: TimePoint, - transition: TransitionSpecification + now: TimePoint, + transition: TransitionSpecification }; /** @@ -139,8 +150,7 @@ class TransitionablePropertyValue { this.value = new PropertyValue(property, undefined); } - transitioned(parameters: TransitionParameters, - prior: TransitioningPropertyValue): TransitioningPropertyValue { + transitioned(parameters: TransitionParameters, prior: TransitioningPropertyValue): TransitioningPropertyValue { return new TransitioningPropertyValue(this.property, this.value, prior, // eslint-disable-line no-use-before-define extend({}, parameters.transition, this.transition), parameters.now); } @@ -156,8 +166,7 @@ class TransitionablePropertyValue { * * @private */ -type TransitionablePropertyValues - = $Exact<$ObjMap(p: Property) => TransitionablePropertyValue>> +type TransitionablePropertyValues = $ObjMap(p: Property) => TransitionablePropertyValue>; /** * `Transitionable` stores a map of all (property name, `TransitionablePropertyValue`) pairs for paint properties of a @@ -166,20 +175,20 @@ type TransitionablePropertyValues * * @private */ -export class Transitionable { +export class Transitionable { _properties: Properties; _values: TransitionablePropertyValues; constructor(properties: Properties) { this._properties = properties; - this._values = (Object.create(properties.defaultTransitionablePropertyValues): any); + this._values = (Object.create(properties.defaultTransitionablePropertyValues) as any); } - getValue(name: S): PropertyValueSpecification | void { + getValue(name: S): PropertyValueSpecification | void { return clone(this._values[name].value.value); } - setValue(name: S, value: PropertyValueSpecification | void) { + setValue(name: S, value: PropertyValueSpecification | void) { if (!this._values.hasOwnProperty(name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } @@ -188,11 +197,11 @@ export class Transitionable { this._values[name].value = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value)); } - getTransition(name: S): TransitionSpecification | void { + getTransition(name: S): TransitionSpecification | void { return clone(this._values[name].transition); } - setTransition(name: S, value: TransitionSpecification | void) { + setTransition(name: S, value: TransitionSpecification | void) { if (!this._values.hasOwnProperty(name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } @@ -246,13 +255,13 @@ export class Transitionable { class TransitioningPropertyValue { property: Property; value: PropertyValue; - prior: ?TransitioningPropertyValue; + prior: TransitioningPropertyValue | undefined | null; begin: TimePoint; end: TimePoint; constructor(property: Property, value: PropertyValue, - prior: ?TransitioningPropertyValue, + prior: TransitioningPropertyValue | undefined | null, transition: TransitionSpecification, now: TimePoint) { this.property = property; @@ -264,7 +273,11 @@ class TransitioningPropertyValue { } } - possiblyEvaluate(parameters: EvaluationParameters, canonical: CanonicalTileID, availableImages: Array): R { + possiblyEvaluate( + parameters: EvaluationParameters, + canonical: CanonicalTileID, + availableImages: Array + ): R { const now = parameters.now || 0; const finalValue = this.value.possiblyEvaluate(parameters, canonical, availableImages); const prior = this.prior; @@ -298,8 +311,7 @@ class TransitioningPropertyValue { * * @private */ -type TransitioningPropertyValues - = $Exact<$ObjMap(p: Property) => TransitioningPropertyValue>> +type TransitioningPropertyValues = $ObjMap(p: Property) => TransitioningPropertyValue>; /** * `Transitioning` stores a map of all (property name, `TransitioningPropertyValue`) pairs for paint properties of a @@ -308,16 +320,20 @@ type TransitioningPropertyValues * * @private */ -export class Transitioning { +export class Transitioning { _properties: Properties; _values: TransitioningPropertyValues; constructor(properties: Properties) { this._properties = properties; - this._values = (Object.create(properties.defaultTransitioningPropertyValues): any); + this._values = (Object.create(properties.defaultTransitioningPropertyValues) as any); } - possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): PossiblyEvaluated { + possiblyEvaluate( + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): PossiblyEvaluated { const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define for (const property of Object.keys(this._values)) { result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages); @@ -343,8 +359,7 @@ export class Transitioning { * * @private */ -type PropertyValues - = $Exact<$ObjMap(p: Property) => PropertyValue>> +type PropertyValues = $ObjMap(p: Property) => PropertyValue>; /** * Because layout properties are not transitionable, they have a simpler representation and evaluation chain than @@ -357,20 +372,20 @@ type PropertyValues * * @private */ -export class Layout { +export class Layout { _properties: Properties; _values: PropertyValues; constructor(properties: Properties) { this._properties = properties; - this._values = (Object.create(properties.defaultPropertyValues): any); + this._values = (Object.create(properties.defaultPropertyValues) as any); } - getValue(name: S) { + getValue(name: S) { return clone(this._values[name].value); } - setValue(name: S, value: *) { + setValue(name: S, value: any) { this._values[name] = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value)); } @@ -385,7 +400,11 @@ export class Layout { return result; } - possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): PossiblyEvaluated { + possiblyEvaluate( + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): PossiblyEvaluated { const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define for (const property of Object.keys(this._values)) { result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages); @@ -417,10 +436,10 @@ export class Layout { * * @private */ -type PossiblyEvaluatedValue = - | {kind: 'constant', value: T} - | SourceExpression - | CompositeExpression; +type PossiblyEvaluatedValue = { + kind: "constant", + value: T +} | SourceExpression | CompositeExpression; /** * `PossiblyEvaluatedPropertyValue` is used for data-driven paint and layout property values. It holds a @@ -453,7 +472,12 @@ export class PossiblyEvaluatedPropertyValue { } } - evaluate(feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array): T { + evaluate( + feature: Feature, + featureState: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array + ): T { return this.property.evaluate(this.value, this.parameters, feature, featureState, canonical, availableImages); } } @@ -475,24 +499,23 @@ export class PossiblyEvaluatedPropertyValue { * * @private */ -type PossiblyEvaluatedPropertyValues - = $Exact<$ObjMap(p: Property) => R>> +type PossiblyEvaluatedPropertyValues = $ObjMap(p: Property) => R>; /** * `PossiblyEvaluated` stores a map of all (property name, `R`) pairs for paint or layout properties of a * given layer type. * @private */ -export class PossiblyEvaluated { +export class PossiblyEvaluated { _properties: Properties; _values: PossiblyEvaluatedPropertyValues; constructor(properties: Properties) { this._properties = properties; - this._values = (Object.create(properties.defaultPossiblyEvaluatedValues): any); + this._values = (Object.create(properties.defaultPossiblyEvaluatedValues) as any); } - get(name: S): $ElementType, S> { + get(name: S): PossiblyEvaluatedPropertyValues[S] { return this._values[name]; } } @@ -517,7 +540,7 @@ export class DataConstantProperty implements Property { } interpolate(a: T, b: T, t: number): T { - const interp: ?(a: T, b: T, t: number) => T = (interpolate: any)[this.specification.type]; + const interp: ((a: T, b: T, t: number) => T) | undefined | null = (interpolate as any)[this.specification.type]; if (interp) { return interp(a, b, t); } else { @@ -535,24 +558,31 @@ export class DataConstantProperty implements Property { */ export class DataDrivenProperty implements Property> { specification: StylePropertySpecification; - overrides: ?Object; + overrides: any; - constructor(specification: StylePropertySpecification, overrides?: Object) { + constructor(specification: StylePropertySpecification, overrides?: any) { this.specification = specification; this.overrides = overrides; } - possiblyEvaluate(value: PropertyValue>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): PossiblyEvaluatedPropertyValue { + possiblyEvaluate( + value: PropertyValue>, + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): PossiblyEvaluatedPropertyValue { if (value.expression.kind === 'constant' || value.expression.kind === 'camera') { - return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages)}, parameters); + return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages)}, parameters); } else { return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters); } } - interpolate(a: PossiblyEvaluatedPropertyValue, - b: PossiblyEvaluatedPropertyValue, - t: number): PossiblyEvaluatedPropertyValue { + interpolate( + a: PossiblyEvaluatedPropertyValue, + b: PossiblyEvaluatedPropertyValue, + t: number + ): PossiblyEvaluatedPropertyValue { // If either possibly-evaluated value is non-constant, give up: we aren't able to interpolate data-driven values. if (a.value.kind !== 'constant' || b.value.kind !== 'constant') { return a; @@ -566,10 +596,10 @@ export class DataDrivenProperty implements Property T = (interpolate: any)[this.specification.type]; + const interp: ((a: T, b: T, t: number) => T) | undefined | null = (interpolate as any)[this.specification.type]; if (interp) { return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: interp(a.value.value, b.value.value, t)}, a.parameters); } else { @@ -577,7 +607,14 @@ export class DataDrivenProperty implements Property, parameters: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array): T { + evaluate( + value: PossiblyEvaluatedValue, + parameters: EvaluationParameters, + feature: Feature, + featureState: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array + ): T { if (value.kind === 'constant') { return value.value; } else { @@ -593,13 +630,18 @@ export class DataDrivenProperty implements Property extends DataDrivenProperty> { +export class CrossFadedDataDrivenProperty extends DataDrivenProperty | undefined | null> { - possiblyEvaluate(value: PropertyValue, PossiblyEvaluatedPropertyValue>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): PossiblyEvaluatedPropertyValue> { + possiblyEvaluate( + value: PropertyValue | undefined | null, PossiblyEvaluatedPropertyValue | undefined | null>>, + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): PossiblyEvaluatedPropertyValue | undefined | null> { if (value.value === undefined) { return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: undefined}, parameters); } else if (value.expression.kind === 'constant') { - const evaluatedValue = value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages); + const evaluatedValue = value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages); const isImageExpression = value.property.specification.type === 'resolvedImage'; const constantValue = isImageExpression && typeof evaluatedValue !== 'string' ? evaluatedValue.name : evaluatedValue; const constant = this._calculate(constantValue, constantValue, constantValue, parameters); @@ -617,7 +659,14 @@ export class CrossFadedDataDrivenProperty extends DataDrivenProperty>, globals: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array): ?CrossFaded { + evaluate( + value: PossiblyEvaluatedValue | undefined | null>, + globals: EvaluationParameters, + feature: Feature, + featureState: FeatureState, + canonical?: CanonicalTileID, + availableImages?: Array + ): CrossFaded | undefined | null { if (value.kind === 'source') { const constant = value.evaluate(globals, feature, featureState, canonical, availableImages); return this._calculate(constant, constant, constant, globals); @@ -637,7 +686,7 @@ export class CrossFadedDataDrivenProperty extends DataDrivenProperty parameters.zoomHistory.lastIntegerZoom ? {from: min, to: mid} : {from: max, to: mid}; } - interpolate(a: PossiblyEvaluatedPropertyValue>): PossiblyEvaluatedPropertyValue> { + interpolate(a: PossiblyEvaluatedPropertyValue | undefined | null>): PossiblyEvaluatedPropertyValue | undefined | null> { return a; } } @@ -647,18 +696,23 @@ export class CrossFadedDataDrivenProperty extends DataDrivenProperty implements Property> { +export class CrossFadedProperty implements Property | undefined | null> { specification: StylePropertySpecification; constructor(specification: StylePropertySpecification) { this.specification = specification; } - possiblyEvaluate(value: PropertyValue>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): ?CrossFaded { + possiblyEvaluate( + value: PropertyValue | undefined | null>, + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): CrossFaded | undefined | null { if (value.value === undefined) { return undefined; } else if (value.expression.kind === 'constant') { - const constant = value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages); + const constant = value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages); return this._calculate(constant, constant, constant, parameters); } else { assert(!value.isDataDriven()); @@ -670,12 +724,12 @@ export class CrossFadedProperty implements Property> { } } - _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): ?CrossFaded { + _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): CrossFaded | undefined | null { const z = parameters.zoom; return z > parameters.zoomHistory.lastIntegerZoom ? {from: min, to: mid} : {from: max, to: mid}; } - interpolate(a: ?CrossFaded): ?CrossFaded { + interpolate(a?: CrossFaded | null): CrossFaded | undefined | null { return a; } } @@ -695,8 +749,13 @@ export class ColorRampProperty implements Property { this.specification = specification; } - possiblyEvaluate(value: PropertyValue, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array): boolean { - return !!value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages); + possiblyEvaluate( + value: PropertyValue, + parameters: EvaluationParameters, + canonical?: CanonicalTileID, + availableImages?: Array + ): boolean { + return !!value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages); } interpolate(): boolean { return false; } @@ -713,7 +772,7 @@ export class ColorRampProperty implements Property { * * @private */ -export class Properties { +export class Properties { properties: Props; defaultPropertyValues: PropertyValues; defaultTransitionablePropertyValues: TransitionablePropertyValues; @@ -723,11 +782,11 @@ export class Properties { constructor(properties: Props) { this.properties = properties; - this.defaultPropertyValues = ({}: any); - this.defaultTransitionablePropertyValues = ({}: any); - this.defaultTransitioningPropertyValues = ({}: any); - this.defaultPossiblyEvaluatedValues = ({}: any); - this.overridableProperties = ([]: any); + this.defaultPropertyValues = ({} as any); + this.defaultTransitionablePropertyValues = ({} as any); + this.defaultTransitioningPropertyValues = ({} as any); + this.defaultPossiblyEvaluatedValues = ({} as any); + this.overridableProperties = ([] as any); for (const property in properties) { const prop = properties[property]; @@ -741,7 +800,7 @@ export class Properties { this.defaultTransitioningPropertyValues[property] = defaultTransitionablePropertyValue.untransitioned(); this.defaultPossiblyEvaluatedValues[property] = - defaultPropertyValue.possiblyEvaluate(({}: any)); + defaultPropertyValue.possiblyEvaluate((({} as any))); } } } diff --git a/src/style/query_utils.js b/src/style/query_utils.ts similarity index 80% rename from src/style/query_utils.js rename to src/style/query_utils.ts index dc0f6754a8..a021f23c01 100644 --- a/src/style/query_utils.js +++ b/src/style/query_utils.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import type {PossiblyEvaluatedPropertyValue} from "./properties"; @@ -7,8 +5,12 @@ import type StyleLayer from '../style/style_layer'; import type CircleBucket from '../data/bucket/circle_bucket'; import type LineBucket from '../data/bucket/line_bucket'; -export function getMaximumPaintValue(property: string, layer: StyleLayer, bucket: CircleBucket<*> | LineBucket): number { - const value = ((layer.paint: any).get(property): PossiblyEvaluatedPropertyValue).value; +export function getMaximumPaintValue( + property: string, + layer: StyleLayer, + bucket: CircleBucket | LineBucket +): number { + const value = ((layer.paint as any).get(property) as PossiblyEvaluatedPropertyValue).value; if (value.kind === 'constant') { return value.value; } else { @@ -22,7 +24,7 @@ export function translateDistance(translate: [number, number]) { export function translate(queryGeometry: Array, translate: [number, number], - translateAnchor: 'viewport' | 'map', + translateAnchor: "viewport" | "map", bearing: number, pixelsToTileUnits: number) { if (!translate[0] && !translate[1]) { diff --git a/src/style/style.js b/src/style/style.ts similarity index 94% rename from src/style/style.js rename to src/style/style.ts index 7052394187..4127c42fce 100644 --- a/src/style/style.js +++ b/src/style/style.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import {Event, ErrorEvent, Evented} from '../util/evented'; @@ -16,11 +14,8 @@ import {isMapboxURL} from '../util/mapbox'; import browser from '../util/browser'; import Dispatcher from '../util/dispatcher'; import {validateStyle, emitValidationErrors as _emitValidationErrors} from './validate_style'; -import { - getType as getSourceType, - setType as setSourceType, - type SourceClass -} from '../source/source'; +import { getType as getSourceType, setType as setSourceType } from '../source/source'; +import type { SourceClass } from '../source/source'; import {queryRenderedFeatures, queryRenderedSymbols, querySourceFeatures} from '../source/query_features'; import SourceCache from '../source/source_cache'; import GeoJSONSource from '../source/geojson_source'; @@ -42,7 +37,10 @@ import {validateCustomStyleLayer} from './style_layer/custom_style_layer'; // We're skipping validation errors with the `source.canvas` identifier in order // to continue to allow canvas sources to be added at runtime/updated in // smart setStyle (see https://github.com/mapbox/mapbox-gl-js/pull/6424): -const emitValidationErrors = (evented: Evented, errors: ?$ReadOnlyArray<{message: string, identifier?: string}>) => +const emitValidationErrors = (evented: Evented, errors?: ReadonlyArray<{ + message: string, + identifier?: string +}> | null) => _emitValidationErrors(evented, errors && errors.filter(error => error.identifier !== 'source.canvas')); import type Map from '../ui/map'; @@ -92,12 +90,12 @@ const ignoredDiffOperations = pick(diffOperations, [ const empty = emptyStyle(); export type StyleOptions = { - validate?: boolean, - localIdeographFontFamily?: string + validate?: boolean, + localIdeographFontFamily?: string }; export type StyleSetterOptions = { - validate?: boolean + validate?: boolean }; /** * @private @@ -111,21 +109,37 @@ class Style extends Evented { lineAtlas: LineAtlas; light: Light; - _request: ?Cancelable; - _spriteRequest: ?Cancelable; - _layers: {[_: string]: StyleLayer}; - _serializedLayers: {[_: string]: Object}; + _request: Cancelable | undefined | null; + _spriteRequest: Cancelable | undefined | null; + _layers: { + [_: string]: StyleLayer + }; + _serializedLayers: { + [_: string]: any + }; _order: Array; - sourceCaches: {[_: string]: SourceCache}; + sourceCaches: { + [_: string]: SourceCache + }; zoomHistory: ZoomHistory; _loaded: boolean; _rtlTextPluginCallback: Function; _changed: boolean; - _updatedSources: {[_: string]: 'clear' | 'reload'}; - _updatedLayers: {[_: string]: true}; - _removedLayers: {[_: string]: StyleLayer}; - _changedImages: {[_: string]: true}; - _updatedPaintProps: {[layer: string]: true}; + _updatedSources: { + [_: string]: "clear" | "reload" + }; + _updatedLayers: { + [_: string]: true + }; + _removedLayers: { + [_: string]: StyleLayer + }; + _changedImages: { + [_: string]: true + }; + _updatedPaintProps: { + [layer: string]: true + }; _layerOrderChanged: boolean; _availableImages: Array; @@ -207,8 +221,8 @@ class Style extends Evented { } loadURL(url: string, options: { - validate?: boolean, - accessToken?: string + validate?: boolean, + accessToken?: string } = {}) { this.fire(new Event('dataloading', {dataType: 'style'})); @@ -217,7 +231,7 @@ class Style extends Evented { url = this.map._requestManager.normalizeStyleURL(url, options.accessToken); const request = this.map._requestManager.transformRequest(url, ResourceType.Style); - this._request = getJSON(request, (error: ?Error, json: ?Object) => { + this._request = getJSON(request, (error?: Error | null, json?: any | null) => { this._request = null; if (error) { this.fire(new ErrorEvent(error)); @@ -337,7 +351,7 @@ class Style extends Evented { return true; } - _serializeLayers(ids: Array): Array { + _serializeLayers(ids: Array): Array { const serializedLayers = []; for (const id of ids) { const layer = this._layers[id]; @@ -513,7 +527,7 @@ class Style extends Evented { // `this.stylesheet`, which we update below return; } - (this: any)[op.command].apply(this, op.args); + (this as any)[op.command].apply(this, op.args); }); this.stylesheet = nextState; @@ -533,7 +547,7 @@ class Style extends Evented { this.imageManager.updateImage(id, image); } - getImage(id: string): ?StyleImage { + getImage(id: string): StyleImage | undefined | null { return this.imageManager.getImage(id); } @@ -574,7 +588,7 @@ class Style extends Evented { const shouldValidate = builtIns.indexOf(source.type) >= 0; if (shouldValidate && this._validate(validateStyle.source, `sources.${id}`, source, null, options)) return; - if (this.map && this.map._collectResourceTiming) (source: any).collectResourceTiming = true; + if (this.map && this.map._collectResourceTiming) (source as any).collectResourceTiming = true; const sourceCache = this.sourceCaches[id] = new SourceCache(id, source, this.dispatcher); sourceCache.style = this; sourceCache.setEventedParent(this, () => ({ @@ -625,7 +639,7 @@ class Style extends Evented { this._checkLoaded(); assert(this.sourceCaches[id] !== undefined, 'There is no source with this ID'); - const geojsonSource: GeoJSONSource = (this.sourceCaches[id].getSource(): any); + const geojsonSource: GeoJSONSource = (this.sourceCaches[id].getSource() as any); assert(geojsonSource.type === 'geojson'); geojsonSource.setData(data); @@ -637,7 +651,7 @@ class Style extends Evented { * @param {string} id id of the desired source * @returns {Object} source */ - getSource(id: string): Object { + getSource(id: string): any { return this.sourceCaches[id] && this.sourceCaches[id].getSource(); } @@ -670,7 +684,7 @@ class Style extends Evented { if (typeof layerObject.source === 'object') { this.addSource(id, layerObject.source); layerObject = clone(layerObject); - layerObject = (extend(layerObject, {source: id}): any); + layerObject = (extend(layerObject, {source: id}) as any); } // this layer is not in the style.layers array, so we pass an impossible array index @@ -793,7 +807,7 @@ class Style extends Evented { * @param {string} id - id of the desired layer * @returns {?Object} a layer, if one with the given `id` exists */ - getLayer(id: string): Object { + getLayer(id: string): any { return this._layers[id]; } @@ -807,7 +821,7 @@ class Style extends Evented { return id in this._layers; } - setLayerZoomRange(layerId: string, minzoom: ?number, maxzoom: ?number) { + setLayerZoomRange(layerId: string, minzoom?: number | null, maxzoom?: number | null) { this._checkLoaded(); const layer = this.getLayer(layerId); @@ -827,7 +841,7 @@ class Style extends Evented { this._updateLayer(layer); } - setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}) { + setFilter(layerId: string, filter?: FilterSpecification | null, options: StyleSetterOptions = {}) { this._checkLoaded(); const layer = this.getLayer(layerId); @@ -918,7 +932,11 @@ class Style extends Evented { return this.getLayer(layer).getPaintProperty(name); } - setFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }, state: Object) { + setFeatureState(target: { + source: string, + sourceLayer?: string, + id: string | number + }, state: any) { this._checkLoaded(); const sourceId = target.source; const sourceLayer = target.sourceLayer; @@ -944,7 +962,11 @@ class Style extends Evented { sourceCache.setFeatureState(sourceLayer, target.id, state); } - removeFeatureState(target: { source: string; sourceLayer?: string; id?: string | number; }, key?: string) { + removeFeatureState(target: { + source: string, + sourceLayer?: string, + id?: string | number + }, key?: string) { this._checkLoaded(); const sourceId = target.source; const sourceCache = this.sourceCaches[sourceId]; @@ -970,7 +992,11 @@ class Style extends Evented { sourceCache.removeFeatureState(sourceLayer, target.id, key); } - getFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }) { + getFeatureState(target: { + source: string, + sourceLayer?: string, + id: string | number + }) { this._checkLoaded(); const sourceId = target.source; const sourceLayer = target.sourceLayer; @@ -1150,7 +1176,11 @@ class Style extends Evented { return this._flattenAndSortRenderedFeatures(sourceResults); } - querySourceFeatures(sourceID: string, params: ?{sourceLayer: ?string, filter: ?Array, validate?: boolean}) { + querySourceFeatures(sourceID: string, params?: { + sourceLayer: string | undefined | null, + filter: Array | undefined | null, + validate?: boolean + } | null) { if (params && params.filter) { this._validate(validateStyle.filter, 'querySourceFeatures.filter', params.filter, null, params); } @@ -1204,7 +1234,9 @@ class Style extends Evented { this.light.updateTransitions(parameters); } - _validate(validate: Validator, key: string, value: any, props: any, options: { validate?: boolean } = {}) { + _validate(validate: Validator, key: string, value: any, props: any, options: { + validate?: boolean + } = {}) { if (options && options.validate === false) { return false; } @@ -1338,7 +1370,14 @@ class Style extends Evented { // Callbacks from web workers - getImages(mapId: string, params: {icons: Array, source: string, tileID: OverscaledTileID, type: string}, callback: Callback<{[_: string]: StyleImage}>) { + getImages(mapId: string, params: { + icons: Array, + source: string, + tileID: OverscaledTileID, + type: string + }, callback: Callback<{ + [_: string]: StyleImage + }>) { this.imageManager.getImages(params.icons, callback); @@ -1358,7 +1397,15 @@ class Style extends Evented { } } - getGlyphs(mapId: string, params: {stacks: {[_: string]: Array}}, callback: Callback<{[_: string]: {[_: number]: ?StyleGlyph}}>) { + getGlyphs(mapId: string, params: { + stacks: { + [_: string]: Array + } + }, callback: Callback<{ + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }>) { this.glyphManager.getGlyphs(params.stacks, callback); } diff --git a/src/style/style_glyph.js b/src/style/style_glyph.js deleted file mode 100644 index 009bf12579..0000000000 --- a/src/style/style_glyph.js +++ /dev/null @@ -1,17 +0,0 @@ -// @flow - -import type {AlphaImage} from '../util/image'; - -export type GlyphMetrics = { - width: number, - height: number, - left: number, - top: number, - advance: number -}; - -export type StyleGlyph = { - id: number, - bitmap: AlphaImage, - metrics: GlyphMetrics -}; diff --git a/src/style/style_glyph.ts b/src/style/style_glyph.ts new file mode 100644 index 0000000000..87983b9d71 --- /dev/null +++ b/src/style/style_glyph.ts @@ -0,0 +1,15 @@ +import type { AlphaImage } from '../util/image'; + +export type GlyphMetrics = { + width: number, + height: number, + left: number, + top: number, + advance: number +}; + +export type StyleGlyph = { + id: number, + bitmap: AlphaImage, + metrics: GlyphMetrics +}; diff --git a/src/style/style_image.js b/src/style/style_image.ts similarity index 87% rename from src/style/style_image.js rename to src/style/style_image.ts index 7d528b79fb..49b7d3d077 100644 --- a/src/style/style_image.js +++ b/src/style/style_image.ts @@ -1,33 +1,31 @@ -// @flow - -import {RGBAImage} from '../util/image'; +import { RGBAImage } from '../util/image'; import type Map from '../ui/map'; export type StyleImageData = { - data: RGBAImage, - version: number, - hasRenderCallback?: boolean, - userImage?: StyleImageInterface + data: RGBAImage, + version: number, + hasRenderCallback?: boolean, + userImage?: StyleImageInterface }; export type StyleImageMetadata = { - pixelRatio: number, - sdf: boolean, - stretchX?: Array<[number, number]>, - stretchY?: Array<[number, number]>, - content?: [number, number, number, number] + pixelRatio: number, + sdf: boolean, + stretchX?: Array<[number, number]>, + stretchY?: Array<[number, number]>, + content?: [number, number, number, number] }; export type StyleImage = StyleImageData & StyleImageMetadata; export type StyleImageInterface = { - width: number, - height: number, - data: Uint8Array | Uint8ClampedArray, - render?: () => boolean, - onAdd?: (map: Map, id: string) => void, - onRemove?: () => void + width: number, + height: number, + data: Uint8Array | Uint8ClampedArray, + render?: () => boolean, + onAdd?: (map: Map, id: string) => void, + onRemove?: () => void }; export function renderStyleImage(image: StyleImage) { diff --git a/src/style/style_layer.js b/src/style/style_layer.ts similarity index 83% rename from src/style/style_layer.js rename to src/style/style_layer.ts index c2a7d6cb0c..95b223112f 100644 --- a/src/style/style_layer.js +++ b/src/style/style_layer.ts @@ -1,6 +1,4 @@ -// @flow - -import {endsWith, filterObject} from '../util/util'; +import { endsWith, filterObject } from '../util/util'; import styleSpec from '../style-spec/reference/latest'; import { @@ -18,7 +16,8 @@ import type {Bucket} from '../data/bucket'; import type Point from '@mapbox/point-geometry'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; -import type EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; +import type EvaluationParameters from './evaluation_parameters'; +import type { CrossfadeParameters } from './evaluation_parameters'; import type Transform from '../geo/transform'; import type { LayerSpecification, @@ -32,39 +31,44 @@ const TRANSITION_SUFFIX = '-transition'; class StyleLayer extends Evented { id: string; - metadata: mixed; + metadata: unknown; type: string; source: string; - sourceLayer: ?string; - minzoom: ?number; - maxzoom: ?number; + sourceLayer: string | undefined | null; + minzoom: number | undefined | null; + maxzoom: number | undefined | null; filter: FilterSpecification | void; - visibility: 'visible' | 'none' | void; + visibility: "visible" | "none" | void; _crossfadeParameters: CrossfadeParameters; _unevaluatedLayout: Layout; - +layout: mixed; + readonly layout: unknown; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - +paint: mixed; + readonly paint: unknown; _featureFilter: FeatureFilter; - +queryRadius: (bucket: Bucket) => number; - +queryIntersectsFeature: (queryGeometry: Array, - feature: VectorTileFeature, - featureState: FeatureState, - geometry: Array>, - zoom: number, - transform: Transform, - pixelsToTileUnits: number, - pixelPosMatrix: Float32Array) => boolean | number; - - +onAdd: ?(map: Map) => void; - +onRemove: ?(map: Map) => void; - - constructor(layer: LayerSpecification | CustomLayerInterface, properties: $ReadOnly<{layout?: Properties<*>, paint?: Properties<*>}>) { + readonly queryRadius: (bucket: Bucket) => number; + readonly queryIntersectsFeature: ( + queryGeometry: Array, + feature: VectorTileFeature, + featureState: FeatureState, + geometry: Array>, + zoom: number, + transform: Transform, + pixelsToTileUnits: number, + pixelPosMatrix: Float32Array + ) => boolean | number; + + readonly onAdd: ((map: Map) => void) | undefined | null; + readonly onRemove: ((map: Map) => void) | undefined | null; + + constructor(layer: LayerSpecification | CustomLayerInterface, properties: Readonly<{ + layout?: Properties, + paint?: Properties + }>) { super(); this.id = layer.id; @@ -73,7 +77,7 @@ class StyleLayer extends Evented { if (layer.type === 'custom') return; - layer = ((layer: any): LayerSpecification); + layer = (layer as any as LayerSpecification); this.metadata = layer.metadata; this.minzoom = layer.minzoom; @@ -141,7 +145,7 @@ class StyleLayer extends Evented { } } - setPaintProperty(name: string, value: mixed, options: StyleSetterOptions = {}) { + setPaintProperty(name: string, value: unknown, options: StyleSetterOptions = {}) { if (value !== null && value !== undefined) { const key = `layers.${this.id}.paint.${name}`; if (this._validate(validatePaintProperty, key, name, value, options)) { @@ -150,7 +154,7 @@ class StyleLayer extends Evented { } if (endsWith(name, TRANSITION_SUFFIX)) { - this._transitionablePaint.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), (value: any) || undefined); + this._transitionablePaint.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), (value as any) || undefined); return false; } else { const transitionable = this._transitionablePaint._values[name]; @@ -201,10 +205,10 @@ class StyleLayer extends Evented { } if (this._unevaluatedLayout) { - (this: any).layout = this._unevaluatedLayout.possiblyEvaluate(parameters, undefined, availableImages); + (this as any).layout = this._unevaluatedLayout.possiblyEvaluate(parameters, undefined, availableImages); } - (this: any).paint = this._transitioningPaint.possiblyEvaluate(parameters, undefined, availableImages); + (this as any).paint = this._transitioningPaint.possiblyEvaluate(parameters, undefined, availableImages); } serialize() { @@ -233,7 +237,7 @@ class StyleLayer extends Evented { }); } - _validate(validate: Function, key: string, name: string, value: mixed, options: StyleSetterOptions = {}) { + _validate(validate: Function, key: string, name: string, value: unknown, options: StyleSetterOptions = {}) { if (options && options.validate === false) { return false; } @@ -265,8 +269,8 @@ class StyleLayer extends Evented { } isStateDependent() { - for (const property in (this: any).paint._values) { - const value = (this: any).paint.get(property); + for (const property in (this as any).paint._values) { + const value = (this as any).paint.get(property); if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) { continue; } diff --git a/src/style/style_layer/background_style_layer.js b/src/style/style_layer/background_style_layer.ts similarity index 98% rename from src/style/style_layer/background_style_layer.js rename to src/style/style_layer/background_style_layer.ts index 33a2ead347..e70feac55a 100644 --- a/src/style/style_layer/background_style_layer.js +++ b/src/style/style_layer/background_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import properties from './background_style_layer_properties'; diff --git a/src/style/style_layer/background_style_layer_properties.js b/src/style/style_layer/background_style_layer_properties.ts similarity index 82% rename from src/style/style_layer/background_style_layer_properties.js rename to src/style/style_layer/background_style_layer_properties.ts index 868663cfce..6b010648ee 100644 --- a/src/style/style_layer/background_style_layer_properties.js +++ b/src/style/style_layer/background_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -20,11 +19,11 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type PaintProps = {| - "background-color": DataConstantProperty, - "background-pattern": CrossFadedProperty, - "background-opacity": DataConstantProperty, -|}; +export type PaintProps = { + "background-color": DataConstantProperty, + "background-pattern": CrossFadedProperty, + "background-opacity": DataConstantProperty +}; const paint: Properties = new Properties({ "background-color": new DataConstantProperty(styleSpec["paint_background"]["background-color"]), @@ -35,6 +34,6 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint }: $Exact<{ +export default ({ paint } as { paint: Properties -}>); +}); diff --git a/src/style/style_layer/circle_style_layer.js b/src/style/style_layer/circle_style_layer.ts similarity index 88% rename from src/style/style_layer/circle_style_layer.js rename to src/style/style_layer/circle_style_layer.ts index e5168f56a2..114bef0e91 100644 --- a/src/style/style_layer/circle_style_layer.js +++ b/src/style/style_layer/circle_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import CircleBucket from '../../data/bucket/circle_bucket'; @@ -28,25 +26,27 @@ class CircleStyleLayer extends StyleLayer { super(layer, properties); } - createBucket(parameters: BucketParameters<*>) { + createBucket(parameters: BucketParameters) { return new CircleBucket(parameters); } queryRadius(bucket: Bucket): number { - const circleBucket: CircleBucket = (bucket: any); + const circleBucket: CircleBucket = (bucket as any); return getMaximumPaintValue('circle-radius', this, circleBucket) + getMaximumPaintValue('circle-stroke-width', this, circleBucket) + translateDistance(this.paint.get('circle-translate')); } - queryIntersectsFeature(queryGeometry: Array, - feature: VectorTileFeature, - featureState: FeatureState, - geometry: Array>, - zoom: number, - transform: Transform, - pixelsToTileUnits: number, - pixelPosMatrix: Float32Array): boolean { + queryIntersectsFeature( + queryGeometry: Array, + feature: VectorTileFeature, + featureState: FeatureState, + geometry: Array>, + zoom: number, + transform: Transform, + pixelsToTileUnits: number, + pixelPosMatrix: Float32Array + ): boolean { const translatedPolygon = translate(queryGeometry, this.paint.get('circle-translate'), this.paint.get('circle-translate-anchor'), diff --git a/src/style/style_layer/circle_style_layer_properties.js b/src/style/style_layer/circle_style_layer_properties.ts similarity index 70% rename from src/style/style_layer/circle_style_layer_properties.js rename to src/style/style_layer/circle_style_layer_properties.ts index 5b8224423b..ef9a294df1 100644 --- a/src/style/style_layer/circle_style_layer_properties.js +++ b/src/style/style_layer/circle_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -19,27 +18,27 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type LayoutProps = {| - "circle-sort-key": DataDrivenProperty, -|}; +export type LayoutProps = { + "circle-sort-key": DataDrivenProperty +}; const layout: Properties = new Properties({ "circle-sort-key": new DataDrivenProperty(styleSpec["layout_circle"]["circle-sort-key"]), }); -export type PaintProps = {| - "circle-radius": DataDrivenProperty, - "circle-color": DataDrivenProperty, - "circle-blur": DataDrivenProperty, - "circle-opacity": DataDrivenProperty, - "circle-translate": DataConstantProperty<[number, number]>, - "circle-translate-anchor": DataConstantProperty<"map" | "viewport">, - "circle-pitch-scale": DataConstantProperty<"map" | "viewport">, - "circle-pitch-alignment": DataConstantProperty<"map" | "viewport">, - "circle-stroke-width": DataDrivenProperty, - "circle-stroke-color": DataDrivenProperty, - "circle-stroke-opacity": DataDrivenProperty, -|}; +export type PaintProps = { + "circle-radius": DataDrivenProperty, + "circle-color": DataDrivenProperty, + "circle-blur": DataDrivenProperty, + "circle-opacity": DataDrivenProperty, + "circle-translate": DataConstantProperty<[number, number]>, + "circle-translate-anchor": DataConstantProperty<"map" | "viewport">, + "circle-pitch-scale": DataConstantProperty<"map" | "viewport">, + "circle-pitch-alignment": DataConstantProperty<"map" | "viewport">, + "circle-stroke-width": DataDrivenProperty, + "circle-stroke-color": DataDrivenProperty, + "circle-stroke-opacity": DataDrivenProperty +}; const paint: Properties = new Properties({ "circle-radius": new DataDrivenProperty(styleSpec["paint_circle"]["circle-radius"]), @@ -58,6 +57,7 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint, layout }: $Exact<{ - paint: Properties, layout: Properties -}>); +export default ({ paint, layout } as { + paint: Properties, + layout: Properties +}); diff --git a/src/style/style_layer/custom_style_layer.js b/src/style/style_layer/custom_style_layer.ts similarity index 96% rename from src/style/style_layer/custom_style_layer.js rename to src/style/style_layer/custom_style_layer.ts index 87afc2af22..faf3c8ceaa 100644 --- a/src/style/style_layer/custom_style_layer.js +++ b/src/style/style_layer/custom_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import type Map from '../../ui/map'; import assert from 'assert'; @@ -146,14 +144,14 @@ type CustomRenderMethod = (gl: WebGLRenderingContext, matrix: Array) => * can be used to project a `LngLat` to a mercator coordinate. */ export type CustomLayerInterface = { - id: string, - type: "custom", - renderingMode: "2d" | "3d", - render: CustomRenderMethod, - prerender: ?CustomRenderMethod, - onAdd: ?(map: Map, gl: WebGLRenderingContext) => void, - onRemove: ?(map: Map, gl: WebGLRenderingContext) => void -} + id: string, + type: "custom", + renderingMode: "2d" | "3d", + render: CustomRenderMethod, + prerender: CustomRenderMethod | undefined | null, + onAdd: ((map: Map, gl: WebGLRenderingContext) => void) | undefined | null, + onRemove: ((map: Map, gl: WebGLRenderingContext) => void) | undefined | null +}; export function validateCustomStyleLayer(layerObject: CustomLayerInterface) { const errors = []; diff --git a/src/style/style_layer/fill_extrusion_style_layer.js b/src/style/style_layer/fill_extrusion_style_layer.ts similarity index 94% rename from src/style/style_layer/fill_extrusion_style_layer.js rename to src/style/style_layer/fill_extrusion_style_layer.ts index 900879b811..e31ae86b92 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.js +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import FillExtrusionBucket from '../../data/bucket/fill_extrusion_bucket'; @@ -37,14 +35,16 @@ class FillExtrusionStyleLayer extends StyleLayer { return true; } - queryIntersectsFeature(queryGeometry: Array, - feature: VectorTileFeature, - featureState: FeatureState, - geometry: Array>, - zoom: number, - transform: Transform, - pixelsToTileUnits: number, - pixelPosMatrix: Float32Array): boolean | number { + queryIntersectsFeature( + queryGeometry: Array, + feature: VectorTileFeature, + featureState: FeatureState, + geometry: Array>, + zoom: number, + transform: Transform, + pixelsToTileUnits: number, + pixelPosMatrix: Float32Array + ): boolean | number { const translatedPolygon = translate(queryGeometry, this.paint.get('fill-extrusion-translate'), diff --git a/src/style/style_layer/fill_extrusion_style_layer_properties.js b/src/style/style_layer/fill_extrusion_style_layer_properties.ts similarity index 75% rename from src/style/style_layer/fill_extrusion_style_layer_properties.js rename to src/style/style_layer/fill_extrusion_style_layer_properties.ts index 7118f90633..28803d3688 100644 --- a/src/style/style_layer/fill_extrusion_style_layer_properties.js +++ b/src/style/style_layer/fill_extrusion_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -20,16 +19,16 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type PaintProps = {| - "fill-extrusion-opacity": DataConstantProperty, - "fill-extrusion-color": DataDrivenProperty, - "fill-extrusion-translate": DataConstantProperty<[number, number]>, - "fill-extrusion-translate-anchor": DataConstantProperty<"map" | "viewport">, - "fill-extrusion-pattern": CrossFadedDataDrivenProperty, - "fill-extrusion-height": DataDrivenProperty, - "fill-extrusion-base": DataDrivenProperty, - "fill-extrusion-vertical-gradient": DataConstantProperty, -|}; +export type PaintProps = { + "fill-extrusion-opacity": DataConstantProperty, + "fill-extrusion-color": DataDrivenProperty, + "fill-extrusion-translate": DataConstantProperty<[number, number]>, + "fill-extrusion-translate-anchor": DataConstantProperty<"map" | "viewport">, + "fill-extrusion-pattern": CrossFadedDataDrivenProperty, + "fill-extrusion-height": DataDrivenProperty, + "fill-extrusion-base": DataDrivenProperty, + "fill-extrusion-vertical-gradient": DataConstantProperty +}; const paint: Properties = new Properties({ "fill-extrusion-opacity": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-opacity"]), @@ -45,6 +44,6 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint }: $Exact<{ +export default ({ paint } as { paint: Properties -}>); +}); diff --git a/src/style/style_layer/fill_style_layer.js b/src/style/style_layer/fill_style_layer.ts similarity index 82% rename from src/style/style_layer/fill_style_layer.js rename to src/style/style_layer/fill_style_layer.ts index 7afb6bca33..9e6c0db604 100644 --- a/src/style/style_layer/fill_style_layer.js +++ b/src/style/style_layer/fill_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import FillBucket from '../../data/bucket/fill_bucket'; @@ -37,7 +35,7 @@ class FillStyleLayer extends StyleLayer { } } - createBucket(parameters: BucketParameters<*>) { + createBucket(parameters: BucketParameters) { return new FillBucket(parameters); } @@ -45,13 +43,15 @@ class FillStyleLayer extends StyleLayer { return translateDistance(this.paint.get('fill-translate')); } - queryIntersectsFeature(queryGeometry: Array, - feature: VectorTileFeature, - featureState: FeatureState, - geometry: Array>, - zoom: number, - transform: Transform, - pixelsToTileUnits: number): boolean { + queryIntersectsFeature( + queryGeometry: Array, + feature: VectorTileFeature, + featureState: FeatureState, + geometry: Array>, + zoom: number, + transform: Transform, + pixelsToTileUnits: number + ): boolean { const translatedPolygon = translate(queryGeometry, this.paint.get('fill-translate'), this.paint.get('fill-translate-anchor'), diff --git a/src/style/style_layer/fill_style_layer_properties.js b/src/style/style_layer/fill_style_layer_properties.ts similarity index 71% rename from src/style/style_layer/fill_style_layer_properties.js rename to src/style/style_layer/fill_style_layer_properties.ts index 55ff413208..82c46a2f5d 100644 --- a/src/style/style_layer/fill_style_layer_properties.js +++ b/src/style/style_layer/fill_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -19,23 +18,23 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type LayoutProps = {| - "fill-sort-key": DataDrivenProperty, -|}; +export type LayoutProps = { + "fill-sort-key": DataDrivenProperty +}; const layout: Properties = new Properties({ "fill-sort-key": new DataDrivenProperty(styleSpec["layout_fill"]["fill-sort-key"]), }); -export type PaintProps = {| - "fill-antialias": DataConstantProperty, - "fill-opacity": DataDrivenProperty, - "fill-color": DataDrivenProperty, - "fill-outline-color": DataDrivenProperty, - "fill-translate": DataConstantProperty<[number, number]>, - "fill-translate-anchor": DataConstantProperty<"map" | "viewport">, - "fill-pattern": CrossFadedDataDrivenProperty, -|}; +export type PaintProps = { + "fill-antialias": DataConstantProperty, + "fill-opacity": DataDrivenProperty, + "fill-color": DataDrivenProperty, + "fill-outline-color": DataDrivenProperty, + "fill-translate": DataConstantProperty<[number, number]>, + "fill-translate-anchor": DataConstantProperty<"map" | "viewport">, + "fill-pattern": CrossFadedDataDrivenProperty +}; const paint: Properties = new Properties({ "fill-antialias": new DataConstantProperty(styleSpec["paint_fill"]["fill-antialias"]), @@ -50,6 +49,7 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint, layout }: $Exact<{ - paint: Properties, layout: Properties -}>); +export default ({ paint, layout } as { + paint: Properties, + layout: Properties +}); diff --git a/src/style/style_layer/heatmap_style_layer.js b/src/style/style_layer/heatmap_style_layer.ts similarity index 93% rename from src/style/style_layer/heatmap_style_layer.js rename to src/style/style_layer/heatmap_style_layer.ts index a8f115c798..9a194ed1ad 100644 --- a/src/style/style_layer/heatmap_style_layer.js +++ b/src/style/style_layer/heatmap_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import HeatmapBucket from '../../data/bucket/heatmap_bucket'; @@ -15,9 +13,9 @@ import type {LayerSpecification} from '../../style-spec/types'; class HeatmapStyleLayer extends StyleLayer { - heatmapFbo: ?Framebuffer; + heatmapFbo: Framebuffer | undefined | null; colorRamp: RGBAImage; - colorRampTexture: ?Texture; + colorRampTexture: Texture | undefined | null; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; @@ -61,7 +59,7 @@ class HeatmapStyleLayer extends StyleLayer { return 0; } - queryIntersectsFeature(): boolean { + queryIntersectsFeature(): boolean { return false; } diff --git a/src/style/style_layer/heatmap_style_layer_properties.js b/src/style/style_layer/heatmap_style_layer_properties.ts similarity index 80% rename from src/style/style_layer/heatmap_style_layer_properties.js rename to src/style/style_layer/heatmap_style_layer_properties.ts index 53bdaf3baa..7b3512f2fd 100644 --- a/src/style/style_layer/heatmap_style_layer_properties.js +++ b/src/style/style_layer/heatmap_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -20,13 +19,13 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type PaintProps = {| - "heatmap-radius": DataDrivenProperty, - "heatmap-weight": DataDrivenProperty, - "heatmap-intensity": DataConstantProperty, - "heatmap-color": ColorRampProperty, - "heatmap-opacity": DataConstantProperty, -|}; +export type PaintProps = { + "heatmap-radius": DataDrivenProperty, + "heatmap-weight": DataDrivenProperty, + "heatmap-intensity": DataConstantProperty, + "heatmap-color": ColorRampProperty, + "heatmap-opacity": DataConstantProperty +}; const paint: Properties = new Properties({ "heatmap-radius": new DataDrivenProperty(styleSpec["paint_heatmap"]["heatmap-radius"]), @@ -39,6 +38,6 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint }: $Exact<{ +export default ({ paint } as { paint: Properties -}>); +}); diff --git a/src/style/style_layer/hillshade_style_layer.js b/src/style/style_layer/hillshade_style_layer.ts similarity index 98% rename from src/style/style_layer/hillshade_style_layer.js rename to src/style/style_layer/hillshade_style_layer.ts index 782ebe3d56..44e60dac93 100644 --- a/src/style/style_layer/hillshade_style_layer.js +++ b/src/style/style_layer/hillshade_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import properties from './hillshade_style_layer_properties'; diff --git a/src/style/style_layer/hillshade_style_layer_properties.js b/src/style/style_layer/hillshade_style_layer_properties.ts similarity index 77% rename from src/style/style_layer/hillshade_style_layer_properties.js rename to src/style/style_layer/hillshade_style_layer_properties.ts index 7a82d3e36a..fbb31bdaa2 100644 --- a/src/style/style_layer/hillshade_style_layer_properties.js +++ b/src/style/style_layer/hillshade_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -20,14 +19,14 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type PaintProps = {| - "hillshade-illumination-direction": DataConstantProperty, - "hillshade-illumination-anchor": DataConstantProperty<"map" | "viewport">, - "hillshade-exaggeration": DataConstantProperty, - "hillshade-shadow-color": DataConstantProperty, - "hillshade-highlight-color": DataConstantProperty, - "hillshade-accent-color": DataConstantProperty, -|}; +export type PaintProps = { + "hillshade-illumination-direction": DataConstantProperty, + "hillshade-illumination-anchor": DataConstantProperty<"map" | "viewport">, + "hillshade-exaggeration": DataConstantProperty, + "hillshade-shadow-color": DataConstantProperty, + "hillshade-highlight-color": DataConstantProperty, + "hillshade-accent-color": DataConstantProperty +}; const paint: Properties = new Properties({ "hillshade-illumination-direction": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-illumination-direction"]), @@ -41,6 +40,6 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint }: $Exact<{ +export default ({ paint } as { paint: Properties -}>); +}); diff --git a/src/style/style_layer/line_style_layer.js b/src/style/style_layer/line_style_layer.ts similarity index 88% rename from src/style/style_layer/line_style_layer.js rename to src/style/style_layer/line_style_layer.ts index 480975c742..7fce974dfb 100644 --- a/src/style/style_layer/line_style_layer.js +++ b/src/style/style_layer/line_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import StyleLayer from '../style_layer'; @@ -58,7 +56,7 @@ class LineStyleLayer extends StyleLayer { _handleSpecialPaintPropertyUpdate(name: string) { if (name === 'line-gradient') { - const expression: ZoomConstantExpression<'source'> = ((this._transitionablePaint._values['line-gradient'].value.expression): any); + const expression: ZoomConstantExpression<"source"> = (this._transitionablePaint._values['line-gradient'].value.expression as any); this.stepInterpolant = expression._styleExpression.expression instanceof Step; this.gradientVersion = (this.gradientVersion + 1) % MAX_SAFE_INTEGER; } @@ -71,16 +69,16 @@ class LineStyleLayer extends StyleLayer { recalculate(parameters: EvaluationParameters, availableImages: Array) { super.recalculate(parameters, availableImages); - (this.paint._values: any)['line-floorwidth'] = + (this.paint._values as any)['line-floorwidth'] = lineFloorwidthProperty.possiblyEvaluate(this._transitioningPaint._values['line-width'].value, parameters); } - createBucket(parameters: BucketParameters<*>) { + createBucket(parameters: BucketParameters) { return new LineBucket(parameters); } queryRadius(bucket: Bucket): number { - const lineBucket: LineBucket = (bucket: any); + const lineBucket: LineBucket = (bucket as any); const width = getLineWidth( getMaximumPaintValue('line-width', this, lineBucket), getMaximumPaintValue('line-gap-width', this, lineBucket)); @@ -88,13 +86,15 @@ class LineStyleLayer extends StyleLayer { return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate')); } - queryIntersectsFeature(queryGeometry: Array, - feature: VectorTileFeature, - featureState: FeatureState, - geometry: Array>, - zoom: number, - transform: Transform, - pixelsToTileUnits: number): boolean { + queryIntersectsFeature( + queryGeometry: Array, + feature: VectorTileFeature, + featureState: FeatureState, + geometry: Array>, + zoom: number, + transform: Transform, + pixelsToTileUnits: number + ): boolean { const translatedPolygon = translate(queryGeometry, this.paint.get('line-translate'), this.paint.get('line-translate-anchor'), diff --git a/src/style/style_layer/line_style_layer_properties.js b/src/style/style_layer/line_style_layer_properties.ts similarity index 68% rename from src/style/style_layer/line_style_layer_properties.js rename to src/style/style_layer/line_style_layer_properties.ts index 55c635f71e..3ab8939dc8 100644 --- a/src/style/style_layer/line_style_layer_properties.js +++ b/src/style/style_layer/line_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -19,13 +18,13 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type LayoutProps = {| - "line-cap": DataConstantProperty<"butt" | "round" | "square">, - "line-join": DataDrivenProperty<"bevel" | "round" | "miter">, - "line-miter-limit": DataConstantProperty, - "line-round-limit": DataConstantProperty, - "line-sort-key": DataDrivenProperty, -|}; +export type LayoutProps = { + "line-cap": DataConstantProperty<"butt" | "round" | "square">, + "line-join": DataDrivenProperty<"bevel" | "round" | "miter">, + "line-miter-limit": DataConstantProperty, + "line-round-limit": DataConstantProperty, + "line-sort-key": DataDrivenProperty +}; const layout: Properties = new Properties({ "line-cap": new DataConstantProperty(styleSpec["layout_line"]["line-cap"]), @@ -35,19 +34,19 @@ const layout: Properties = new Properties({ "line-sort-key": new DataDrivenProperty(styleSpec["layout_line"]["line-sort-key"]), }); -export type PaintProps = {| - "line-opacity": DataDrivenProperty, - "line-color": DataDrivenProperty, - "line-translate": DataConstantProperty<[number, number]>, - "line-translate-anchor": DataConstantProperty<"map" | "viewport">, - "line-width": DataDrivenProperty, - "line-gap-width": DataDrivenProperty, - "line-offset": DataDrivenProperty, - "line-blur": DataDrivenProperty, - "line-dasharray": CrossFadedProperty>, - "line-pattern": CrossFadedDataDrivenProperty, - "line-gradient": ColorRampProperty, -|}; +export type PaintProps = { + "line-opacity": DataDrivenProperty, + "line-color": DataDrivenProperty, + "line-translate": DataConstantProperty<[number, number]>, + "line-translate-anchor": DataConstantProperty<"map" | "viewport">, + "line-width": DataDrivenProperty, + "line-gap-width": DataDrivenProperty, + "line-offset": DataDrivenProperty, + "line-blur": DataDrivenProperty, + "line-dasharray": CrossFadedProperty>, + "line-pattern": CrossFadedDataDrivenProperty, + "line-gradient": ColorRampProperty +}; const paint: Properties = new Properties({ "line-opacity": new DataDrivenProperty(styleSpec["paint_line"]["line-opacity"]), @@ -66,6 +65,7 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint, layout }: $Exact<{ - paint: Properties, layout: Properties -}>); +export default ({ paint, layout } as { + paint: Properties, + layout: Properties +}); diff --git a/src/style/style_layer/raster_style_layer.js b/src/style/style_layer/raster_style_layer.ts similarity index 98% rename from src/style/style_layer/raster_style_layer.js rename to src/style/style_layer/raster_style_layer.ts index 33033909cb..23de6a3037 100644 --- a/src/style/style_layer/raster_style_layer.js +++ b/src/style/style_layer/raster_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import properties from './raster_style_layer_properties'; diff --git a/src/style/style_layer/raster_style_layer_properties.js b/src/style/style_layer/raster_style_layer_properties.ts similarity index 75% rename from src/style/style_layer/raster_style_layer_properties.js rename to src/style/style_layer/raster_style_layer_properties.ts index 1535616830..a26416c2c1 100644 --- a/src/style/style_layer/raster_style_layer_properties.js +++ b/src/style/style_layer/raster_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -20,16 +19,16 @@ import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; -export type PaintProps = {| - "raster-opacity": DataConstantProperty, - "raster-hue-rotate": DataConstantProperty, - "raster-brightness-min": DataConstantProperty, - "raster-brightness-max": DataConstantProperty, - "raster-saturation": DataConstantProperty, - "raster-contrast": DataConstantProperty, - "raster-resampling": DataConstantProperty<"linear" | "nearest">, - "raster-fade-duration": DataConstantProperty, -|}; +export type PaintProps = { + "raster-opacity": DataConstantProperty, + "raster-hue-rotate": DataConstantProperty, + "raster-brightness-min": DataConstantProperty, + "raster-brightness-max": DataConstantProperty, + "raster-saturation": DataConstantProperty, + "raster-contrast": DataConstantProperty, + "raster-resampling": DataConstantProperty<"linear" | "nearest">, + "raster-fade-duration": DataConstantProperty +}; const paint: Properties = new Properties({ "raster-opacity": new DataConstantProperty(styleSpec["paint_raster"]["raster-opacity"]), @@ -45,6 +44,6 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint }: $Exact<{ +export default ({ paint } as { paint: Properties -}>); +}); diff --git a/src/style/style_layer/symbol_style_layer.js b/src/style/style_layer/symbol_style_layer.ts similarity index 94% rename from src/style/style_layer/symbol_style_layer.js rename to src/style/style_layer/symbol_style_layer.ts index 3725426450..a24d078158 100644 --- a/src/style/style_layer/symbol_style_layer.js +++ b/src/style/style_layer/symbol_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from '../style_layer'; import assert from 'assert'; @@ -93,7 +91,7 @@ class SymbolStyleLayer extends StyleLayer { this._setPaintOverrides(); } - getValueAndResolveTokens(name: *, feature: Feature, canonical: CanonicalTileID, availableImages: Array) { + getValueAndResolveTokens(name: any, feature: Feature, canonical: CanonicalTileID, availableImages: Array) { const value = this.layout.get(name).evaluate(feature, {}, canonical, availableImages); const unevaluated = this._unevaluatedLayout._values[name]; if (!unevaluated.isDataDriven() && !isExpression(unevaluated.value) && value) { @@ -103,7 +101,7 @@ class SymbolStyleLayer extends StyleLayer { return value; } - createBucket(parameters: BucketParameters<*>) { + createBucket(parameters: BucketParameters) { return new SymbolBucket(parameters); } @@ -126,12 +124,12 @@ class SymbolStyleLayer extends StyleLayer { const styleExpression = new StyleExpression(override, overriden.property.specification); let expression = null; if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') { - expression = (new ZoomConstantExpression('source', styleExpression): SourceExpression); + expression = (new ZoomConstantExpression('source', styleExpression) as SourceExpression); } else { expression = (new ZoomDependentExpression('composite', styleExpression, overriden.value.zoomStops, - overriden.value._interpolationType): CompositeExpression); + overriden.value._interpolationType) as CompositeExpression); } this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property, expression, @@ -168,7 +166,7 @@ class SymbolStyleLayer extends StyleLayer { if (hasOverrides) return; if (expression instanceof Literal && typeOf(expression.value) === FormattedType) { - const formatted: Formatted = ((expression.value): any); + const formatted: Formatted = (expression.value as any); checkSections(formatted.sections); } else if (expression instanceof FormatExpression) { checkSections(expression.sections); @@ -177,7 +175,7 @@ class SymbolStyleLayer extends StyleLayer { } }; - const expr: ZoomConstantExpression<'source'> = ((textField.value): any); + const expr: ZoomConstantExpression<"source"> = (textField.value as any); if (expr._styleExpression) { checkExpression(expr._styleExpression.expression); } diff --git a/src/style/style_layer/symbol_style_layer_properties.js b/src/style/style_layer/symbol_style_layer_properties.ts similarity index 62% rename from src/style/style_layer/symbol_style_layer_properties.js rename to src/style/style_layer/symbol_style_layer_properties.ts index d6df3d9974..26e4755ebb 100644 --- a/src/style/style_layer/symbol_style_layer_properties.js +++ b/src/style/style_layer/symbol_style_layer_properties.ts @@ -1,5 +1,4 @@ // This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`. -// @flow /* eslint-disable */ import styleSpec from '../../style-spec/reference/latest'; @@ -23,49 +22,49 @@ import { ColorType } from '../../style-spec/expression/types'; -export type LayoutProps = {| - "symbol-placement": DataConstantProperty<"point" | "line" | "line-center">, - "symbol-spacing": DataConstantProperty, - "symbol-avoid-edges": DataConstantProperty, - "symbol-sort-key": DataDrivenProperty, - "symbol-z-order": DataConstantProperty<"auto" | "viewport-y" | "source">, - "icon-allow-overlap": DataConstantProperty, - "icon-ignore-placement": DataConstantProperty, - "icon-optional": DataConstantProperty, - "icon-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">, - "icon-size": DataDrivenProperty, - "icon-text-fit": DataConstantProperty<"none" | "width" | "height" | "both">, - "icon-text-fit-padding": DataConstantProperty<[number, number, number, number]>, - "icon-image": DataDrivenProperty, - "icon-rotate": DataDrivenProperty, - "icon-padding": DataConstantProperty, - "icon-keep-upright": DataConstantProperty, - "icon-offset": DataDrivenProperty<[number, number]>, - "icon-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, - "icon-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">, - "text-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">, - "text-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">, - "text-field": DataDrivenProperty, - "text-font": DataDrivenProperty>, - "text-size": DataDrivenProperty, - "text-max-width": DataDrivenProperty, - "text-line-height": DataConstantProperty, - "text-letter-spacing": DataDrivenProperty, - "text-justify": DataDrivenProperty<"auto" | "left" | "center" | "right">, - "text-radial-offset": DataDrivenProperty, - "text-variable-anchor": DataConstantProperty>, - "text-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, - "text-max-angle": DataConstantProperty, - "text-writing-mode": DataConstantProperty>, - "text-rotate": DataDrivenProperty, - "text-padding": DataConstantProperty, - "text-keep-upright": DataConstantProperty, - "text-transform": DataDrivenProperty<"none" | "uppercase" | "lowercase">, - "text-offset": DataDrivenProperty<[number, number]>, - "text-allow-overlap": DataConstantProperty, - "text-ignore-placement": DataConstantProperty, - "text-optional": DataConstantProperty, -|}; +export type LayoutProps = { + "symbol-placement": DataConstantProperty<"point" | "line" | "line-center">, + "symbol-spacing": DataConstantProperty, + "symbol-avoid-edges": DataConstantProperty, + "symbol-sort-key": DataDrivenProperty, + "symbol-z-order": DataConstantProperty<"auto" | "viewport-y" | "source">, + "icon-allow-overlap": DataConstantProperty, + "icon-ignore-placement": DataConstantProperty, + "icon-optional": DataConstantProperty, + "icon-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">, + "icon-size": DataDrivenProperty, + "icon-text-fit": DataConstantProperty<"none" | "width" | "height" | "both">, + "icon-text-fit-padding": DataConstantProperty<[number, number, number, number]>, + "icon-image": DataDrivenProperty, + "icon-rotate": DataDrivenProperty, + "icon-padding": DataConstantProperty, + "icon-keep-upright": DataConstantProperty, + "icon-offset": DataDrivenProperty<[number, number]>, + "icon-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "icon-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">, + "text-pitch-alignment": DataConstantProperty<"map" | "viewport" | "auto">, + "text-rotation-alignment": DataConstantProperty<"map" | "viewport" | "auto">, + "text-field": DataDrivenProperty, + "text-font": DataDrivenProperty>, + "text-size": DataDrivenProperty, + "text-max-width": DataDrivenProperty, + "text-line-height": DataConstantProperty, + "text-letter-spacing": DataDrivenProperty, + "text-justify": DataDrivenProperty<"auto" | "left" | "center" | "right">, + "text-radial-offset": DataDrivenProperty, + "text-variable-anchor": DataConstantProperty>, + "text-anchor": DataDrivenProperty<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "text-max-angle": DataConstantProperty, + "text-writing-mode": DataConstantProperty>, + "text-rotate": DataDrivenProperty, + "text-padding": DataConstantProperty, + "text-keep-upright": DataConstantProperty, + "text-transform": DataDrivenProperty<"none" | "uppercase" | "lowercase">, + "text-offset": DataDrivenProperty<[number, number]>, + "text-allow-overlap": DataConstantProperty, + "text-ignore-placement": DataConstantProperty, + "text-optional": DataConstantProperty +}; const layout: Properties = new Properties({ "symbol-placement": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-placement"]), @@ -111,22 +110,22 @@ const layout: Properties = new Properties({ "text-optional": new DataConstantProperty(styleSpec["layout_symbol"]["text-optional"]), }); -export type PaintProps = {| - "icon-opacity": DataDrivenProperty, - "icon-color": DataDrivenProperty, - "icon-halo-color": DataDrivenProperty, - "icon-halo-width": DataDrivenProperty, - "icon-halo-blur": DataDrivenProperty, - "icon-translate": DataConstantProperty<[number, number]>, - "icon-translate-anchor": DataConstantProperty<"map" | "viewport">, - "text-opacity": DataDrivenProperty, - "text-color": DataDrivenProperty, - "text-halo-color": DataDrivenProperty, - "text-halo-width": DataDrivenProperty, - "text-halo-blur": DataDrivenProperty, - "text-translate": DataConstantProperty<[number, number]>, - "text-translate-anchor": DataConstantProperty<"map" | "viewport">, -|}; +export type PaintProps = { + "icon-opacity": DataDrivenProperty, + "icon-color": DataDrivenProperty, + "icon-halo-color": DataDrivenProperty, + "icon-halo-width": DataDrivenProperty, + "icon-halo-blur": DataDrivenProperty, + "icon-translate": DataConstantProperty<[number, number]>, + "icon-translate-anchor": DataConstantProperty<"map" | "viewport">, + "text-opacity": DataDrivenProperty, + "text-color": DataDrivenProperty, + "text-halo-color": DataDrivenProperty, + "text-halo-width": DataDrivenProperty, + "text-halo-blur": DataDrivenProperty, + "text-translate": DataConstantProperty<[number, number]>, + "text-translate-anchor": DataConstantProperty<"map" | "viewport"> +}; const paint: Properties = new Properties({ "icon-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-opacity"]), @@ -148,6 +147,7 @@ const paint: Properties = new Properties({ // Note: without adding the explicit type annotation, Flow infers weaker types // for these objects from their use in the constructor to StyleLayer, as // {layout?: Properties<...>, paint: Properties<...>} -export default ({ paint, layout }: $Exact<{ - paint: Properties, layout: Properties -}>); +export default ({ paint, layout } as { + paint: Properties, + layout: Properties +}); diff --git a/src/style/style_layer/typed_style_layer.js b/src/style/style_layer/typed_style_layer.ts similarity index 67% rename from src/style/style_layer/typed_style_layer.js rename to src/style/style_layer/typed_style_layer.ts index 51cd3a8691..d883465da3 100644 --- a/src/style/style_layer/typed_style_layer.js +++ b/src/style/style_layer/typed_style_layer.ts @@ -1,5 +1,3 @@ -// @flow - import type CircleStyleLayer from './circle_style_layer'; import type FillStyleLayer from './fill_style_layer'; import type FillExtrusionStyleLayer from './fill_extrusion_style_layer'; @@ -8,10 +6,4 @@ import type HillshadeStyleLayer from './hillshade_style_layer'; import type LineStyleLayer from './line_style_layer'; import type SymbolStyleLayer from './symbol_style_layer'; -export type TypedStyleLayer = CircleStyleLayer | - FillStyleLayer | - FillExtrusionStyleLayer | - HeatmapStyleLayer | - HillshadeStyleLayer | - LineStyleLayer | - SymbolStyleLayer; +export type TypedStyleLayer = CircleStyleLayer | FillStyleLayer | FillExtrusionStyleLayer | HeatmapStyleLayer | HillshadeStyleLayer | LineStyleLayer | SymbolStyleLayer; diff --git a/src/style/style_layer_index.js b/src/style/style_layer_index.ts similarity index 84% rename from src/style/style_layer_index.js rename to src/style/style_layer_index.ts index 555c0993dc..d1dd941c0e 100644 --- a/src/style/style_layer_index.js +++ b/src/style/style_layer_index.ts @@ -1,5 +1,3 @@ -// @flow - import StyleLayer from './style_layer'; import createStyleLayer from './create_style_layer'; @@ -10,17 +8,27 @@ import groupByLayout from '../style-spec/group_by_layout'; import type {TypedStyleLayer} from './style_layer/typed_style_layer'; import type {LayerSpecification} from '../style-spec/types'; -export type LayerConfigs = {[_: string]: LayerSpecification }; -export type Family = Array; +export type LayerConfigs = { + [_: string]: LayerSpecification +}; +export type Family = Array; class StyleLayerIndex { - familiesBySource: { [source: string]: { [sourceLayer: string]: Array> } }; - keyCache: { [source: string]: string }; + familiesBySource: { + [source: string]: { + [sourceLayer: string]: Array> + } + }; + keyCache: { + [source: string]: string + }; _layerConfigs: LayerConfigs; - _layers: {[_: string]: StyleLayer }; + _layers: { + [_: string]: StyleLayer + }; - constructor(layerConfigs: ?Array) { + constructor(layerConfigs?: Array | null) { this.keyCache = {}; if (layerConfigs) { this.replace(layerConfigs); diff --git a/src/style/validate_style.js b/src/style/validate_style.ts similarity index 61% rename from src/style/validate_style.js rename to src/style/validate_style.ts index a84a38de69..34a2aa4394 100644 --- a/src/style/validate_style.js +++ b/src/style/validate_style.ts @@ -1,28 +1,27 @@ -// @flow import validateStyleMin from '../style-spec/validate_style.min'; import {ErrorEvent} from '../util/evented'; import type {Evented} from '../util/evented'; type ValidationError = { - message: string, - line: number, - identifier?: string + message: string, + line: number, + identifier?: string }; -export type Validator = (Object) => $ReadOnlyArray; +export type Validator = (a: any) => ReadonlyArray; type ValidateStyle = { - (Object, ?Object): $ReadOnlyArray, - source: Validator, - layer: Validator, - light: Validator, - filter: Validator, - paintProperty: Validator, - layoutProperty: Validator + source: Validator, + layer: Validator, + light: Validator, + filter: Validator, + paintProperty: Validator, + layoutProperty: Validator, + (b: any, a?: any | null): ReadonlyArray }; -export const validateStyle = (validateStyleMin: ValidateStyle); +export const validateStyle = (validateStyleMin as ValidateStyle); export const validateSource = validateStyle.source; export const validateLight = validateStyle.light; @@ -30,7 +29,13 @@ export const validateFilter = validateStyle.filter; export const validatePaintProperty = validateStyle.paintProperty; export const validateLayoutProperty = validateStyle.layoutProperty; -export function emitValidationErrors(emitter: Evented, errors: ?$ReadOnlyArray<{message: string, identifier?: string}>): boolean { +export function emitValidationErrors( + emitter: Evented, + errors?: ReadonlyArray<{ + message: string, + identifier?: string + }> | null +): boolean { let hasErrors = false; if (errors && errors.length) { for (const error of errors) { diff --git a/src/style/zoom_history.js b/src/style/zoom_history.ts similarity index 99% rename from src/style/zoom_history.js rename to src/style/zoom_history.ts index b2f684e2a6..b05aeece18 100644 --- a/src/style/zoom_history.js +++ b/src/style/zoom_history.ts @@ -1,5 +1,3 @@ -// @flow - class ZoomHistory { lastZoom: number; lastFloorZoom: number; diff --git a/src/symbol/anchor.js b/src/symbol/anchor.ts similarity index 98% rename from src/symbol/anchor.js rename to src/symbol/anchor.ts index cd756cc72f..86681bdf07 100644 --- a/src/symbol/anchor.js +++ b/src/symbol/anchor.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import {register} from '../util/web_worker_transfer'; diff --git a/src/symbol/check_max_angle.js b/src/symbol/check_max_angle.ts similarity index 99% rename from src/symbol/check_max_angle.js rename to src/symbol/check_max_angle.ts index f6eddf0949..7ccb11b298 100644 --- a/src/symbol/check_max_angle.js +++ b/src/symbol/check_max_angle.ts @@ -1,5 +1,3 @@ -// @flow - export default checkMaxAngle; import type Point from '@mapbox/point-geometry'; diff --git a/src/symbol/clip_line.js b/src/symbol/clip_line.ts similarity index 99% rename from src/symbol/clip_line.js rename to src/symbol/clip_line.ts index 1abfea4841..ee7157e045 100644 --- a/src/symbol/clip_line.js +++ b/src/symbol/clip_line.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; export default clipLine; diff --git a/src/symbol/collision_feature.js b/src/symbol/collision_feature.ts similarity index 96% rename from src/symbol/collision_feature.js rename to src/symbol/collision_feature.ts index faf3eb48a5..f1d71ac452 100644 --- a/src/symbol/collision_feature.js +++ b/src/symbol/collision_feature.ts @@ -1,6 +1,4 @@ -// @flow - -import type {CollisionBoxArray} from '../data/array_types'; +import type { CollisionBoxArray } from '../data/array_types'; import Point from '@mapbox/point-geometry'; import type Anchor from './anchor'; @@ -15,7 +13,7 @@ import type Anchor from './anchor'; class CollisionFeature { boxStartIndex: number; boxEndIndex: number; - circleDiameter: ?number; + circleDiameter: number | undefined | null; /** * Create a CollisionFeature, adding its collision box data to the given collisionBoxArray in the process. @@ -33,7 +31,7 @@ class CollisionFeature { featureIndex: number, sourceLayerIndex: number, bucketIndex: number, - shaped: Object, + shaped: any, boxScale: number, padding: number, alignLine: boolean, diff --git a/src/symbol/collision_index.js b/src/symbol/collision_index.ts similarity index 94% rename from src/symbol/collision_index.js rename to src/symbol/collision_index.ts index f553e61076..676999dbd6 100644 --- a/src/symbol/collision_index.js +++ b/src/symbol/collision_index.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import clipLine from './clip_line'; import PathInterpolator from './path_interpolator'; @@ -66,7 +64,16 @@ class CollisionIndex { this.gridBottomBoundary = transform.height + 2 * viewportPadding; } - placeCollisionBox(collisionBox: SingleCollisionBox, allowOverlap: boolean, textPixelRatio: number, posMatrix: mat4, collisionGroupPredicate?: any): { box: Array, offscreen: boolean } { + placeCollisionBox( + collisionBox: SingleCollisionBox, + allowOverlap: boolean, + textPixelRatio: number, + posMatrix: mat4, + collisionGroupPredicate?: any + ): { + box: Array, + offscreen: boolean + } { const projectedPoint = this.projectAndGetPerspectiveRatio(posMatrix, collisionBox.anchorPointX, collisionBox.anchorPointY); const tileToViewport = textPixelRatio * projectedPoint.perspectiveRatio; const tlX = collisionBox.x1 * tileToViewport + projectedPoint.point.x; @@ -88,19 +95,25 @@ class CollisionIndex { }; } - placeCollisionCircles(allowOverlap: boolean, - symbol: any, - lineVertexArray: SymbolLineVertexArray, - glyphOffsetArray: GlyphOffsetArray, - fontSize: number, - posMatrix: mat4, - labelPlaneMatrix: mat4, - labelToScreenMatrix?: mat4, - showCollisionCircles: boolean, - pitchWithMap: boolean, - collisionGroupPredicate?: any, - circlePixelDiameter: number, - textPixelPadding: number): { circles: Array, offscreen: boolean, collisionDetected: boolean } { + placeCollisionCircles( + allowOverlap: boolean, + symbol: any, + lineVertexArray: SymbolLineVertexArray, + glyphOffsetArray: GlyphOffsetArray, + fontSize: number, + posMatrix: mat4, + labelPlaneMatrix: mat4, + labelToScreenMatrix: mat4 | undefined | null, + showCollisionCircles: boolean, + pitchWithMap: boolean, + collisionGroupPredicate: any | undefined | null, + circlePixelDiameter: number, + textPixelPadding: number + ): { + circles: Array, + offscreen: boolean, + collisionDetected: boolean + } { const placedCollisionCircles = []; const tileUnitAnchorPoint = new Point(symbol.anchorX, symbol.anchorY); diff --git a/src/symbol/cross_tile_symbol_index.js b/src/symbol/cross_tile_symbol_index.ts similarity index 93% rename from src/symbol/cross_tile_symbol_index.js rename to src/symbol/cross_tile_symbol_index.ts index 103d839961..7c536037b8 100644 --- a/src/symbol/cross_tile_symbol_index.js +++ b/src/symbol/cross_tile_symbol_index.ts @@ -1,5 +1,3 @@ -// @flow - import EXTENT from '../data/extent'; import {SymbolInstanceArray} from '../data/array_types'; @@ -29,13 +27,15 @@ const roundingFactor = 512 / EXTENT / 2; class TileLayerIndex { tileID: OverscaledTileID; - indexedSymbolInstances: {[_: number]: Array<{ + indexedSymbolInstances: { + [_: number]: Array<{ crossTileID: number, coord: { - x: number, - y: number + x: number, + y: number } - }>}; + }> + }; bucketInstanceId: number; constructor(tileID: OverscaledTileID, symbolInstances: SymbolInstanceArray, bucketInstanceId: number) { @@ -73,7 +73,9 @@ class TileLayerIndex { }; } - findMatches(symbolInstances: SymbolInstanceArray, newTileID: OverscaledTileID, zoomCrossTileIDs: {[crossTileID: number]: boolean}) { + findMatches(symbolInstances: SymbolInstanceArray, newTileID: OverscaledTileID, zoomCrossTileIDs: { + [crossTileID: number]: boolean + }) { const tolerance = this.tileID.canonical.z < newTileID.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - newTileID.canonical.z); for (let i = 0; i < symbolInstances.length; i++) { @@ -120,8 +122,16 @@ class CrossTileIDs { } class CrossTileSymbolLayerIndex { - indexes: {[zoom: string | number]: {[tileId: string | number]: TileLayerIndex}}; - usedCrossTileIDs: {[zoom: string | number]: {[crossTileID: number]: boolean}}; + indexes: { + [zoom in string | number]: { + [tileId in string | number]: TileLayerIndex; + }; + }; + usedCrossTileIDs: { + [zoom in string | number]: { + [crossTileID: number]: boolean + }; + }; lng: number; constructor() { @@ -217,13 +227,15 @@ class CrossTileSymbolLayerIndex { removeBucketCrossTileIDs(zoom: string | number, removedBucket: TileLayerIndex) { for (const key in removedBucket.indexedSymbolInstances) { - for (const symbolInstance of removedBucket.indexedSymbolInstances[(key: any)]) { + for (const symbolInstance of removedBucket.indexedSymbolInstances[(key as any)]) { delete this.usedCrossTileIDs[zoom][symbolInstance.crossTileID]; } } } - removeStaleBuckets(currentIDs: { [string | number]: boolean }) { + removeStaleBuckets(currentIDs: { + [k in string | number]: boolean; + }) { let tilesChanged = false; for (const z in this.indexes) { const zoomIndexes = this.indexes[z]; @@ -240,10 +252,14 @@ class CrossTileSymbolLayerIndex { } class CrossTileSymbolIndex { - layerIndexes: {[layerId: string]: CrossTileSymbolLayerIndex}; + layerIndexes: { + [layerId: string]: CrossTileSymbolLayerIndex + }; crossTileIDs: CrossTileIDs; maxBucketInstanceId: number; - bucketsInCurrentPlacement: {[_: number]: boolean}; + bucketsInCurrentPlacement: { + [_: number]: boolean + }; constructor() { this.layerIndexes = {}; @@ -264,7 +280,7 @@ class CrossTileSymbolIndex { layerIndex.handleWrapJump(lng); for (const tile of tiles) { - const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket); + const symbolBucket = (tile.getBucket(styleLayer) as any as SymbolBucket); if (!symbolBucket || styleLayer.id !== symbolBucket.layerIds[0]) continue; diff --git a/src/symbol/get_anchors.js b/src/symbol/get_anchors.ts similarity index 91% rename from src/symbol/get_anchors.js rename to src/symbol/get_anchors.ts index 9b034b4bc8..9c85142ccf 100644 --- a/src/symbol/get_anchors.js +++ b/src/symbol/get_anchors.ts @@ -1,6 +1,4 @@ -// @flow - -import {number as interpolate} from '../style-spec/util/interpolate'; +import { number as interpolate } from '../style-spec/util/interpolate'; import Anchor from '../symbol/anchor'; import checkMaxAngle from './check_max_angle'; @@ -18,15 +16,17 @@ function getLineLength(line: Array): number { return lineLength; } -function getAngleWindowSize(shapedText: ?Shaping, - glyphSize: number, - boxScale: number): number { +function getAngleWindowSize( + shapedText: Shaping | undefined | null, + glyphSize: number, + boxScale: number +): number { return shapedText ? 3 / 5 * glyphSize * boxScale : 0; } -function getShapedLabelLength(shapedText: ?Shaping, shapedIcon: ?PositionedIcon): number { +function getShapedLabelLength(shapedText?: Shaping | null, shapedIcon?: PositionedIcon | null): number { return Math.max( shapedText ? shapedText.right - shapedText.left : 0, shapedIcon ? shapedIcon.right - shapedIcon.left : 0); @@ -34,8 +34,8 @@ function getShapedLabelLength(shapedText: ?Shaping, shapedIcon: ?PositionedIcon) function getCenterAnchor(line: Array, maxAngle: number, - shapedText: ?Shaping, - shapedIcon: ?PositionedIcon, + shapedText: Shaping | undefined | null, + shapedIcon: PositionedIcon | undefined | null, glyphSize: number, boxScale: number) { const angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale); @@ -73,8 +73,8 @@ function getCenterAnchor(line: Array, function getAnchors(line: Array, spacing: number, maxAngle: number, - shapedText: ?Shaping, - shapedIcon: ?PositionedIcon, + shapedText: Shaping | undefined | null, + shapedIcon: PositionedIcon | undefined | null, glyphSize: number, boxScale: number, overscaling: number, diff --git a/src/symbol/grid_index.js b/src/symbol/grid_index.ts similarity index 96% rename from src/symbol/grid_index.js rename to src/symbol/grid_index.ts index fa1dc10343..ba23bc8cd6 100644 --- a/src/symbol/grid_index.js +++ b/src/symbol/grid_index.ts @@ -1,5 +1,3 @@ -// @flow - /** * GridIndex is a data structure for testing the intersection of * circles and rectangles in a 2d plane. @@ -153,15 +151,15 @@ class GridIndex { } query(x1: number, y1: number, x2: number, y2: number, predicate?: any): Array { - return (this._query(x1, y1, x2, y2, false, predicate): any); + return this._query(x1, y1, x2, y2, false, predicate) as any; } - hitTest(x1: number, y1: number, x2: number, y2: number, predicate?: any): boolean { - return (this._query(x1, y1, x2, y2, true, predicate): any); + hitTest(x1: number, y1: number, x2: number, y2: number, predicate?: any): boolean { + return this._query(x1, y1, x2, y2, true, predicate) as any; } hitTestCircle(x: number, y: number, radius: number, predicate?: any): boolean { - return (this._queryCircle(x, y, radius, true, predicate): any); + return this._queryCircle(x, y, radius, true, predicate) as any; } _queryCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any) { @@ -309,7 +307,15 @@ class GridIndex { return (bothRadii * bothRadii) > (dx * dx + dy * dy); } - _circleAndRectCollide(circleX: number, circleY: number, radius: number, x1: number, y1: number, x2: number, y2: number): boolean { + _circleAndRectCollide( + circleX: number, + circleY: number, + radius: number, + x1: number, + y1: number, + x2: number, + y2: number + ): boolean { const halfRectWidth = (x2 - x1) / 2; const distX = Math.abs(circleX - (x1 + halfRectWidth)); if (distX > (halfRectWidth + radius)) { diff --git a/src/symbol/mergelines.js b/src/symbol/mergelines.ts similarity index 88% rename from src/symbol/mergelines.js rename to src/symbol/mergelines.ts index 34b5d38349..60c05ba6dc 100644 --- a/src/symbol/mergelines.js +++ b/src/symbol/mergelines.ts @@ -1,10 +1,12 @@ -// @flow - -import type {SymbolFeature} from '../data/bucket/symbol_bucket'; - -export default function (features: Array): Array { - const leftIndex: {[_: string]: number} = {}; - const rightIndex: {[_: string]: number} = {}; +import type { SymbolFeature } from '../data/bucket/symbol_bucket'; + +export default function(features: Array): Array { + const leftIndex: { + [_: string]: number + } = {}; + const rightIndex: { + [_: string]: number + } = {}; const mergedFeatures = []; let mergedIndex = 0; @@ -60,7 +62,7 @@ export default function (features: Array): Array { delete rightIndex[rightKey]; rightIndex[getKey(text, mergedFeatures[i].geometry, true)] = i; - mergedFeatures[j].geometry = (null: any); + mergedFeatures[j].geometry = (null as any); } else if (leftKey in rightIndex) { // found mergeable line adjacent to the start of the current line, merge diff --git a/src/symbol/one_em.js b/src/symbol/one_em.ts similarity index 93% rename from src/symbol/one_em.js rename to src/symbol/one_em.ts index 7e20115bd9..d66d5e838d 100644 --- a/src/symbol/one_em.js +++ b/src/symbol/one_em.ts @@ -1,4 +1,3 @@ -// @flow // ONE_EM constant used to go between "em" units used in style spec and "points" used internally for layout export default 24; diff --git a/src/symbol/opacity_state.js b/src/symbol/opacity_state.ts similarity index 84% rename from src/symbol/opacity_state.js rename to src/symbol/opacity_state.ts index 1649b2c2a0..101bb3c2ae 100644 --- a/src/symbol/opacity_state.js +++ b/src/symbol/opacity_state.ts @@ -1,11 +1,9 @@ -// @flow - -import {register} from '../util/web_worker_transfer'; +import { register } from '../util/web_worker_transfer'; class OpacityState { opacity: number; targetOpacity: number; - time: number + time: number; constructor() { this.opacity = 0; diff --git a/src/symbol/path_interpolator.js b/src/symbol/path_interpolator.ts similarity index 91% rename from src/symbol/path_interpolator.js rename to src/symbol/path_interpolator.ts index f64467a5a9..7251a00b05 100644 --- a/src/symbol/path_interpolator.js +++ b/src/symbol/path_interpolator.ts @@ -1,6 +1,4 @@ -// @flow - -import {clamp} from '../util/util'; +import { clamp } from '../util/util'; import Point from '@mapbox/point-geometry'; import assert from 'assert'; @@ -11,11 +9,11 @@ class PathInterpolator { padding: number; _distances: Array; - constructor(points_: ?Array, padding_: ?number) { + constructor(points_?: Array | null, padding_?: number | null) { this.reset(points_, padding_); } - reset(points_: ?Array, padding_: ?number) { + reset(points_?: Array | null, padding_?: number | null) { this.points = points_ || []; // Compute cumulative distance from first point to every other point in the segment. diff --git a/src/symbol/placement.js b/src/symbol/placement.ts similarity index 94% rename from src/symbol/placement.js rename to src/symbol/placement.ts index b7e06fb865..35113d1ac4 100644 --- a/src/symbol/placement.js +++ b/src/symbol/placement.ts @@ -1,5 +1,3 @@ -// @flow - import CollisionIndex from './collision_index'; import EXTENT from '../data/extent'; import * as symbolSize from './symbol_size'; @@ -14,7 +12,8 @@ import type Transform from '../geo/transform'; import type StyleLayer from '../style/style_layer'; import type Tile from '../source/tile'; -import type SymbolBucket, {CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket'; +import type SymbolBucket from '../data/bucket/symbol_bucket'; +import type { CollisionArrays, SingleCollisionBox } from '../data/bucket/symbol_bucket'; import type {CollisionBoxArray, CollisionVertexArray, SymbolInstance} from '../data/array_types'; import type FeatureIndex from '../data/feature_index'; import type {OverscaledTileID} from '../source/tile_id'; @@ -23,7 +22,7 @@ import type {TextAnchor} from './symbol_layout'; class OpacityState { opacity: number; placed: boolean; - constructor(prevState: ?OpacityState, increment: number, placed: boolean, skipFade: ?boolean) { + constructor(prevState: OpacityState | undefined | null, increment: number, placed: boolean, skipFade?: boolean | null) { if (prevState) { this.opacity = Math.max(0, Math.min(1, prevState.opacity + (prevState.placed ? increment : -increment))); } else { @@ -39,7 +38,7 @@ class OpacityState { class JointOpacityState { text: OpacityState; icon: OpacityState; - constructor(prevState: ?JointOpacityState, increment: number, placedText: boolean, placedIcon: boolean, skipFade: ?boolean) { + constructor(prevState: JointOpacityState | undefined | null, increment: number, placedText: boolean, placedIcon: boolean, skipFade?: boolean | null) { this.text = new OpacityState(prevState ? prevState.text : null, increment, placedText, skipFade); this.icon = new OpacityState(prevState ? prevState.icon : null, increment, placedIcon, skipFade); } @@ -82,7 +81,7 @@ export class RetainedQueryData { sourceLayerIndex: number; bucketIndex: number; tileID: OverscaledTileID; - featureSortOrder: ?Array + featureSortOrder: Array | undefined | null; constructor(bucketInstanceId: number, featureIndex: FeatureIndex, sourceLayerIndex: number, @@ -96,10 +95,15 @@ export class RetainedQueryData { } } -type CollisionGroup = { ID: number, predicate?: any }; +type CollisionGroup = { + ID: number, + predicate?: any +}; class CollisionGroups { - collisionGroups: {[groupName: string]: CollisionGroup}; + collisionGroups: { + [groupName: string]: CollisionGroup + }; maxGroupID: number; crossSourceCollisions: boolean; @@ -130,7 +134,13 @@ class CollisionGroups { } } -function calculateVariableLayoutShift(anchor: TextAnchor, width: number, height: number, textOffset: [number, number], textBoxScale: number): Point { +function calculateVariableLayoutShift( + anchor: TextAnchor, + width: number, + height: number, + textOffset: [number, number], + textBoxScale: number +): Point { const {horizontalAlign, verticalAlign} = getAnchorAlignment(anchor); const shiftX = -(horizontalAlign - 0.5) * width; const shiftY = -(verticalAlign - 0.5) * height; @@ -162,33 +172,33 @@ function shiftVariableCollisionBox(collisionBox: SingleCollisionBox, } export type VariableOffset = { - textOffset: [number, number], - width: number, - height: number, - anchor: TextAnchor, - textBoxScale: number, - prevAnchor?: TextAnchor + textOffset: [number, number], + width: number, + height: number, + anchor: TextAnchor, + textBoxScale: number, + prevAnchor?: TextAnchor }; type TileLayerParameters = { - bucket: SymbolBucket, - layout: any, - posMatrix: mat4, - textLabelPlaneMatrix: mat4, - labelToScreenMatrix: mat4, - scale: number, - textPixelRatio: number, - holdingForFade: boolean, - collisionBoxArray: ?CollisionBoxArray, - partiallyEvaluatedTextSize: any, - collisionGroup: any + bucket: SymbolBucket, + layout: any, + posMatrix: mat4, + textLabelPlaneMatrix: mat4, + labelToScreenMatrix: mat4, + scale: number, + textPixelRatio: number, + holdingForFade: boolean, + collisionBoxArray: CollisionBoxArray | undefined | null, + partiallyEvaluatedTextSize: any, + collisionGroup: any }; export type BucketPart = { - sortKey?: number | void, - symbolInstanceStart: number, - symbolInstanceEnd: number, - parameters: TileLayerParameters + sortKey?: number | void, + symbolInstanceStart: number, + symbolInstanceEnd: number, + parameters: TileLayerParameters }; export type CrossTileID = string | number; @@ -196,20 +206,32 @@ export type CrossTileID = string | number; export class Placement { transform: Transform; collisionIndex: CollisionIndex; - placements: { [_: CrossTileID]: JointPlacement }; - opacities: { [_: CrossTileID]: JointOpacityState }; - variableOffsets: {[_: CrossTileID]: VariableOffset }; - placedOrientations: {[_: CrossTileID]: number }; + placements: { + [_ in CrossTileID]: JointPlacement; + }; + opacities: { + [_ in CrossTileID]: JointOpacityState; + }; + variableOffsets: { + [_ in CrossTileID]: VariableOffset; + }; + placedOrientations: { + [_ in CrossTileID]: number; + }; commitTime: number; prevZoomAdjustment: number; lastPlacementChangeTime: number; stale: boolean; fadeDuration: number; - retainedQueryData: {[_: number]: RetainedQueryData}; + retainedQueryData: { + [_: number]: RetainedQueryData + }; collisionGroups: CollisionGroups; - prevPlacement: ?Placement; + prevPlacement: Placement | undefined | null; zoomAtLastRecencyCheck: number; - collisionCircleArrays: {[any]: CollisionCircleArray}; + collisionCircleArrays: { + [k in any]: CollisionCircleArray; + }; constructor(transform: Transform, fadeDuration: number, crossSourceCollisions: boolean, prevPlacement?: Placement) { this.transform = transform.clone(); @@ -233,7 +255,7 @@ export class Placement { } getBucketParts(results: Array, styleLayer: StyleLayer, tile: Tile, sortAcrossTiles: boolean) { - const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket); + const symbolBucket = (tile.getBucket(styleLayer) as any as SymbolBucket); const bucketFeatureIndex = tile.latestFeatureIndex; if (!symbolBucket || !bucketFeatureIndex || styleLayer.id !== symbolBucket.layerIds[0]) return; @@ -308,10 +330,29 @@ export class Placement { } } - attemptAnchorPlacement(anchor: TextAnchor, textBox: SingleCollisionBox, width: number, height: number, - textBoxScale: number, rotateWithMap: boolean, - pitchWithMap: boolean, textPixelRatio: number, posMatrix: mat4, collisionGroup: CollisionGroup, - textAllowOverlap: boolean, symbolInstance: SymbolInstance, bucket: SymbolBucket, orientation: number, iconBox: ?SingleCollisionBox): ?{ shift: Point, placedGlyphBoxes: { box: Array, offscreen: boolean } } { + attemptAnchorPlacement( + anchor: TextAnchor, + textBox: SingleCollisionBox, + width: number, + height: number, + textBoxScale: number, + rotateWithMap: boolean, + pitchWithMap: boolean, + textPixelRatio: number, + posMatrix: mat4, + collisionGroup: CollisionGroup, + textAllowOverlap: boolean, + symbolInstance: SymbolInstance, + bucket: SymbolBucket, + orientation: number, + iconBox?: SingleCollisionBox | null + ): { + shift: Point, + placedGlyphBoxes: { + box: Array, + offscreen: boolean + } + } | undefined | null { const textOffset = [symbolInstance.textOffset0, symbolInstance.textOffset1]; const shift = calculateVariableLayoutShift(anchor, width, height, textOffset, textBoxScale); @@ -361,7 +402,9 @@ export class Placement { } } - placeLayerBucketPart(bucketPart: Object, seenCrossTileIDs: { [string | number]: boolean }, showCollisionBoxes: boolean) { + placeLayerBucketPart(bucketPart: any, seenCrossTileIDs: { + [k in string | number]: boolean; + }, showCollisionBoxes: boolean) { const { bucket, @@ -518,7 +561,10 @@ export class Placement { const variableIconBox = hasIconTextFit && !iconAllowOverlap ? collisionIconBox : null; - let placedBox: ?{ box: Array, offscreen: boolean } = {box: [], offscreen: false}; + let placedBox: { + box: Array, + offscreen: boolean + } | undefined | null = {box: [], offscreen: false}; const placementAttempts = textAllowOverlap ? anchors.length * 2 : anchors.length; for (let i = 0; i < placementAttempts; ++i) { const anchor = anchors[i % anchors.length]; @@ -838,14 +884,16 @@ export class Placement { updateLayerOpacities(styleLayer: StyleLayer, tiles: Array) { const seenCrossTileIDs = {}; for (const tile of tiles) { - const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket); + const symbolBucket = (tile.getBucket(styleLayer) as any as SymbolBucket); if (symbolBucket && tile.latestFeatureIndex && styleLayer.id === symbolBucket.layerIds[0]) { this.updateBucketOpacities(symbolBucket, seenCrossTileIDs, tile.collisionBoxArray); } } } - updateBucketOpacities(bucket: SymbolBucket, seenCrossTileIDs: { [string | number]: boolean }, collisionBoxArray: ?CollisionBoxArray) { + updateBucketOpacities(bucket: SymbolBucket, seenCrossTileIDs: { + [k in string | number]: boolean; + }, collisionBoxArray?: CollisionBoxArray | null) { if (bucket.hasTextData()) bucket.text.opacityVertexArray.clear(); if (bucket.hasIconData()) bucket.icon.opacityVertexArray.clear(); if (bucket.hasIconCollisionBoxData()) bucket.iconCollisionBox.collisionVertexArray.clear(); @@ -955,14 +1003,14 @@ export class Placement { const horizontalOpacity = useHorizontal ? packedOpacity : PACKED_HIDDEN_OPACITY; addOpacities(bucket.icon, symbolInstance.numIconVertices, horizontalOpacity); bucket.icon.placedSymbolArray.get(symbolInstance.placedIconSymbolIndex).hidden = - (opacityState.icon.isHidden(): any); + (opacityState.icon.isHidden() as any); } if (symbolInstance.verticalPlacedIconSymbolIndex >= 0) { const verticalOpacity = !useHorizontal ? packedOpacity : PACKED_HIDDEN_OPACITY; addOpacities(bucket.icon, symbolInstance.numVerticalIconVertices, verticalOpacity); bucket.icon.placedSymbolArray.get(symbolInstance.verticalPlacedIconSymbolIndex).hidden = - (opacityState.icon.isHidden(): any); + (opacityState.icon.isHidden() as any); } } diff --git a/src/symbol/projection.js b/src/symbol/projection.ts similarity index 99% rename from src/symbol/projection.js rename to src/symbol/projection.ts index e0c1614298..ba0ba00275 100644 --- a/src/symbol/projection.js +++ b/src/symbol/projection.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import {mat4, vec4} from 'gl-matrix'; @@ -346,7 +344,9 @@ function placeGlyphAlongLine(offsetX: number, lineEndIndex: number, lineVertexArray: SymbolLineVertexArray, labelPlaneMatrix: mat4, - projectionCache: {[_: number]: Point}) { + projectionCache: { + [_: number]: Point + }) { const combinedOffsetX = flip ? offsetX - lineOffsetX : diff --git a/src/symbol/quads.js b/src/symbol/quads.ts similarity index 93% rename from src/symbol/quads.js rename to src/symbol/quads.ts index 9b1c100620..adb0e1a9c1 100644 --- a/src/symbol/quads.js +++ b/src/symbol/quads.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf'; @@ -27,24 +25,24 @@ import ONE_EM from './one_em'; * @private */ export type SymbolQuad = { - tl: Point, - tr: Point, - bl: Point, - br: Point, - tex: { - x: number, - y: number, - w: number, - h: number - }, - pixelOffsetTL: Point, - pixelOffsetBR: Point, - writingMode: any | void, - glyphOffset: [number, number], - sectionIndex: number, - isSDF: boolean, - minFontScaleX: number, - minFontScaleY: number + tl: Point, + tr: Point, + bl: Point, + br: Point, + tex: { + x: number, + y: number, + w: number, + h: number + }, + pixelOffsetTL: Point, + pixelOffsetBR: Point, + writingMode: any | void, + glyphOffset: [number, number], + sectionIndex: number, + isSDF: boolean, + minFontScaleX: number, + minFontScaleY: number }; // If you have a 10px icon that isn't perfectly aligned to the pixel grid it will cover 11 actual @@ -57,10 +55,11 @@ const border = IMAGE_PADDING; * @private */ export function getIconQuads( - shapedIcon: PositionedIcon, - iconRotate: number, - isSDFIcon: boolean, - hasIconTextFit: boolean): Array { + shapedIcon: PositionedIcon, + iconRotate: number, + isSDFIcon: boolean, + hasIconTextFit: boolean +): Array { const quads = []; const image = shapedIcon.image; @@ -219,14 +218,18 @@ function getPxOffset(fixedOffset, fixedSize, stretchOffset, stretchSize) { * Create the quads used for rendering a text label. * @private */ -export function getGlyphQuads(anchor: Anchor, - shaping: Shaping, - textOffset: [number, number], - layer: SymbolStyleLayer, - alongLine: boolean, - feature: Feature, - imageMap: {[_: string]: StyleImage}, - allowVerticalPlacement: boolean): Array { +export function getGlyphQuads( + anchor: Anchor, + shaping: Shaping, + textOffset: [number, number], + layer: SymbolStyleLayer, + alongLine: boolean, + feature: Feature, + imageMap: { + [_: string]: StyleImage + }, + allowVerticalPlacement: boolean +): Array { const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}) * Math.PI / 180; const quads = []; diff --git a/src/symbol/shaping.js b/src/symbol/shaping.ts similarity index 86% rename from src/symbol/shaping.js rename to src/symbol/shaping.ts index dafdd6ecfa..447b547dbd 100644 --- a/src/symbol/shaping.js +++ b/src/symbol/shaping.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import { charHasUprightVerticalOrientation, @@ -29,34 +27,34 @@ export {shapeText, shapeIcon, fitIconToText, getAnchorAlignment, WritingMode, SH // The position of a glyph relative to the text's anchor point. export type PositionedGlyph = { - glyph: number, - imageName: string | null, - x: number, - y: number, - vertical: boolean, - scale: number, - fontStack: string, - sectionIndex: number, - metrics: GlyphMetrics, - rect: Rect | null + glyph: number, + imageName: string | null, + x: number, + y: number, + vertical: boolean, + scale: number, + fontStack: string, + sectionIndex: number, + metrics: GlyphMetrics, + rect: Rect | null }; export type PositionedLine = { - positionedGlyphs: Array, - lineOffset: number + positionedGlyphs: Array, + lineOffset: number }; // A collection of positioned glyphs and some metadata export type Shaping = { - positionedLines: Array, - top: number, - bottom: number, - left: number, - right: number, - writingMode: 1 | 2, - text: string, - iconsInText: boolean, - verticalizable: boolean + positionedLines: Array, + top: number, + bottom: number, + left: number, + right: number, + writingMode: 1 | 2, + text: string, + iconsInText: boolean, + verticalizable: boolean }; function isEmpty(positionedLines: Array) { @@ -68,8 +66,8 @@ function isEmpty(positionedLines: Array) { return true; } -export type SymbolAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; -export type TextJustify = 'left' | 'center' | 'right'; +export type SymbolAnchor = "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; +export type TextJustify = "left" | "center" | "right"; // Max number of images in label is 6401 U+E000–U+F8FF that covers // Basic Multilingual Plane Unicode Private Use Area (PUA). @@ -106,8 +104,8 @@ class SectionOptions { class TaggedString { text: string; - sectionIndex: Array // maps each character in 'text' to its corresponding entry in 'sections' - sections: Array + sectionIndex: Array; // maps each character in 'text' to its corresponding entry in 'sections' + sections: Array; imageSectionID: number | null; constructor() { @@ -236,22 +234,34 @@ function breakLines(input: TaggedString, lineBreakPoints: Array): Array< return lines; } -function shapeText(text: Formatted, - glyphMap: {[_: string]: {[_: number]: ?StyleGlyph}}, - glyphPositions: {[_: string]: {[_: number]: GlyphPosition}}, - imagePositions: {[_: string]: ImagePosition}, - defaultFontStack: string, - maxWidth: number, - lineHeight: number, - textAnchor: SymbolAnchor, - textJustify: TextJustify, - spacing: number, - translate: [number, number], - writingMode: 1 | 2, - allowVerticalPlacement: boolean, - symbolPlacement: string, - layoutTextSize: number, - layoutTextSizeThisZoom: number): Shaping | false { +function shapeText( + text: Formatted, + glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }, + glyphPositions: { + [_: string]: { + [_: number]: GlyphPosition + } + }, + imagePositions: { + [_: string]: ImagePosition + }, + defaultFontStack: string, + maxWidth: number, + lineHeight: number, + textAnchor: SymbolAnchor, + textJustify: TextJustify, + spacing: number, + translate: [number, number], + writingMode: 1 | 2, + allowVerticalPlacement: boolean, + symbolPlacement: string, + layoutTextSize: number, + layoutTextSizeThisZoom: number +): Shaping | false { const logicalInput = TaggedString.fromFeature(text, defaultFontStack); if (writingMode === WritingMode.vertical) { @@ -317,7 +327,9 @@ function shapeText(text: Formatted, // using computed properties due to https://github.com/facebook/flow/issues/380 /* eslint no-useless-computed-key: 0 */ -const whitespace: {[_: number]: boolean} = { +const whitespace: { + [_: number]: boolean +} = { [0x09]: true, // tab [0x0a]: true, // newline [0x0b]: true, // vertical tab @@ -326,7 +338,9 @@ const whitespace: {[_: number]: boolean} = { [0x20]: true, // space }; -const breakable: {[_: number]: boolean} = { +const breakable: { + [_: number]: boolean +} = { [0x0a]: true, // newline [0x20]: true, // space [0x26]: true, // ampersand @@ -346,12 +360,20 @@ const breakable: {[_: number]: boolean} = { // See https://github.com/mapbox/mapbox-gl-js/issues/3658 }; -function getGlyphAdvance(codePoint: number, - section: SectionOptions, - glyphMap: {[_: string]: {[_: number]: ?StyleGlyph}}, - imagePositions: {[_: string]: ImagePosition}, - spacing: number, - layoutTextSize: number): number { +function getGlyphAdvance( + codePoint: number, + section: SectionOptions, + glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }, + imagePositions: { + [_: string]: ImagePosition + }, + spacing: number, + layoutTextSize: number +): number { if (!section.imageName) { const positions = glyphMap[section.fontStack]; const glyph = positions && positions[codePoint]; @@ -367,8 +389,14 @@ function getGlyphAdvance(codePoint: number, function determineAverageLineWidth(logicalInput: TaggedString, spacing: number, maxWidth: number, - glyphMap: {[_: string]: {[_: number]: ?StyleGlyph}}, - imagePositions: {[_: string]: ImagePosition}, + glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }, + imagePositions: { + [_: string]: ImagePosition + }, layoutTextSize: number) { let totalWidth = 0; @@ -423,24 +451,26 @@ function calculatePenalty(codePoint: number, nextCodePoint: number, penalizableI } type Break = { - index: number, - x: number, - priorBreak: ?Break, - badness: number + index: number, + x: number, + priorBreak: Break | undefined | null, + badness: number }; -function evaluateBreak(breakIndex: number, - breakX: number, - targetWidth: number, - potentialBreaks: Array, - penalty: number, - isLastBreak: boolean): Break { +function evaluateBreak( + breakIndex: number, + breakX: number, + targetWidth: number, + potentialBreaks: Array, + penalty: number, + isLastBreak: boolean +): Break { // We could skip evaluating breaks where the line length (breakX - priorBreak.x) > maxWidth // ...but in fact we allow lines longer than maxWidth (if there's no break points) // ...and when targetWidth and maxWidth are close, strictly enforcing maxWidth can give // more lopsided results. - let bestPriorBreak: ?Break = null; + let bestPriorBreak: Break | undefined | null = null; let bestBreakBadness = calculateBadness(breakX, targetWidth, penalty, isLastBreak); for (const potentialBreak of potentialBreaks) { @@ -461,20 +491,28 @@ function evaluateBreak(breakIndex: number, }; } -function leastBadBreaks(lastLineBreak: ?Break): Array { +function leastBadBreaks(lastLineBreak?: Break | null): Array { if (!lastLineBreak) { return []; } return leastBadBreaks(lastLineBreak.priorBreak).concat(lastLineBreak.index); } -function determineLineBreaks(logicalInput: TaggedString, - spacing: number, - maxWidth: number, - glyphMap: {[_: string]: {[_: number]: ?StyleGlyph}}, - imagePositions: {[_: string]: ImagePosition}, - symbolPlacement: string, - layoutTextSize: number): Array { +function determineLineBreaks( + logicalInput: TaggedString, + spacing: number, + maxWidth: number, + glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }, + imagePositions: { + [_: string]: ImagePosition + }, + symbolPlacement: string, + layoutTextSize: number +): Array { if (symbolPlacement !== 'point') return []; @@ -554,9 +592,19 @@ function getAnchorAlignment(anchor: SymbolAnchor) { } function shapeLines(shaping: Shaping, - glyphMap: {[_: string]: {[_: number]: ?StyleGlyph}}, - glyphPositions: {[_: string]: {[_: number]: GlyphPosition}}, - imagePositions: {[_: string]: ImagePosition}, + glyphMap: { + [_: string]: { + [_: number]: StyleGlyph | undefined | null + } + }, + glyphPositions: { + [_: string]: { + [_: number]: GlyphPosition + } + }, + imagePositions: { + [_: string]: ImagePosition + }, lines: Array, lineHeight: number, textAnchor: SymbolAnchor, @@ -741,15 +789,19 @@ function align(positionedLines: Array, } export type PositionedIcon = { - image: ImagePosition, - top: number, - bottom: number, - left: number, - right: number, - collisionPadding?: [number, number, number, number] + image: ImagePosition, + top: number, + bottom: number, + left: number, + right: number, + collisionPadding?: [number, number, number, number] }; -function shapeIcon(image: ImagePosition, iconOffset: [number, number], iconAnchor: SymbolAnchor): PositionedIcon { +function shapeIcon( + image: ImagePosition, + iconOffset: [number, number], + iconAnchor: SymbolAnchor +): PositionedIcon { const {horizontalAlign, verticalAlign} = getAnchorAlignment(iconAnchor); const dx = iconOffset[0]; const dy = iconOffset[1]; @@ -760,10 +812,14 @@ function shapeIcon(image: ImagePosition, iconOffset: [number, number], iconAncho return {image, top: y1, bottom: y2, left: x1, right: x2}; } -function fitIconToText(shapedIcon: PositionedIcon, shapedText: Shaping, - textFit: string, - padding: [ number, number, number, number ], - iconOffset: [ number, number ], fontScale: number): PositionedIcon { +function fitIconToText( + shapedIcon: PositionedIcon, + shapedText: Shaping, + textFit: string, + padding: [number, number, number, number], + iconOffset: [number, number], + fontScale: number +): PositionedIcon { assert(textFit !== 'none'); assert(Array.isArray(padding) && padding.length === 4); assert(Array.isArray(iconOffset) && iconOffset.length === 2); diff --git a/src/symbol/symbol_layout.js b/src/symbol/symbol_layout.ts similarity index 93% rename from src/symbol/symbol_layout.js rename to src/symbol/symbol_layout.ts index 990c841728..aabd4b07c1 100644 --- a/src/symbol/symbol_layout.js +++ b/src/symbol/symbol_layout.ts @@ -1,5 +1,3 @@ -// @flow - import Anchor from './anchor'; import {getAnchors, getCenterAnchor} from './get_anchors'; @@ -48,14 +46,14 @@ import murmur3 from 'murmurhash-js'; // (1) and (2) are stored in `bucket.layers[0].layout`. The remainder are below. // type Sizes = { - layoutTextSize: PossiblyEvaluatedPropertyValue, // (3) - layoutIconSize: PossiblyEvaluatedPropertyValue, // (3) - textMaxSize: PossiblyEvaluatedPropertyValue, // (4) - compositeTextSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue], // (5) - compositeIconSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue], // (5) + layoutTextSize: PossiblyEvaluatedPropertyValue // (3), + layoutIconSize: PossiblyEvaluatedPropertyValue // (3), + textMaxSize: PossiblyEvaluatedPropertyValue // (4), + compositeTextSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue] // (5), + compositeIconSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue] // (5) }; -export type TextAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; +export type TextAnchor = "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; // The radial offset is to the edge of the text box // In the horizontal direction, the edge of the text box is where glyphs start @@ -148,10 +146,22 @@ export function evaluateVariableOffset(anchor: TextAnchor, offset: [number, numb } export function performSymbolLayout(bucket: SymbolBucket, - glyphMap: {[_: string]: {[number]: ?StyleGlyph}}, - glyphPositions: {[_: string]: {[number]: GlyphPosition}}, - imageMap: {[_: string]: StyleImage}, - imagePositions: {[_: string]: ImagePosition}, + glyphMap: { + [_: string]: { + [x: number]: StyleGlyph | undefined | null + } + }, + glyphPositions: { + [_: string]: { + [x: number]: GlyphPosition + } + }, + imageMap: { + [_: string]: StyleImage + }, + imagePositions: { + [_: string]: ImagePosition + }, showCollisionBoxes: boolean, canonical: CanonicalTileID) { bucket.createArrays(); @@ -220,7 +230,7 @@ export function performSymbolLayout(bucket: SymbolBucket, // but doesn't actually specify what happens if you use both. We go with the radial offset. textOffset = evaluateVariableOffset(textAnchor, [radialOffset * ONE_EM, INVALID_TEXT_OFFSET]); } else { - textOffset = (layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any); + textOffset = (layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM) as any); } } @@ -327,7 +337,7 @@ export function performSymbolLayout(bucket: SymbolBucket, } // Choose the justification that matches the direction of the TextAnchor -export function getAnchorJustification(anchor: TextAnchor): TextJustify { +export function getAnchorJustification(anchor: TextAnchor): TextJustify { switch (anchor) { case 'right': case 'top-right': @@ -352,7 +362,9 @@ function addFeature(bucket: SymbolBucket, feature: SymbolFeature, shapedTextOrientations: any, shapedIcon: PositionedIcon | void, - imageMap: {[_: string]: StyleImage}, + imageMap: { + [_: string]: StyleImage + }, sizes: Sizes, layoutTextSize: number, layoutIconSize: number, @@ -476,15 +488,22 @@ export {MAX_PACKED_SIZE}; function addTextVertices(bucket: SymbolBucket, anchor: Point, shapedText: Shaping, - imageMap: {[_: string]: StyleImage}, + imageMap: { + [_: string]: StyleImage + }, layer: SymbolStyleLayer, textAlongLine: boolean, feature: SymbolFeature, textOffset: [number, number], - lineArray: {lineStartIndex: number, lineLength: number}, + lineArray: { + lineStartIndex: number, + lineLength: number + }, writingMode: number, - placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>, - placedTextSymbolIndices: {[_: string]: number}, + placementTypes: Array<"vertical" | "center" | "left" | "right">, + placedTextSymbolIndices: { + [_: string]: number + }, placedIconIndex: number, sizes: Sizes, canonical: CanonicalTileID) { @@ -534,7 +553,11 @@ function addTextVertices(bucket: SymbolBucket, return glyphQuads.length * 4; } -function getDefaultHorizontalShaping(horizontalShaping: {[_: TextJustify]: Shaping}): Shaping | null { +function getDefaultHorizontalShaping( + horizontalShaping: { + [_ in TextJustify]: Shaping; + } +): Shaping | null { // We don't care which shaping we get because this is used for collision purposes // and all the justifications have the same collision box for (const justification: any in horizontalShaping) { @@ -553,7 +576,9 @@ function addSymbol(bucket: SymbolBucket, line: Array, shapedTextOrientations: any, shapedIcon: PositionedIcon | void, - imageMap: {[_: string]: StyleImage}, + imageMap: { + [_: string]: StyleImage + }, verticallyShapedIcon: PositionedIcon | void, layer: SymbolStyleLayer, collisionBoxArray: CollisionBoxArray, @@ -589,7 +614,7 @@ function addSymbol(bucket: SymbolBucket, let textOffset0 = 0; let textOffset1 = 0; if (layer._unevaluatedLayout.getValue('text-radial-offset') === undefined) { - [textOffset0, textOffset1] = (layer.layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any); + [textOffset0, textOffset1] = (layer.layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM) as any); } else { textOffset0 = layer.layout.get('text-radial-offset').evaluate(feature, {}, canonical) * ONE_EM; textOffset1 = INVALID_TEXT_OFFSET; @@ -691,7 +716,7 @@ function addSymbol(bucket: SymbolBucket, numHorizontalGlyphVertices += addTextVertices( bucket, anchor, shaping, imageMap, layer, textAlongLine, feature, textOffset, lineArray, shapedTextOrientations.vertical ? WritingMode.horizontal : WritingMode.horizontalOnly, - singleLine ? (Object.keys(shapedTextOrientations.horizontal): any) : [justification], + singleLine ? (Object.keys(shapedTextOrientations.horizontal) as any) : [justification], placedTextSymbolIndices, placedIconSymbolIndex, sizes, canonical); if (singleLine) { @@ -722,7 +747,7 @@ function addSymbol(bucket: SymbolBucket, // All measurements are in glyph metrics and later converted into pixels using proper font size "layoutTextSize" let collisionCircleDiameter = -1; - const getCollisionCircleHeight = (feature: ?CollisionFeature, prevHeight: number): number => { + const getCollisionCircleHeight = (feature: CollisionFeature | undefined | null, prevHeight: number): number => { if (feature && feature.circleDiameter) return Math.max(feature.circleDiameter, prevHeight); return prevHeight; diff --git a/src/symbol/symbol_size.js b/src/symbol/symbol_size.ts similarity index 75% rename from src/symbol/symbol_size.js rename to src/symbol/symbol_size.ts index dab8f4b898..2027b6ad00 100644 --- a/src/symbol/symbol_size.js +++ b/src/symbol/symbol_size.ts @@ -1,6 +1,4 @@ -// @flow - -import {number as interpolate} from '../style-spec/util/interpolate'; +import { number as interpolate } from '../style-spec/util/interpolate'; import Interpolate from '../style-spec/expression/definitions/interpolate'; import {clamp} from '../util/util'; import EvaluationParameters from '../style/evaluation_parameters'; @@ -13,27 +11,30 @@ const SIZE_PACK_FACTOR = 128; export {getSizeData, evaluateSizeForFeature, evaluateSizeForZoom, SIZE_PACK_FACTOR}; export type SizeData = { - kind: 'constant', - layoutSize: number + kind: "constant", + layoutSize: number } | { - kind: 'source' + kind: "source" } | { - kind: 'camera', - minZoom: number, - maxZoom: number, - minSize: number, - maxSize: number, - interpolationType: ?InterpolationType + kind: "camera", + minZoom: number, + maxZoom: number, + minSize: number, + maxSize: number, + interpolationType: InterpolationType | undefined | null } | { - kind: 'composite', - minZoom: number, - maxZoom: number, - interpolationType: ?InterpolationType + kind: "composite", + minZoom: number, + maxZoom: number, + interpolationType: InterpolationType | undefined | null }; // For {text,icon}-size, get the bucket-level data that will be needed by // the painter to set symbol-size-related uniforms -function getSizeData(tileZoom: number, value: PropertyValue>): SizeData { +function getSizeData( + tileZoom: number, + value: PropertyValue> +): SizeData { const {expression} = value; if (expression.kind === 'constant') { @@ -74,8 +75,20 @@ function getSizeData(tileZoom: number, value: PropertyValue = (error: ?Error, result: ?T) => void; +export type Callback = (error?: Error | null, result?: T | null) => void; diff --git a/src/types/cancelable.js b/src/types/cancelable.js deleted file mode 100644 index e155168ac0..0000000000 --- a/src/types/cancelable.js +++ /dev/null @@ -1,3 +0,0 @@ -// @flow strict - -export type Cancelable = { cancel: () => void }; diff --git a/src/types/cancelable.ts b/src/types/cancelable.ts new file mode 100644 index 0000000000..134ba0a4f9 --- /dev/null +++ b/src/types/cancelable.ts @@ -0,0 +1,3 @@ +export type Cancelable = { + cancel: () => void +}; diff --git a/src/types/tilejson.js b/src/types/tilejson.js deleted file mode 100644 index 328f378e2a..0000000000 --- a/src/types/tilejson.js +++ /dev/null @@ -1,17 +0,0 @@ -// @flow - -export type TileJSON = {| - tilejson: '2.2.0' | '2.1.0' | '2.0.1' | '2.0.0' | '1.0.0', - name?: string, - description?: string, - version?: string, - attribution?: string, - template?: string, - tiles: Array, - grids?: Array, - data?: Array, - minzoom?: number, - maxzoom?: number, - bounds?: [number, number, number, number], - center?: [number, number, number] -|}; diff --git a/src/types/tilejson.ts b/src/types/tilejson.ts new file mode 100644 index 0000000000..b4490cd04d --- /dev/null +++ b/src/types/tilejson.ts @@ -0,0 +1,15 @@ +export type TileJSON = { + tilejson: "2.2.0" | "2.1.0" | "2.0.1" | "2.0.0" | "1.0.0", + name?: string, + description?: string, + version?: string, + attribution?: string, + template?: string, + tiles: Array, + grids?: Array, + data?: Array, + minzoom?: number, + maxzoom?: number, + bounds?: [number, number, number, number], + center?: [number, number, number] +}; diff --git a/src/types/transferable.js b/src/types/transferable.ts similarity index 87% rename from src/types/transferable.js rename to src/types/transferable.ts index 0d57cc4c50..a680473f25 100644 --- a/src/types/transferable.js +++ b/src/types/transferable.ts @@ -1,3 +1 @@ -// @flow - export type Transferable = ArrayBuffer | MessagePort | ImageBitmap; diff --git a/src/types/window.js b/src/types/window.js deleted file mode 100644 index 8957156fcc..0000000000 --- a/src/types/window.js +++ /dev/null @@ -1,172 +0,0 @@ -// @flow strict - -/* global EventTarget, IDBEnvironment */ - -export interface Window extends EventTarget, IDBEnvironment { - +caches: CacheStorage; - +clientInformation: Navigator; - +closed: boolean; - defaultStatus: string; - +devicePixelRatio: number; - +document: Document; - +doNotTrack: string; - +frameElement: Element; - +frames: Window; - +history: History; - +innerHeight: number; - +innerWidth: number; - +isSecureContext: boolean; - +length: number; - +location: Location; - +origin: string; - name: string; - +navigator: Navigator; - offscreenBuffering: string | boolean; - onabort: (ev: UIEvent) => ?boolean; - onafterprint: (ev: Event) => ?boolean; - onbeforeprint: (ev: Event) => ?boolean; - onbeforeunload: (ev: Event) => ?boolean; - onblur: (ev: FocusEvent) => ?boolean; - oncanplay: (ev: Event) => ?boolean; - oncanplaythrough: (ev: Event) => ?boolean; - onchange: (ev: Event) => ?boolean; - onclick: (ev: MouseEvent) => ?boolean; - oncompassneedscalibration: (ev: Event) => ?boolean; - oncontextmenu: (ev: Event) => ?boolean; - ondblclick: (ev: MouseEvent) => ?boolean; - ondevicelight: (ev: Event) => ?boolean; - ondevicemotion: (ev: Event) => ?boolean; - ondeviceorientation: (ev: Event) => ?boolean; - ondrag: (ev: DragEvent) => ?boolean; - ondragend: (ev: DragEvent) => ?boolean; - ondragenter: (ev: DragEvent) => ?boolean; - ondragleave: (ev: DragEvent) => ?boolean; - ondragover: (ev: DragEvent) => ?boolean; - ondragstart: (ev: DragEvent) => ?boolean; - ondrop: (ev: DragEvent) => ?boolean; - ondurationchange: (ev: Event) => ?boolean; - onemptied: (ev: Event) => ?boolean; - onended: (ev: Event) => ?boolean; - onerror: (ev: Event) => ?boolean; - onfocus: (ev: FocusEvent) => ?boolean; - onhashchange: (ev: Event) => ?boolean; - oninput: (ev: Event) => ?boolean; - oninvalid: (ev: Event) => ?boolean; - onkeydown: (ev: KeyboardEvent) => ?boolean; - onkeypress: (ev: KeyboardEvent) => ?boolean; - onkeyup: (ev: KeyboardEvent) => ?boolean; - onload: (ev: Event) => ?boolean; - onloadeddata: (ev: Event) => ?boolean; - onloadedmetadata: (ev: Event) => ?boolean; - onloadstart: (ev: Event) => ?boolean; - onmessage: (ev: MessageEvent) => ?boolean; - onmousedown: (ev: MouseEvent) => ?boolean; - onmouseenter: (ev: MouseEvent) => ?boolean; - onmouseleave: (ev: MouseEvent) => ?boolean; - onmousemove: (ev: MouseEvent) => ?boolean; - onmouseout: (ev: MouseEvent) => ?boolean; - onmouseover: (ev: MouseEvent) => ?boolean; - onmouseup: (ev: MouseEvent) => ?boolean; - onmousewheel: (ev: WheelEvent) => ?boolean; - onoffline: (ev: Event) => ?boolean; - ononline: (ev: Event) => ?boolean; - onorientationchange: (ev: Event) => ?boolean; - onpagehide: (ev: Event) => ?boolean; - onpageshow: (ev: Event) => ?boolean; - onpause: (ev: Event) => ?boolean; - onplay: (ev: Event) => ?boolean; - onplaying: (ev: Event) => ?boolean; - onpopstate: (ev: Event) => ?boolean; - onprogress: (ev: ProgressEvent) => ?boolean; - onratechange: (ev: Event) => ?boolean; - onreadystatechange: (ev: ProgressEvent) => ?boolean; - onreset: (ev: Event) => ?boolean; - onresize: (ev: UIEvent) => ?boolean; - onscroll: (ev: UIEvent) => ?boolean; - onseeked: (ev: Event) => ?boolean; - onseeking: (ev: Event) => ?boolean; - onselect: (ev: UIEvent) => ?boolean; - onstalled: (ev: Event) => ?boolean; - onstorage: (ev: Event) => ?boolean; - onsubmit: (ev: Event) => ?boolean; - onsuspend: (ev: Event) => ?boolean; - ontimeupdate: (ev: Event) => ?boolean; - ontouchcancel: (ev: TouchEvent) => ?boolean; - ontouchend: (ev: TouchEvent) => ?boolean; - ontouchmove: (ev: TouchEvent) => ?boolean; - ontouchstart: (ev: TouchEvent) => ?boolean; - onunload: (ev: Event) => ?boolean; - onvolumechange: (ev: Event) => ?boolean; - onwaiting: (ev: Event) => ?boolean; - opener: Window; - orientation: string | number; - +outerHeight: number; - +outerWidth: number; - +pageXOffset: number; - +pageYOffset: number; - +parent: Window; - +performance: Performance; - +screen: Screen; - +screenLeft: number; - +screenTop: number; - +screenX: number; - +screenY: number; - +scrollX: number; - +scrollY: number; - +self: Window; - status: string; - +top: Window; - +window: Window; - - Blob: typeof Blob; - HTMLImageElement: typeof HTMLImageElement; - HTMLElement: typeof HTMLElement; - HTMLVideoElement: typeof HTMLVideoElement; - HTMLCanvasElement: typeof HTMLCanvasElement; - Image: typeof Image; - ImageData: typeof ImageData; - URL: typeof URL; - URLSearchParams: typeof URLSearchParams; - WebGLFramebuffer: typeof WebGLFramebuffer; - WheelEvent: typeof WheelEvent; - Worker: typeof Worker; - XMLHttpRequest: typeof XMLHttpRequest; - Request: typeof Request; - AbortController: typeof AbortController; - - alert(message?: string): void; - blur(): void; - captureEvents(): void; - close(): void; - confirm(message?: string): boolean; - focus(): void; - getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; - getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList; - getSelection(): Selection; - moveBy(x?: number, y?: number): void; - moveTo(x?: number, y?: number): void; - msWriteProfilerMark(profilerMarkName: string): void; - open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: mixed, targetOrigin: string, transfer?: ArrayBuffer[]): void; - print(): void; - prompt(message?: string, _default?: string): string | null; - releaseEvents(): void; - resizeBy(x?: number, y?: number): void; - resizeTo(x?: number, y?: number): void; - scroll(x?: number, y?: number): void; - scrollBy(x?: number, y?: number): void; - scrollTo(x?: number, y?: number): void; - stop(): void; - - clearInterval(intervalId?: number): void; - clearTimeout(timeoutId?: number): void; - setTimeout(callback: () => void, ms?: number): number; - setInterval(callback: () => void, ms?: number): number; - - requestAnimationFrame(callback: (timestamp: number) => void): number; - cancelAnimationFrame(handle: number): void; - msRequestAnimationFrame(callback: (timestamp: number) => void): number; - msCancelAnimationFrame(handle: number): void; - webkitRequestAnimationFrame(callback: (timestamp: number) => void): number; - webkitCancelAnimationFrame(handle: number): void; -} diff --git a/src/types/window.ts b/src/types/window.ts new file mode 100644 index 0000000000..00ef2f131a --- /dev/null +++ b/src/types/window.ts @@ -0,0 +1,166 @@ +/* global EventTarget, IDBEnvironment */ + +export interface Window extends EventTarget, IDBEnvironment { + readonly caches: CacheStorage; + readonly clientInformation: Navigator; + readonly closed: boolean; + defaultStatus: string; + readonly devicePixelRatio: number; + readonly document: Document; + readonly doNotTrack: string; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly isSecureContext: boolean; + readonly length: number; + readonly location: Location; + readonly origin: string; + name: string; + readonly navigator: Navigator; + offscreenBuffering: string | boolean; + onabort: (ev: UIEvent) => boolean | undefined | null; + onafterprint: (ev: Event) => boolean | undefined | null; + onbeforeprint: (ev: Event) => boolean | undefined | null; + onbeforeunload: (ev: Event) => boolean | undefined | null; + onblur: (ev: FocusEvent) => boolean | undefined | null; + oncanplay: (ev: Event) => boolean | undefined | null; + oncanplaythrough: (ev: Event) => boolean | undefined | null; + onchange: (ev: Event) => boolean | undefined | null; + onclick: (ev: MouseEvent) => boolean | undefined | null; + oncompassneedscalibration: (ev: Event) => boolean | undefined | null; + oncontextmenu: (ev: Event) => boolean | undefined | null; + ondblclick: (ev: MouseEvent) => boolean | undefined | null; + ondevicelight: (ev: Event) => boolean | undefined | null; + ondevicemotion: (ev: Event) => boolean | undefined | null; + ondeviceorientation: (ev: Event) => boolean | undefined | null; + ondrag: (ev: DragEvent) => boolean | undefined | null; + ondragend: (ev: DragEvent) => boolean | undefined | null; + ondragenter: (ev: DragEvent) => boolean | undefined | null; + ondragleave: (ev: DragEvent) => boolean | undefined | null; + ondragover: (ev: DragEvent) => boolean | undefined | null; + ondragstart: (ev: DragEvent) => boolean | undefined | null; + ondrop: (ev: DragEvent) => boolean | undefined | null; + ondurationchange: (ev: Event) => boolean | undefined | null; + onemptied: (ev: Event) => boolean | undefined | null; + onended: (ev: Event) => boolean | undefined | null; + onerror: (ev: Event) => boolean | undefined | null; + onfocus: (ev: FocusEvent) => boolean | undefined | null; + onhashchange: (ev: Event) => boolean | undefined | null; + oninput: (ev: Event) => boolean | undefined | null; + oninvalid: (ev: Event) => boolean | undefined | null; + onkeydown: (ev: KeyboardEvent) => boolean | undefined | null; + onkeypress: (ev: KeyboardEvent) => boolean | undefined | null; + onkeyup: (ev: KeyboardEvent) => boolean | undefined | null; + onload: (ev: Event) => boolean | undefined | null; + onloadeddata: (ev: Event) => boolean | undefined | null; + onloadedmetadata: (ev: Event) => boolean | undefined | null; + onloadstart: (ev: Event) => boolean | undefined | null; + onmessage: (ev: MessageEvent) => boolean | undefined | null; + onmousedown: (ev: MouseEvent) => boolean | undefined | null; + onmouseenter: (ev: MouseEvent) => boolean | undefined | null; + onmouseleave: (ev: MouseEvent) => boolean | undefined | null; + onmousemove: (ev: MouseEvent) => boolean | undefined | null; + onmouseout: (ev: MouseEvent) => boolean | undefined | null; + onmouseover: (ev: MouseEvent) => boolean | undefined | null; + onmouseup: (ev: MouseEvent) => boolean | undefined | null; + onmousewheel: (ev: WheelEvent) => boolean | undefined | null; + onoffline: (ev: Event) => boolean | undefined | null; + ononline: (ev: Event) => boolean | undefined | null; + onorientationchange: (ev: Event) => boolean | undefined | null; + onpagehide: (ev: Event) => boolean | undefined | null; + onpageshow: (ev: Event) => boolean | undefined | null; + onpause: (ev: Event) => boolean | undefined | null; + onplay: (ev: Event) => boolean | undefined | null; + onplaying: (ev: Event) => boolean | undefined | null; + onpopstate: (ev: Event) => boolean | undefined | null; + onprogress: (ev: ProgressEvent) => boolean | undefined | null; + onratechange: (ev: Event) => boolean | undefined | null; + onreadystatechange: (ev: ProgressEvent) => boolean | undefined | null; + onreset: (ev: Event) => boolean | undefined | null; + onresize: (ev: UIEvent) => boolean | undefined | null; + onscroll: (ev: UIEvent) => boolean | undefined | null; + onseeked: (ev: Event) => boolean | undefined | null; + onseeking: (ev: Event) => boolean | undefined | null; + onselect: (ev: UIEvent) => boolean | undefined | null; + onstalled: (ev: Event) => boolean | undefined | null; + onstorage: (ev: Event) => boolean | undefined | null; + onsubmit: (ev: Event) => boolean | undefined | null; + onsuspend: (ev: Event) => boolean | undefined | null; + ontimeupdate: (ev: Event) => boolean | undefined | null; + ontouchcancel: (ev: TouchEvent) => boolean | undefined | null; + ontouchend: (ev: TouchEvent) => boolean | undefined | null; + ontouchmove: (ev: TouchEvent) => boolean | undefined | null; + ontouchstart: (ev: TouchEvent) => boolean | undefined | null; + onunload: (ev: Event) => boolean | undefined | null; + onvolumechange: (ev: Event) => boolean | undefined | null; + onwaiting: (ev: Event) => boolean | undefined | null; + opener: Window; + orientation: string | number; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly self: Window; + status: string; + readonly top: Window; + readonly window: Window; + Blob: typeof Blob; + HTMLImageElement: typeof HTMLImageElement; + HTMLElement: typeof HTMLElement; + HTMLVideoElement: typeof HTMLVideoElement; + HTMLCanvasElement: typeof HTMLCanvasElement; + Image: typeof Image; + ImageData: typeof ImageData; + URL: typeof URL; + URLSearchParams: typeof URLSearchParams; + WebGLFramebuffer: typeof WebGLFramebuffer; + WheelEvent: typeof WheelEvent; + Worker: typeof Worker; + XMLHttpRequest: typeof XMLHttpRequest; + Request: typeof Request; + AbortController: typeof AbortController; + alert(message?: string): void; + blur(): void; + captureEvents(): void; + close(): void; + confirm(message?: string): boolean; + focus(): void; + getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; + getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList; + getSelection(): Selection; + moveBy(x?: number, y?: number): void; + moveTo(x?: number, y?: number): void; + msWriteProfilerMark(profilerMarkName: string): void; + open(url?: string, target?: string, features?: string, replace?: boolean): Window; + postMessage(message: unknown, targetOrigin: string, transfer?: ArrayBuffer[]): void; + print(): void; + prompt(message?: string, _default?: string): string | null; + releaseEvents(): void; + resizeBy(x?: number, y?: number): void; + resizeTo(x?: number, y?: number): void; + scroll(x?: number, y?: number): void; + scrollBy(x?: number, y?: number): void; + scrollTo(x?: number, y?: number): void; + stop(): void; + clearInterval(intervalId?: number): void; + clearTimeout(timeoutId?: number): void; + setTimeout(callback: () => void, ms?: number): number; + setInterval(callback: () => void, ms?: number): number; + requestAnimationFrame(callback: (timestamp: number) => void): number; + cancelAnimationFrame(handle: number): void; + msRequestAnimationFrame(callback: (timestamp: number) => void): number; + msCancelAnimationFrame(handle: number): void; + webkitRequestAnimationFrame(callback: (timestamp: number) => void): number; + webkitCancelAnimationFrame(handle: number): void; +} diff --git a/src/ui/anchor.js b/src/ui/anchor.ts similarity index 75% rename from src/ui/anchor.js rename to src/ui/anchor.ts index 251b0904c5..7e6ba6f8d6 100644 --- a/src/ui/anchor.js +++ b/src/ui/anchor.ts @@ -1,17 +1,8 @@ -// @flow +export type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; -export type Anchor = - | 'center' - | 'top' - | 'bottom' - | 'left' - | 'right' - | 'top-left' - | 'top-right' - | 'bottom-left' - | 'bottom-right'; - -export const anchorTranslate: {[_: Anchor]: string} = { +export const anchorTranslate: { + [_ in Anchor]: string; +} = { 'center': 'translate(-50%,-50%)', 'top': 'translate(-50%,0)', 'top-left': 'translate(0,0)', diff --git a/src/ui/camera.js b/src/ui/camera.ts similarity index 95% rename from src/ui/camera.js rename to src/ui/camera.ts index c23adb61aa..e685fbf841 100644 --- a/src/ui/camera.js +++ b/src/ui/camera.ts @@ -1,14 +1,4 @@ -// @flow - -import { - bindAll, - extend, - warnOnce, - clamp, - wrap, - ease as defaultEasing, - pick -} from '../util/util'; +import { bindAll, extend, warnOnce, clamp, wrap, ease as defaultEasing, pick } from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import browser from '../util/browser'; import LngLat from '../geo/lng_lat'; @@ -57,12 +47,12 @@ import type {PaddingOptions} from '../geo/edge_insets'; * @see [Display buildings in 3D](https://maplibre.org/maplibre-gl-js-docs/example/3d-buildings/) */ export type CameraOptions = { - center?: LngLatLike, - zoom?: number, - bearing?: number, - pitch?: number, - around?: LngLatLike, - padding?: PaddingOptions + center?: LngLatLike, + zoom?: number, + bearing?: number, + pitch?: number, + around?: LngLatLike, + padding?: PaddingOptions }; /** @@ -80,11 +70,11 @@ export type CameraOptions = { * [`prefers-reduced-motion`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion). */ export type AnimationOptions = { - duration?: number, - easing?: (_: number) => number, - offset?: PointLike, - animate?: boolean, - essential?: boolean + duration?: number, + easing?: (_: number) => number, + offset?: PointLike, + animate?: boolean, + essential?: boolean }; /** @@ -122,17 +112,22 @@ class Camera extends Evented { _bearingSnap: number; _easeStart: number; - _easeOptions: {duration: number, easing: (_: number) => number}; + _easeOptions: { + duration: number, + easing: (_: number) => number + }; _easeId: string | void; _onEaseFrame: (_: number) => void; _onEaseEnd: (easeId?: string) => void; - _easeFrameId: ?TaskID; + _easeFrameId: TaskID | undefined | null; - +_requestRenderFrame: (() => void) => TaskID; - +_cancelRenderFrame: (_: TaskID) => void; + readonly _requestRenderFrame: (a: () => void) => TaskID; + readonly _cancelRenderFrame: (_: TaskID) => void; - constructor(transform: Transform, options: {bearingSnap: number}) { + constructor(transform: Transform, options: { + bearingSnap: number + }) { super(); this._moving = false; this._zooming = false; @@ -170,7 +165,7 @@ class Camera extends Evented { * @example * map.setCenter([-74, 38]); */ - setCenter(center: LngLatLike, eventData?: Object) { + setCenter(center: LngLatLike, eventData?: any) { return this.jumpTo({center}, eventData); } @@ -186,7 +181,7 @@ class Camera extends Evented { * @returns {Map} `this` * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js-docs/example/game-controls/) */ - panBy(offset: PointLike, options?: AnimationOptions, eventData?: Object) { + panBy(offset: PointLike, options?: AnimationOptions, eventData?: any) { offset = Point.convert(offset).mult(-1); return this.panTo(this.transform.center, extend({offset}, options), eventData); } @@ -208,7 +203,7 @@ class Camera extends Evented { * map.panTo([-74, 38], {duration: 5000}); * @see [Update a feature in realtime](https://maplibre.org/maplibre-gl-js-docs/example/live-update-feature/) */ - panTo(lnglat: LngLatLike, options?: AnimationOptions, eventData?: Object) { + panTo(lnglat: LngLatLike, options?: AnimationOptions, eventData?: any) { return this.easeTo(extend({ center: lnglat }, options), eventData); @@ -241,7 +236,7 @@ class Camera extends Evented { * // Zoom to the zoom level 5 without an animated transition * map.setZoom(5); */ - setZoom(zoom: number, eventData?: Object) { + setZoom(zoom: number, eventData?: any) { this.jumpTo({zoom}, eventData); return this; } @@ -269,7 +264,7 @@ class Camera extends Evented { * offset: [100, 50] * }); */ - zoomTo(zoom: number, options: ? AnimationOptions, eventData?: Object) { + zoomTo(zoom: number, options?: AnimationOptions | null, eventData?: any) { return this.easeTo(extend({ zoom }, options), eventData); @@ -292,7 +287,7 @@ class Camera extends Evented { * // zoom the map in one level with a custom animation duration * map.zoomIn({duration: 1000}); */ - zoomIn(options?: AnimationOptions, eventData?: Object) { + zoomIn(options?: AnimationOptions, eventData?: any) { this.zoomTo(this.getZoom() + 1, options, eventData); return this; } @@ -314,7 +309,7 @@ class Camera extends Evented { * // zoom the map out one level with a custom animation offset * map.zoomOut({offset: [80, 60]}); */ - zoomOut(options?: AnimationOptions, eventData?: Object) { + zoomOut(options?: AnimationOptions, eventData?: any) { this.zoomTo(this.getZoom() - 1, options, eventData); return this; } @@ -345,7 +340,7 @@ class Camera extends Evented { * // rotate the map to 90 degrees * map.setBearing(90); */ - setBearing(bearing: number, eventData?: Object) { + setBearing(bearing: number, eventData?: any) { this.jumpTo({bearing}, eventData); return this; } @@ -373,7 +368,7 @@ class Camera extends Evented { * // Sets a left padding of 300px, and a top padding of 50px * map.setPadding({ left: 300, top: 50 }); */ - setPadding(padding: PaddingOptions, eventData?: Object) { + setPadding(padding: PaddingOptions, eventData?: any) { this.jumpTo({padding}, eventData); return this; } @@ -390,7 +385,7 @@ class Camera extends Evented { * @fires moveend * @returns {Map} `this` */ - rotateTo(bearing: number, options?: AnimationOptions, eventData?: Object) { + rotateTo(bearing: number, options?: AnimationOptions, eventData?: any) { return this.easeTo(extend({ bearing }, options), eventData); @@ -406,7 +401,7 @@ class Camera extends Evented { * @fires moveend * @returns {Map} `this` */ - resetNorth(options?: AnimationOptions, eventData?: Object) { + resetNorth(options?: AnimationOptions, eventData?: any) { this.rotateTo(0, extend({duration: 1000}, options), eventData); return this; } @@ -421,7 +416,7 @@ class Camera extends Evented { * @fires moveend * @returns {Map} `this` */ - resetNorthPitch(options?: AnimationOptions, eventData?: Object) { + resetNorthPitch(options?: AnimationOptions, eventData?: any) { this.easeTo(extend({ bearing: 0, pitch: 0, @@ -441,7 +436,7 @@ class Camera extends Evented { * @fires moveend * @returns {Map} `this` */ - snapToNorth(options?: AnimationOptions, eventData?: Object) { + snapToNorth(options?: AnimationOptions, eventData?: any) { if (Math.abs(this.getBearing()) < this._bearingSnap) { return this.resetNorth(options, eventData); } @@ -467,7 +462,7 @@ class Camera extends Evented { * @fires moveend * @returns {Map} `this` */ - setPitch(pitch: number, eventData?: Object) { + setPitch(pitch: number, eventData?: any) { this.jumpTo({pitch}, eventData); return this; } @@ -614,7 +609,7 @@ class Camera extends Evented { * }); * @see [Fit a map to a bounding box](https://maplibre.org/maplibre-gl-js-docs/example/fitbounds/) */ - fitBounds(bounds: LngLatBoundsLike, options?: AnimationOptions & CameraOptions, eventData?: Object) { + fitBounds(bounds: LngLatBoundsLike, options?: AnimationOptions & CameraOptions, eventData?: any) { return this._fitInternal( this.cameraForBounds(bounds, options), options, @@ -650,7 +645,7 @@ class Camera extends Evented { * }); * @see Used by {@link BoxZoomHandler} */ - fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: AnimationOptions & CameraOptions, eventData?: Object) { + fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: AnimationOptions & CameraOptions, eventData?: any) { return this._fitInternal( this._cameraForBoxAndBearing( this.transform.pointLocation(Point.convert(p0)), @@ -661,7 +656,7 @@ class Camera extends Evented { eventData); } - _fitInternal(calculatedOptions?: CameraOptions & AnimationOptions, options?: AnimationOptions & CameraOptions, eventData?: Object) { + _fitInternal(calculatedOptions?: CameraOptions & AnimationOptions, options?: AnimationOptions & CameraOptions, eventData?: any) { // cameraForBounds warns + returns undefined if unable to fit: if (!calculatedOptions) return this; @@ -706,7 +701,7 @@ class Camera extends Evented { * @see [Jump to a series of locations](https://maplibre.org/maplibre-gl-js-docs/example/jump-to/) * @see [Update a feature in realtime](https://maplibre.org/maplibre-gl-js-docs/example/live-update-feature/) */ - jumpTo(options: CameraOptions, eventData?: Object) { + jumpTo(options: CameraOptions, eventData?: any) { this.stop(); const tr = this.transform; @@ -787,7 +782,9 @@ class Camera extends Evented { * @returns {Map} `this` * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js-docs/example/game-controls/) */ - easeTo(options: CameraOptions & AnimationOptions & {easeId?: string}, eventData?: Object) { + easeTo(options: CameraOptions & AnimationOptions & { + easeId?: string + }, eventData?: any) { this._stop(false, options.easeId); options = extend({ @@ -879,7 +876,7 @@ class Camera extends Evented { return this; } - _prepareEase(eventData?: Object, noMoveStart: boolean, currently: Object = {}) { + _prepareEase(eventData: any | undefined | null, noMoveStart: boolean, currently: any = {}) { this._moving = true; if (!noMoveStart && !currently.moving) { @@ -896,7 +893,7 @@ class Camera extends Evented { } } - _fireMoveEvents(eventData?: Object) { + _fireMoveEvents(eventData?: any) { this.fire(new Event('move', eventData)); if (this._zooming) { this.fire(new Event('zoom', eventData)); @@ -909,7 +906,7 @@ class Camera extends Evented { } } - _afterEase(eventData?: Object, easeId?: string) { + _afterEase(eventData?: any, easeId?: string) { // if this easing is being stopped to start another easing with // the same id then don't fire any events to avoid extra start/stop events if (this._easeId && easeId && this._easeId === easeId) { @@ -997,10 +994,10 @@ class Camera extends Evented { * @see [Slowly fly to a location](https://maplibre.org/maplibre-gl-js-docs/example/flyto-options/) * @see [Fly to a location based on scroll position](https://maplibre.org/maplibre-gl-js-docs/example/scroll-fly-to/) */ - flyTo(options: Object, eventData?: Object) { + flyTo(options: any, eventData?: any) { // Fall through to jumpTo if user has set prefers-reduced-motion if (!options.essential && browser.prefersReducedMotion) { - const coercedOptions = (pick(options, ['center', 'zoom', 'bearing', 'pitch', 'around']): CameraOptions); + const coercedOptions = (pick(options, ['center', 'zoom', 'bearing', 'pitch', 'around']) as CameraOptions); return this.jumpTo(coercedOptions, eventData); } @@ -1185,7 +1182,7 @@ class Camera extends Evented { onEaseEnd.call(this, easeId); } if (!allowGestures) { - const handlers = (this: any).handlers; + const handlers = (this as any).handlers; if (handlers) handlers.stop(false); } return this; @@ -1193,7 +1190,11 @@ class Camera extends Evented { _ease(frame: (_: number) => void, finish: () => void, - options: {animate: boolean, duration: number, easing: (_: number) => number}) { + options: { + animate: boolean, + duration: number, + easing: (_: number) => number + }) { if (options.animate === false || options.duration === 0) { frame(1); finish(); diff --git a/src/ui/control/attribution_control.js b/src/ui/control/attribution_control.ts similarity index 97% rename from src/ui/control/attribution_control.js rename to src/ui/control/attribution_control.ts index a8dea88e48..0b88383f9a 100644 --- a/src/ui/control/attribution_control.js +++ b/src/ui/control/attribution_control.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import {bindAll} from '../../util/util'; import config from '../../util/config'; @@ -7,8 +5,8 @@ import config from '../../util/config'; import type Map from '../map'; type Options = { - compact?: boolean, - customAttribution?: string | Array + compact?: boolean, + customAttribution?: string | Array }; /** @@ -30,7 +28,7 @@ class AttributionControl { _container: HTMLElement; _innerContainer: HTMLElement; _compactButton: HTMLButtonElement; - _editLink: ?HTMLAnchorElement; + _editLink: HTMLAnchorElement | undefined | null; _attribHTML: string; styleId: string; styleOwner: string; @@ -89,8 +87,8 @@ class AttributionControl { this._map.off('moveend', this._updateEditLink); this._map.off('resize', this._updateCompact); - this._map = (undefined: any); - this._attribHTML = (undefined: any); + this._map = (undefined as any); + this._attribHTML = (undefined as any); } _setElementTitle(element: HTMLElement, title: string) { @@ -112,7 +110,7 @@ class AttributionControl { _updateEditLink() { let editLink = this._editLink; if (!editLink) { - editLink = this._editLink = (this._container.querySelector('.mapbox-improve-map'): any); + editLink = this._editLink = (this._container.querySelector('.mapbox-improve-map') as any); } const params = [ diff --git a/src/ui/control/fullscreen_control.js b/src/ui/control/fullscreen_control.ts similarity index 80% rename from src/ui/control/fullscreen_control.js rename to src/ui/control/fullscreen_control.ts index 3cad78b8b1..6087a11b3c 100644 --- a/src/ui/control/fullscreen_control.js +++ b/src/ui/control/fullscreen_control.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import {bindAll, warnOnce} from '../../util/util'; @@ -8,7 +6,7 @@ import window from '../../util/window'; import type Map from '../map'; type Options = { - container?: HTMLElement + container?: HTMLElement }; /** @@ -70,21 +68,21 @@ class FullscreenControl { onRemove() { DOM.remove(this._controlContainer); - this._map = (null: any); + this._map = (null as any); window.document.removeEventListener(this._fullscreenchange, this._changeIcon); } _checkFullscreenSupport() { return !!( window.document.fullscreenEnabled || - (window.document: any).mozFullScreenEnabled || - (window.document: any).msFullscreenEnabled || - (window.document: any).webkitFullscreenEnabled + (window.document as any).mozFullScreenEnabled || + (window.document as any).msFullscreenEnabled || + (window.document as any).webkitFullscreenEnabled ); } _setupUI() { - const button = this._fullscreenButton = DOM.create('button', (`maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen`), this._controlContainer); + const button = this._fullscreenButton = DOM.create('button', ((`maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen`)), this._controlContainer); DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', true); button.type = 'button'; this._updateTitle(); @@ -109,9 +107,9 @@ class FullscreenControl { _changeIcon() { const fullscreenElement = window.document.fullscreenElement || - (window.document: any).mozFullScreenElement || - (window.document: any).webkitFullscreenElement || - (window.document: any).msFullscreenElement; + (window.document as any).mozFullScreenElement || + (window.document as any).webkitFullscreenElement || + (window.document as any).msFullscreenElement; if ((fullscreenElement === this._container) !== this._fullscreen) { this._fullscreen = !this._fullscreen; @@ -126,22 +124,22 @@ class FullscreenControl { _onClickFullscreen() { if (this._isFullscreen()) { if (window.document.exitFullscreen) { - (window.document: any).exitFullscreen(); + (window.document as any).exitFullscreen(); } else if (window.document.mozCancelFullScreen) { - (window.document: any).mozCancelFullScreen(); + (window.document as any).mozCancelFullScreen(); } else if (window.document.msExitFullscreen) { - (window.document: any).msExitFullscreen(); + (window.document as any).msExitFullscreen(); } else if (window.document.webkitCancelFullScreen) { - (window.document: any).webkitCancelFullScreen(); + (window.document as any).webkitCancelFullScreen(); } } else if (this._container.requestFullscreen) { this._container.requestFullscreen(); - } else if ((this._container: any).mozRequestFullScreen) { - (this._container: any).mozRequestFullScreen(); - } else if ((this._container: any).msRequestFullscreen) { - (this._container: any).msRequestFullscreen(); - } else if ((this._container: any).webkitRequestFullscreen) { - (this._container: any).webkitRequestFullscreen(); + } else if ((this._container as any).mozRequestFullScreen) { + (this._container as any).mozRequestFullScreen(); + } else if ((this._container as any).msRequestFullscreen) { + (this._container as any).msRequestFullscreen(); + } else if ((this._container as any).webkitRequestFullscreen) { + (this._container as any).webkitRequestFullscreen(); } } } diff --git a/src/ui/control/geolocate_control.js b/src/ui/control/geolocate_control.ts similarity index 98% rename from src/ui/control/geolocate_control.js rename to src/ui/control/geolocate_control.ts index f9adf876f2..7d31d91743 100644 --- a/src/ui/control/geolocate_control.js +++ b/src/ui/control/geolocate_control.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event, Evented} from '../../util/evented'; +import { Event, Evented } from '../../util/evented'; import DOM from '../../util/dom'; import window from '../../util/window'; import {extend, bindAll, warnOnce} from '../../util/util'; @@ -12,11 +10,11 @@ import type Map from '../map'; import type {AnimationOptions, CameraOptions} from '../camera'; type Options = { - positionOptions?: PositionOptions, - fitBoundsOptions?: AnimationOptions & CameraOptions, - trackUserLocation?: boolean, - showAccuracyCircle?: boolean, - showUserLocation?: boolean + positionOptions?: PositionOptions, + fitBoundsOptions?: AnimationOptions & CameraOptions, + trackUserLocation?: boolean, + showAccuracyCircle?: boolean, + showUserLocation?: boolean }; const defaultOptions: Options = { @@ -102,8 +100,8 @@ class GeolocateControl extends Evented { _circleElement: HTMLElement; _geolocateButton: HTMLButtonElement; _geolocationWatchID: number; - _timeoutId: ?TimeoutID; - _watchState: 'OFF' | 'ACTIVE_LOCK' | 'WAITING_ACTIVE' | 'ACTIVE_ERROR' | 'BACKGROUND' | 'BACKGROUND_ERROR'; + _timeoutId: TimeoutID | undefined | null; + _watchState: "OFF" | "ACTIVE_LOCK" | "WAITING_ACTIVE" | "ACTIVE_ERROR" | "BACKGROUND" | "BACKGROUND_ERROR"; _lastKnownPosition: any; _userLocationDotMarker: Marker; _accuracyCircleMarker: Marker; @@ -136,7 +134,7 @@ class GeolocateControl extends Evented { // clear the geolocation watch if exists if (this._geolocationWatchID !== undefined) { window.navigator.geolocation.clearWatch(this._geolocationWatchID); - this._geolocationWatchID = (undefined: any); + this._geolocationWatchID = (undefined as any); } // clear the markers from the map @@ -149,7 +147,7 @@ class GeolocateControl extends Evented { DOM.remove(this._container); this._map.off('zoom', this._onZoom); - this._map = (undefined: any); + this._map = (undefined as any); numberOfWatches = 0; noTimeout = false; } @@ -292,7 +290,7 @@ class GeolocateControl extends Evented { * @param {Position} [position] the Geolocation API Position * @private */ - _updateMarker(position: ?Position) { + _updateMarker(position?: Position | null) { if (position) { const center = new LngLat(position.coords.longitude, position.coords.latitude); this._accuracyCircleMarker.setLngLat(center).addTo(this._map); @@ -554,7 +552,7 @@ class GeolocateControl extends Evented { _clearWatch() { window.navigator.geolocation.clearWatch(this._geolocationWatchID); - this._geolocationWatchID = (undefined: any); + this._geolocationWatchID = (undefined as any); this._geolocateButton.classList.remove('maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting'); this._geolocateButton.setAttribute('aria-pressed', 'false'); diff --git a/src/ui/control/logo_control.js b/src/ui/control/logo_control.ts similarity index 99% rename from src/ui/control/logo_control.js rename to src/ui/control/logo_control.ts index 709ae48aa2..23d79c82da 100644 --- a/src/ui/control/logo_control.js +++ b/src/ui/control/logo_control.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import {bindAll} from '../../util/util'; diff --git a/src/ui/control/navigation_control.js b/src/ui/control/navigation_control.ts similarity index 96% rename from src/ui/control/navigation_control.js rename to src/ui/control/navigation_control.ts index 3f762ae926..670974eaa5 100644 --- a/src/ui/control/navigation_control.js +++ b/src/ui/control/navigation_control.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; @@ -8,9 +6,9 @@ import window from '../../util/window'; import type Map from '../map'; type Options = { - showCompass?: boolean, - showZoom?: boolean, - visualizePitch?: boolean + showCompass?: boolean, + showZoom?: boolean, + visualizePitch?: boolean }; const defaultOptions: Options = { @@ -130,7 +128,7 @@ class NavigationControl { delete this._map; } - _createButton(className: string, fn: () => mixed) { + _createButton(className: string, fn: () => unknown) { const a = DOM.create('button', className, this._container); a.type = 'button'; a.addEventListener('click', fn); @@ -154,7 +152,7 @@ class MouseRotateWrapper { _startPos: Point; _lastPos: Point; - constructor(map: Map, element: HTMLElement, pitch?: boolean = false) { + constructor(map: Map, element: HTMLElement, pitch: boolean = false) { this._clickTolerance = 10; this.element = element; this.mouseRotate = new MouseRotateHandler({clickTolerance: map.dragRotate._mouseRotate._clickTolerance}); @@ -222,7 +220,7 @@ class MouseRotateWrapper { this.reset(); } else { this._startPos = this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0]; - this.down((({type: 'mousedown', button: 0, ctrlKey: true, preventDefault: () => e.preventDefault()}: any): MouseEvent), this._startPos); + this.down((({type: 'mousedown', button: 0, ctrlKey: true, preventDefault: () => e.preventDefault()} as any as MouseEvent)), this._startPos); } } @@ -231,7 +229,7 @@ class MouseRotateWrapper { this.reset(); } else { this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0]; - this.move((({preventDefault: () => e.preventDefault()}: any): MouseEvent), this._lastPos); + this.move((({preventDefault: () => e.preventDefault()} as any as MouseEvent)), this._lastPos); } } diff --git a/src/ui/control/scale_control.js b/src/ui/control/scale_control.ts similarity index 95% rename from src/ui/control/scale_control.js rename to src/ui/control/scale_control.ts index 9bfef57cd1..b855f89bd9 100644 --- a/src/ui/control/scale_control.js +++ b/src/ui/control/scale_control.ts @@ -1,15 +1,13 @@ -// @flow - import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import type Map from '../map'; -type Unit = 'imperial' | 'metric' | 'nautical'; +type Unit = "imperial" | "metric" | "nautical"; type Options = { - maxWidth?: number, - unit?: Unit; + maxWidth?: number, + unit?: Unit }; const defaultOptions: Options = { @@ -68,7 +66,7 @@ class ScaleControl { onRemove() { DOM.remove(this._container); this._map.off('move', this._onMove); - this._map = (undefined: any); + this._map = (undefined as any); } /** @@ -129,7 +127,7 @@ function getDecimalRoundNum(d) { } function getRoundNum(num) { - const pow10 = Math.pow(10, (`${Math.floor(num)}`).length - 1); + const pow10 = Math.pow(10, ((`${Math.floor(num)}`)).length - 1); let d = num / pow10; d = d >= 10 ? 10 : diff --git a/src/ui/default_locale.js b/src/ui/default_locale.ts similarity index 98% rename from src/ui/default_locale.js rename to src/ui/default_locale.ts index 92c548d450..3c29809a92 100644 --- a/src/ui/default_locale.js +++ b/src/ui/default_locale.ts @@ -1,5 +1,3 @@ -// @flow - const defaultLocale = { 'AttributionControl.ToggleAttribution': 'Toggle attribution', 'AttributionControl.MapFeedback': 'Map feedback', diff --git a/src/ui/events.js b/src/ui/events.ts similarity index 94% rename from src/ui/events.js rename to src/ui/events.ts index 60e53031d9..b0f0873fa4 100644 --- a/src/ui/events.js +++ b/src/ui/events.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event} from '../util/evented'; +import { Event } from '../util/evented'; import DOM from '../util/dom'; import Point from '@mapbox/point-geometry'; @@ -34,16 +32,7 @@ export class MapMouseEvent extends Event { * {@link Map.event:mouseout}, * {@link Map.event:contextmenu}). */ - type: 'mousedown' - | 'mouseup' - | 'click' - | 'dblclick' - | 'mousemove' - | 'mouseover' - | 'mouseenter' - | 'mouseleave' - | 'mouseout' - | 'contextmenu'; + type: "mousedown" | "mouseup" | "click" | "dblclick" | "mousemove" | "mouseover" | "mouseenter" | "mouseleave" | "mouseout" | "contextmenu"; /** * The `Map` object that fired the event. @@ -93,7 +82,7 @@ export class MapMouseEvent extends Event { /** * @private */ - constructor(type: string, map: Map, originalEvent: MouseEvent, data: Object = {}) { + constructor(type: string, map: Map, originalEvent: MouseEvent, data: any = {}) { const point = DOM.mousePos(map.getCanvasContainer(), originalEvent); const lngLat = map.unproject(point); super(type, extend({point, lngLat, originalEvent}, data)); @@ -110,9 +99,7 @@ export class MapTouchEvent extends Event { /** * The event type. */ - type: 'touchstart' - | 'touchend' - | 'touchcancel'; + type: "touchstart" | "touchend" | "touchcancel"; /** * The `Map` object that fired the event. @@ -194,7 +181,7 @@ export class MapWheelEvent extends Event { /** * The event type. */ - type: 'wheel'; + type: "wheel"; /** * The `Map` object that fired the event. @@ -243,11 +230,9 @@ export class MapWheelEvent extends Event { * @property {Map} target The `Map` instance that triggerred the event */ export type MapBoxZoomEvent = { - type: 'boxzoomstart' - | 'boxzoomend' - | 'boxzoomcancel', - target: Map, - originalEvent: MouseEvent + type: "boxzoomstart" | "boxzoomend" | "boxzoomcancel", + target: Map, + originalEvent: MouseEvent }; /** @@ -279,17 +264,16 @@ export type MapBoxZoomEvent = { * }); */ export type MapDataEvent = { - type: string, - dataType: string + type: string, + dataType: string }; export type MapContextEvent = { - type: 'webglcontextlost' | 'webglcontextrestored', - originalEvent: WebGLContextEvent -} + type: "webglcontextlost" | "webglcontextrestored", + originalEvent: WebGLContextEvent +}; -export type MapEvent = - /** +export type MapEvent = /** * Fired when a pointing device (usually a mouse) is pressed within the map. * * **Note:** This event is compatible with the optional `layerId` parameter. @@ -316,9 +300,9 @@ export type MapEvent = * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) */ - | 'mousedown' +"mousedown" - /** +/** * Fired when a pointing device (usually a mouse) is released within the map. * * **Note:** This event is compatible with the optional `layerId` parameter. @@ -344,10 +328,9 @@ export type MapEvent = * console.log('A mouseup event has occurred on a visible portion of the poi-label layer.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ - | 'mouseup' + */ | "mouseup" - /** +/** * Fired when a pointing device (usually a mouse) is moved within the map. * As you move the cursor across a web page containing a map, * the event will fire each time it enters the map or any child elements. @@ -377,10 +360,9 @@ export type MapEvent = * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/mouse-position/) * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-hover/) - */ - | 'mouseover' + */ | "mouseover" - /** +/** * Fired when a pointing device (usually a mouse) is moved while the cursor is inside the map. * As you move the cursor across the map, the event will fire every time the cursor changes position within the map. * @@ -409,10 +391,9 @@ export type MapEvent = * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/mouse-position/) * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on over](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-hover/) - */ - | 'mousemove' + */ | "mousemove" - /** +/** * Fired when a pointing device (usually a mouse) is pressed and released at the same point on the map. * * **Note:** This event is compatible with the optional `layerId` parameter. @@ -439,10 +420,9 @@ export type MapEvent = * }); * @see [Measure distances](https://maplibre.org/maplibre-gl-js-docs/example/measure/) * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js-docs/example/center-on-symbol/) - */ - | 'click' + */ | "click" - /** +/** * Fired when a pointing device (usually a mouse) is pressed and released twice at the same point on * the map in rapid succession. * @@ -468,10 +448,9 @@ export type MapEvent = * map.on('dblclick', 'poi-label', function(e) { * console.log('A dblclick event has occurred on a visible portion of the poi-label layer at ' + e.lngLat); * }); - */ - | 'dblclick' + */ | "dblclick" - /** +/** * Fired when a pointing device (usually a mouse) enters a visible portion of a specified layer from * outside that layer or outside the map canvas. * @@ -491,10 +470,9 @@ export type MapEvent = * }); * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js-docs/example/center-on-symbol/) * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-click/) - */ - | 'mouseenter' + */ | "mouseenter" - /** +/** * Fired when a pointing device (usually a mouse) leaves a visible portion of a specified layer, or leaves * the map canvas. * @@ -516,10 +494,9 @@ export type MapEvent = * }); * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-click/) - */ - | 'mouseleave' + */ | "mouseleave" - /** +/** * Fired when a point device (usually a mouse) leaves the map's canvas. * * @event mouseout @@ -535,10 +512,9 @@ export type MapEvent = * map.on('mouseout', function() { * console.log('A mouseout event occurred.'); * }); - */ - | 'mouseout' + */ | "mouseout" - /** +/** * Fired when the right button of the mouse is clicked or the context menu key is pressed within the map. * * @event contextmenu @@ -554,10 +530,9 @@ export type MapEvent = * map.on('contextmenu', function() { * console.log('A contextmenu event occurred.'); * }); - */ - | 'contextmenu' + */ | "contextmenu" - /** +/** * Fired when a [`wheel`](https://developer.mozilla.org/en-US/docs/Web/Events/wheel) event occurs within the map. * * @event wheel @@ -572,10 +547,9 @@ export type MapEvent = * map.on('wheel', function() { * console.log('A wheel event occurred.'); * }); - */ - | 'wheel' + */ | "wheel" - /** +/** * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the map. * * @event touchstart @@ -590,10 +564,9 @@ export type MapEvent = * console.log('A touchstart event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ - | 'touchstart' + */ | "touchstart" - /** +/** * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the map. * * @event touchend @@ -609,10 +582,9 @@ export type MapEvent = * console.log('A touchstart event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ - | 'touchend' + */ | "touchend" - /** +/** * Fired when a [`touchmove`](https://developer.mozilla.org/en-US/docs/Web/Events/touchmove) event occurs within the map. * * @event touchmove @@ -628,10 +600,9 @@ export type MapEvent = * console.log('A touchmove event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ - | 'touchmove' + */ | "touchmove" - /** +/** * Fired when a [`touchcancel`](https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel) event occurs within the map. * * @event touchcancel @@ -646,10 +617,9 @@ export type MapEvent = * map.on('touchcancel', function() { * console.log('A touchcancel event occurred.'); * }); - */ - | 'touchcancel' + */ | "touchcancel" - /** +/** * Fired just before the map begins a transition from one * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}. * @@ -666,10 +636,9 @@ export type MapEvent = * map.on('movestart', function() { * console.log('A movestart` event occurred.'); * }); - */ - | 'movestart' + */ | "movestart" - /** +/** * Fired repeatedly during an animated transition from one view to * another, as the result of either user interaction or methods such as {@link Map#flyTo}. * @@ -686,10 +655,9 @@ export type MapEvent = * console.log('A move event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ - | 'move' + */ | "move" - /** +/** * Fired just after the map completes a transition from one * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}. * @@ -706,10 +674,9 @@ export type MapEvent = * console.log('A moveend event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ - | 'moveend' + */ | "moveend" - /** +/** * Fired when a "drag to pan" interaction starts. See {@link DragPanHandler}. * * @event dragstart @@ -724,10 +691,9 @@ export type MapEvent = * map.on('dragstart', function() { * console.log('A dragstart event occurred.'); * }); - */ - | 'dragstart' + */ | "dragstart" - /** +/** * Fired repeatedly during a "drag to pan" interaction. See {@link DragPanHandler}. * * @event drag @@ -742,10 +708,9 @@ export type MapEvent = * map.on('drag', function() { * console.log('A drag event occurred.'); * }); - */ - | 'drag' + */ | "drag" - /** +/** * Fired when a "drag to pan" interaction ends. See {@link DragPanHandler}. * * @event dragend @@ -761,10 +726,9 @@ export type MapEvent = * console.log('A dragend event occurred.'); * }); * @see [Create a draggable marker](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-marker/) - */ - | 'dragend' + */ | "dragend" - /** +/** * Fired just before the map begins a transition from one zoom level to another, * as the result of either user interaction or methods such as {@link Map#flyTo}. * @@ -780,10 +744,9 @@ export type MapEvent = * map.on('zoomstart', function() { * console.log('A zoomstart event occurred.'); * }); - */ - | 'zoomstart' + */ | "zoomstart" - /** +/** * Fired repeatedly during an animated transition from one zoom level to another, * as the result of either user interaction or methods such as {@link Map#flyTo}. * @@ -799,10 +762,9 @@ export type MapEvent = * map.on('zoom', function() { * console.log('A zoom event occurred.'); * }); - */ - | 'zoom' + */ | "zoom" - /** +/** * Fired just after the map completes a transition from one zoom level to another, * as the result of either user interaction or methods such as {@link Map#flyTo}. * @@ -818,10 +780,9 @@ export type MapEvent = * map.on('zoomend', function() { * console.log('A zoomend event occurred.'); * }); - */ - | 'zoomend' + */ | "zoomend" - /** +/** * Fired when a "drag to rotate" interaction starts. See {@link DragRotateHandler}. * * @event rotatestart @@ -836,10 +797,9 @@ export type MapEvent = * map.on('rotatestart', function() { * console.log('A rotatestart event occurred.'); * }); - */ - | 'rotatestart' + */ | "rotatestart" - /** +/** * Fired repeatedly during a "drag to rotate" interaction. See {@link DragRotateHandler}. * * @event rotate @@ -854,10 +814,9 @@ export type MapEvent = * map.on('rotate', function() { * console.log('A rotate event occurred.'); * }); - */ - | 'rotate' + */ | "rotate" - /** +/** * Fired when a "drag to rotate" interaction ends. See {@link DragRotateHandler}. * * @event rotateend @@ -872,10 +831,9 @@ export type MapEvent = * map.on('rotateend', function() { * console.log('A rotateend event occurred.'); * }); - */ - | 'rotateend' + */ | "rotateend" - /** +/** * Fired whenever the map's pitch (tilt) begins a change as * the result of either user interaction or methods such as {@link Map#flyTo} . * @@ -891,10 +849,9 @@ export type MapEvent = * map.on('pitchstart', function() { * console.log('A pitchstart event occurred.'); * }); - */ - | 'pitchstart' + */ | "pitchstart" - /** +/** * Fired repeatedly during the map's pitch (tilt) animation between * one state and another as the result of either user interaction * or methods such as {@link Map#flyTo}. @@ -911,10 +868,9 @@ export type MapEvent = * map.on('pitch', function() { * console.log('A pitch event occurred.'); * }); - */ - | 'pitch' + */ | "pitch" - /** +/** * Fired immediately after the map's pitch (tilt) finishes changing as * the result of either user interaction or methods such as {@link Map#flyTo}. * @@ -930,10 +886,9 @@ export type MapEvent = * map.on('pitchend', function() { * console.log('A pitchend event occurred.'); * }); - */ - | 'pitchend' + */ | "pitchend" - /** +/** * Fired when a "box zoom" interaction starts. See {@link BoxZoomHandler}. * * @event boxzoomstart @@ -948,10 +903,9 @@ export type MapEvent = * map.on('boxzoomstart', function() { * console.log('A boxzoomstart event occurred.'); * }); - */ - | 'boxzoomstart' + */ | "boxzoomstart" - /** +/** * Fired when a "box zoom" interaction ends. See {@link BoxZoomHandler}. * * @event boxzoomend @@ -967,10 +921,9 @@ export type MapEvent = * map.on('boxzoomend', function() { * console.log('A boxzoomend event occurred.'); * }); - */ - | 'boxzoomend' + */ | "boxzoomend" - /** +/** * Fired when the user cancels a "box zoom" interaction, or when the bounding box does not meet the minimum size threshold. * See {@link BoxZoomHandler}. * @@ -986,10 +939,9 @@ export type MapEvent = * map.on('boxzoomcancel', function() { * console.log('A boxzoomcancel event occurred.'); * }); - */ - | 'boxzoomcancel' + */ | "boxzoomcancel" - /** +/** * Fired immediately after the map has been resized. * * @event resize @@ -1003,10 +955,9 @@ export type MapEvent = * map.on('resize', function() { * console.log('A resize event occurred.'); * }); - */ - | 'resize' + */ | "resize" - /** +/** * Fired when the WebGL context is lost. * * @event webglcontextlost @@ -1020,10 +971,9 @@ export type MapEvent = * map.on('webglcontextlost', function() { * console.log('A webglcontextlost event occurred.'); * }); - */ - | 'webglcontextlost' + */ | "webglcontextlost" - /** +/** * Fired when the WebGL context is restored. * * @event webglcontextrestored @@ -1037,10 +987,9 @@ export type MapEvent = * map.on('webglcontextrestored', function() { * console.log('A webglcontextrestored event occurred.'); * }); - */ - | 'webglcontextrestored' + */ | "webglcontextrestored" - /** +/** * Fired immediately after all necessary resources have been downloaded * and the first visually complete rendering of the map has occurred. * @@ -1059,10 +1008,9 @@ export type MapEvent = * @see [Draw GeoJSON points](https://maplibre.org/maplibre-gl-js-docs/example/geojson-markers/) * @see [Add live realtime data](https://maplibre.org/maplibre-gl-js-docs/example/live-geojson/) * @see [Animate a point](https://maplibre.org/maplibre-gl-js-docs/example/animate-point-along-line/) - */ - | 'load' + */ | "load" - /** +/** * Fired whenever the map is drawn to the screen, as the result of * * - a change to the map's position, zoom, pitch, or bearing @@ -1081,10 +1029,9 @@ export type MapEvent = * map.on('render', function() { * console.log('A render event occurred.'); * }); - */ - | 'render' + */ | "render" - /** +/** * Fired after the last frame rendered before the map enters an * "idle" state: * @@ -1103,10 +1050,9 @@ export type MapEvent = * map.on('idle', function() { * console.log('A idle event occurred.'); * }); - */ - | 'idle' + */ | "idle" - /** +/** * Fired immediately after the map has been removed with {@link Map.event:remove}. * * @event remove @@ -1120,10 +1066,9 @@ export type MapEvent = * map.on('remove', function() { * console.log('A remove event occurred.'); * }); - */ - | 'remove' + */ | "remove" - /** +/** * Fired when an error occurs. This is GL JS's primary error reporting * mechanism. We use an event instead of `throw` to better accommodate * asyncronous operations. If no listeners are bound to the `error` event, the @@ -1141,10 +1086,9 @@ export type MapEvent = * map.on('error', function() { * console.log('A error event occurred.'); * }); - */ - | 'error' + */ | "error" - /** +/** * Fired when any map data loads or changes. See {@link MapDataEvent} * for more information. * @@ -1161,10 +1105,9 @@ export type MapEvent = * console.log('A data event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ - | 'data' + */ | "data" - /** +/** * Fired when the map's style loads or changes. See * {@link MapDataEvent} for more information. * @@ -1180,10 +1123,9 @@ export type MapEvent = * map.on('styledata', function() { * console.log('A styledata event occurred.'); * }); - */ - | 'styledata' + */ | "styledata" - /** +/** * Fired when one of the map's sources loads or changes, including if a tile belonging * to a source loads or changes. See {@link MapDataEvent} for more information. * @@ -1199,10 +1141,9 @@ export type MapEvent = * map.on('sourcedata', function() { * console.log('A sourcedata event occurred.'); * }); - */ - | 'sourcedata' + */ | "sourcedata" - /** +/** * Fired when any map data (style, source, tile, etc) begins loading or * changing asyncronously. All `dataloading` events are followed by a `data` * or `error` event. See {@link MapDataEvent} for more information. @@ -1220,10 +1161,9 @@ export type MapEvent = * map.on('dataloading', function() { * console.log('A dataloading event occurred.'); * }); - */ - | 'dataloading' + */ | "dataloading" - /** +/** * Fired when the map's style begins loading or changing asyncronously. * All `styledataloading` events are followed by a `styledata` * or `error` event. See {@link MapDataEvent} for more information. @@ -1241,10 +1181,9 @@ export type MapEvent = * map.on('styledataloading', function() { * console.log('A styledataloading event occurred.'); * }); - */ - | 'styledataloading' + */ | "styledataloading" - /** +/** * Fired when one of the map's sources begins loading or changing asyncronously. * All `sourcedataloading` events are followed by a `sourcedata` or `error` event. * See {@link MapDataEvent} for more information. @@ -1262,10 +1201,9 @@ export type MapEvent = * map.on('sourcedataloading', function() { * console.log('A sourcedataloading event occurred.'); * }); - */ - | 'sourcedataloading' + */ | "sourcedataloading" - /** +/** * Fired when an icon or pattern needed by the style is missing. The missing image can * be added with {@link Map#addImage} within this event listener callback to prevent the image from * being skipped. This event can be used to dynamically generate icons and patterns. @@ -1283,13 +1221,11 @@ export type MapEvent = * console.log('A styleimagemissing event occurred.'); * }); * @see [Generate and add a missing icon to the map](https://mapbox.com/mapbox-gl-js/example/add-image-missing-generated/) - */ - | 'styleimagemissing' + */ | "styleimagemissing" - /** +/** * @event style.load * @memberof Map * @instance * @private - */ - | 'style.load'; + */ | "style.load"; diff --git a/src/ui/handler/box_zoom.js b/src/ui/handler/box_zoom.ts similarity index 97% rename from src/ui/handler/box_zoom.js rename to src/ui/handler/box_zoom.ts index a7f1357c01..cd308f5b99 100644 --- a/src/ui/handler/box_zoom.js +++ b/src/ui/handler/box_zoom.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import {Event} from '../../util/evented'; @@ -25,7 +23,7 @@ class BoxZoomHandler { * @private */ constructor(map: Map, options: { - clickTolerance: number + clickTolerance: number }) { this._map = map; this._el = map.getCanvasContainer(); @@ -149,7 +147,7 @@ class BoxZoomHandler { if (this._box) { DOM.remove(this._box); - this._box = (null: any); + this._box = (null as any); } DOM.enableDrag(); @@ -158,7 +156,7 @@ class BoxZoomHandler { delete this._lastPos; } - _fireEvent(type: string, e: *) { + _fireEvent(type: string, e: any) { return this._map.fire(new Event(type, {originalEvent: e})); } } diff --git a/src/ui/handler/click_zoom.js b/src/ui/handler/click_zoom.ts similarity index 98% rename from src/ui/handler/click_zoom.js rename to src/ui/handler/click_zoom.ts index 822de90939..e99c18a5b4 100644 --- a/src/ui/handler/click_zoom.js +++ b/src/ui/handler/click_zoom.ts @@ -1,5 +1,3 @@ -// @flow - import type Point from '@mapbox/point-geometry'; import type Map from '../map'; diff --git a/src/ui/handler/handler_util.js b/src/ui/handler/handler_util.ts similarity index 96% rename from src/ui/handler/handler_util.js rename to src/ui/handler/handler_util.ts index 493f93d626..af67c25c46 100644 --- a/src/ui/handler/handler_util.js +++ b/src/ui/handler/handler_util.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; export function indexTouches(touches: Array, points: Array) { diff --git a/src/ui/handler/keyboard.js b/src/ui/handler/keyboard.ts similarity index 99% rename from src/ui/handler/keyboard.js rename to src/ui/handler/keyboard.ts index faf22a172d..d574d6ecbb 100644 --- a/src/ui/handler/keyboard.js +++ b/src/ui/handler/keyboard.ts @@ -1,5 +1,3 @@ -// @flow - import type Map from '../map'; const defaultOptions = { diff --git a/src/ui/handler/map_event.js b/src/ui/handler/map_event.ts similarity index 96% rename from src/ui/handler/map_event.js rename to src/ui/handler/map_event.ts index 31b46e5ba2..1aaf05d7f4 100644 --- a/src/ui/handler/map_event.js +++ b/src/ui/handler/map_event.ts @@ -1,6 +1,4 @@ -// @flow - -import {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events'; +import { MapMouseEvent, MapTouchEvent, MapWheelEvent } from '../events'; import type Map from '../map'; export class MapEventHandler { @@ -9,7 +7,9 @@ export class MapEventHandler { _clickTolerance: number; _map: Map; - constructor(map: Map, options: { clickTolerance: number }) { + constructor(map: Map, options: { + clickTolerance: number + }) { this._map = map; this._clickTolerance = options.clickTolerance; } diff --git a/src/ui/handler/mouse.js b/src/ui/handler/mouse.ts similarity index 98% rename from src/ui/handler/mouse.js rename to src/ui/handler/mouse.ts index 3cf5c53281..6c929eb235 100644 --- a/src/ui/handler/mouse.js +++ b/src/ui/handler/mouse.ts @@ -1,5 +1,3 @@ -// @flow - import DOM from '../../util/dom'; import type Point from '@mapbox/point-geometry'; @@ -26,7 +24,9 @@ class MouseHandler { _moved: boolean; _clickTolerance: number; - constructor(options: { clickTolerance: number }) { + constructor(options: { + clickTolerance: number + }) { this.reset(); this._clickTolerance = options.clickTolerance || 1; } diff --git a/src/ui/handler/scroll_zoom.js b/src/ui/handler/scroll_zoom.ts similarity index 94% rename from src/ui/handler/scroll_zoom.js rename to src/ui/handler/scroll_zoom.ts index 1ae4553487..610e3550fb 100644 --- a/src/ui/handler/scroll_zoom.js +++ b/src/ui/handler/scroll_zoom.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import DOM from '../../util/dom'; @@ -37,21 +35,25 @@ class ScrollZoomHandler { _aroundCenter: boolean; _around: Point; _aroundPoint: Point; - _type: 'wheel' | 'trackpad' | null; + _type: "wheel" | "trackpad" | null; _lastValue: number; - _timeout: ?TimeoutID; // used for delayed-handling of a single wheel movement - _finishTimeout: ?TimeoutID; // used to delay final '{move,zoom}end' events + _timeout: TimeoutID | undefined | null; // used for delayed-handling of a single wheel movement + _finishTimeout: TimeoutID | undefined | null; // used to delay final '{move,zoom}end' events _lastWheelEvent: any; _lastWheelEventTime: number; - _startZoom: ?number; - _targetZoom: ?number; + _startZoom: number | undefined | null; + _targetZoom: number | undefined | null; _delta: number; - _easing: ?((number) => number); - _prevEase: ?{start: number, duration: number, easing: (_: number) => number}; - - _frameId: ?boolean; + _easing: ((a: number) => number) | undefined | null; + _prevEase: { + start: number, + duration: number, + easing: (_: number) => number + } | undefined | null; + + _frameId: boolean | undefined | null; _handler: HandlerManager; _defaultZoomRate: number; @@ -149,7 +151,7 @@ class ScrollZoomHandler { if (!this.isEnabled()) return; // Remove `any` cast when https://github.com/facebook/flow/issues/4879 is fixed. - let value = e.deltaMode === (window.WheelEvent: any).DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY; + let value = e.deltaMode === (window.WheelEvent as any).DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY; const now = browser.now(), timeDelta = now - (this._lastWheelEventTime || 0); diff --git a/src/ui/handler/shim/dblclick_zoom.js b/src/ui/handler/shim/dblclick_zoom.ts similarity index 99% rename from src/ui/handler/shim/dblclick_zoom.js rename to src/ui/handler/shim/dblclick_zoom.ts index b63cfbada6..a3916f1774 100644 --- a/src/ui/handler/shim/dblclick_zoom.js +++ b/src/ui/handler/shim/dblclick_zoom.ts @@ -1,5 +1,3 @@ -// @flow - import type ClickZoomHandler from '../click_zoom'; import type TapZoomHandler from './../tap_zoom'; diff --git a/src/ui/handler/shim/drag_pan.js b/src/ui/handler/shim/drag_pan.ts similarity index 92% rename from src/ui/handler/shim/drag_pan.js rename to src/ui/handler/shim/drag_pan.ts index 4cfbf85f03..e15c3e1294 100644 --- a/src/ui/handler/shim/drag_pan.js +++ b/src/ui/handler/shim/drag_pan.ts @@ -1,13 +1,11 @@ -// @flow - -import type {MousePanHandler} from '../mouse'; +import type { MousePanHandler } from '../mouse'; import type TouchPanHandler from './../touch_pan'; export type DragPanOptions = { - linearity?: number; - easing?: (t: number) => number; - deceleration?: number; - maxSpeed?: number; + linearity?: number, + easing?: (t: number) => number, + deceleration?: number, + maxSpeed?: number }; /** @@ -19,7 +17,7 @@ export default class DragPanHandler { _el: HTMLElement; _mousePan: MousePanHandler; _touchPan: TouchPanHandler; - _inertiaOptions: DragPanOptions + _inertiaOptions: DragPanOptions; /** * @private diff --git a/src/ui/handler/shim/drag_rotate.js b/src/ui/handler/shim/drag_rotate.ts similarity index 90% rename from src/ui/handler/shim/drag_rotate.js rename to src/ui/handler/shim/drag_rotate.ts index 22141fa511..f9895beb58 100644 --- a/src/ui/handler/shim/drag_rotate.js +++ b/src/ui/handler/shim/drag_rotate.ts @@ -1,6 +1,4 @@ -// @flow - -import type {MouseRotateHandler, MousePitchHandler} from '../mouse'; +import type { MouseRotateHandler, MousePitchHandler } from '../mouse'; /** * The `DragRotateHandler` allows the user to rotate the map by clicking and @@ -19,7 +17,9 @@ export default class DragRotateHandler { * @param {bool} [options.pitchWithRotate=true] Control the map pitch in addition to the bearing * @private */ - constructor(options: {pitchWithRotate: boolean}, mouseRotate: MouseRotateHandler, mousePitch: MousePitchHandler) { + constructor(options: { + pitchWithRotate: boolean + }, mouseRotate: MouseRotateHandler, mousePitch: MousePitchHandler) { this._pitchWithRotate = options.pitchWithRotate; this._mouseRotate = mouseRotate; this._mousePitch = mousePitch; diff --git a/src/ui/handler/shim/touch_zoom_rotate.js b/src/ui/handler/shim/touch_zoom_rotate.ts similarity index 95% rename from src/ui/handler/shim/touch_zoom_rotate.js rename to src/ui/handler/shim/touch_zoom_rotate.ts index 61b6e47f79..900ffe252b 100644 --- a/src/ui/handler/shim/touch_zoom_rotate.js +++ b/src/ui/handler/shim/touch_zoom_rotate.ts @@ -1,6 +1,4 @@ -// @flow - -import type {TouchZoomHandler, TouchRotateHandler} from '../touch_zoom_rotate'; +import type { TouchZoomHandler, TouchRotateHandler } from '../touch_zoom_rotate'; import type TapDragZoomHandler from '../tap_drag_zoom'; /** @@ -42,7 +40,9 @@ export default class TouchZoomRotateHandler { * @example * map.touchZoomRotate.enable({ around: 'center' }); */ - enable(options: ?{around?: 'center'}) { + enable(options?: { + around?: "center" + } | null) { this._touchZoom.enable(options); if (!this._rotationDisabled) this._touchRotate.enable(options); this._tapDragZoom.enable(); diff --git a/src/ui/handler/tap_drag_zoom.js b/src/ui/handler/tap_drag_zoom.ts similarity index 96% rename from src/ui/handler/tap_drag_zoom.js rename to src/ui/handler/tap_drag_zoom.ts index d8bf435a2c..494a919c56 100644 --- a/src/ui/handler/tap_drag_zoom.js +++ b/src/ui/handler/tap_drag_zoom.ts @@ -1,6 +1,4 @@ -// @flow - -import {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer'; +import { TapRecognizer, MAX_TAP_INTERVAL } from './tap_recognizer'; import type Point from '@mapbox/point-geometry'; export default class TapDragZoomHandler { diff --git a/src/ui/handler/tap_recognizer.js b/src/ui/handler/tap_recognizer.ts similarity index 94% rename from src/ui/handler/tap_recognizer.js rename to src/ui/handler/tap_recognizer.ts index 01e9dee629..445ee35c82 100644 --- a/src/ui/handler/tap_recognizer.js +++ b/src/ui/handler/tap_recognizer.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import {indexTouches} from './handler_util'; @@ -21,9 +19,13 @@ export class SingleTapRecognizer { centroid: Point; startTime: number; aborted: boolean; - touches: { [number | string]: Point }; + touches: { + [k in number | string]: Point; + }; - constructor(options: { numTouches: number }) { + constructor(options: { + numTouches: number + }) { this.reset(); this.numTouches = options.numTouches; } @@ -89,7 +91,10 @@ export class TapRecognizer { lastTap: Point; count: number; - constructor(options: { numTaps: number, numTouches: number }) { + constructor(options: { + numTaps: number, + numTouches: number + }) { this.singleTap = new SingleTapRecognizer(options); this.numTaps = options.numTaps; this.reset(); diff --git a/src/ui/handler/tap_zoom.js b/src/ui/handler/tap_zoom.ts similarity index 97% rename from src/ui/handler/tap_zoom.js rename to src/ui/handler/tap_zoom.ts index 1aee59d1e8..651419736a 100644 --- a/src/ui/handler/tap_zoom.js +++ b/src/ui/handler/tap_zoom.ts @@ -1,6 +1,4 @@ -// @flow - -import {TapRecognizer} from './tap_recognizer'; +import { TapRecognizer } from './tap_recognizer'; import type Point from '@mapbox/point-geometry'; import type Map from '../map'; diff --git a/src/ui/handler/touch_pan.js b/src/ui/handler/touch_pan.ts similarity index 95% rename from src/ui/handler/touch_pan.js rename to src/ui/handler/touch_pan.ts index 6a879efb82..d1ad91ddaa 100644 --- a/src/ui/handler/touch_pan.js +++ b/src/ui/handler/touch_pan.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import {indexTouches} from './handler_util'; @@ -7,12 +5,16 @@ export default class TouchPanHandler { _enabled: boolean; _active: boolean; - _touches: { [string | number]: Point }; + _touches: { + [k in string | number]: Point; + }; _minTouches: number; _clickTolerance: number; _sum: Point; - constructor(options: { clickTolerance: number }) { + constructor(options: { + clickTolerance: number + }) { this._minTouches = 1; this._clickTolerance = options.clickTolerance || 1; this.reset(); diff --git a/src/ui/handler/touch_zoom_rotate.js b/src/ui/handler/touch_zoom_rotate.ts similarity index 99% rename from src/ui/handler/touch_zoom_rotate.js rename to src/ui/handler/touch_zoom_rotate.ts index 8e7b910c20..ce6eb7b09d 100644 --- a/src/ui/handler/touch_zoom_rotate.js +++ b/src/ui/handler/touch_zoom_rotate.ts @@ -1,5 +1,3 @@ -// @flow - import Point from '@mapbox/point-geometry'; import DOM from '../../util/dom'; @@ -71,7 +69,9 @@ class TwoTouchHandler { this.reset(); } - enable(options: ?{around?: 'center'}) { + enable(options?: { + around?: "center" + } | null) { this._enabled = true; this._aroundCenter = !!options && options.around === 'center'; } diff --git a/src/ui/handler_inertia.js b/src/ui/handler_inertia.ts similarity index 96% rename from src/ui/handler_inertia.js rename to src/ui/handler_inertia.ts index 7c3fc13dfc..4352771282 100644 --- a/src/ui/handler_inertia.js +++ b/src/ui/handler_inertia.ts @@ -1,5 +1,3 @@ -// @flow - import browser from '../util/browser'; import type Map from './map'; import {bezier, clamp, extend} from '../util/util'; @@ -32,17 +30,20 @@ const defaultPitchInertiaOptions = extend({ }, defaultInertiaOptions); export type InertiaOptions = { - linearity: number; - easing: (t: number) => number; - deceleration: number; - maxSpeed: number; + linearity: number, + easing: (t: number) => number, + deceleration: number, + maxSpeed: number }; export type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent; export default class HandlerInertia { _map: Map; - _inertiaBuffer: Array<{ time: number, settings: Object }>; + _inertiaBuffer: Array<{ + time: number, + settings: any + }>; constructor(map: Map) { this._map = map; diff --git a/src/ui/handler_manager.js b/src/ui/handler_manager.ts similarity index 81% rename from src/ui/handler_manager.js rename to src/ui/handler_manager.ts index 56d538443c..dec726c2a6 100644 --- a/src/ui/handler_manager.js +++ b/src/ui/handler_manager.ts @@ -1,6 +1,4 @@ -// @flow - -import {Event} from '../util/evented'; +import { Event } from '../util/evented'; import DOM from '../util/dom'; import type Map from './map'; import HandlerInertia from './handler_inertia'; @@ -28,7 +26,7 @@ export type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent; const isMoving = p => p.zoom || p.drag || p.pitch || p.rotate; class RenderFrameEvent extends Event { - type: 'renderFrame'; + type: "renderFrame"; timeStamp: number; } @@ -39,54 +37,50 @@ class RenderFrameEvent extends Event { // For example, if there is a mousedown and mousemove, the mousePan handler // would return a `panDelta` on the mousemove. export interface Handler { - enable(): void; - disable(): void; - isEnabled(): boolean; - isActive(): boolean; - - // `reset` can be called by the manager at any time and must reset everything to it's original state - reset(): void; - - // Handlers can optionally implement these methods. - // They are called with dom events whenever those dom evens are received. - +touchstart?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; - +touchmove?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; - +touchend?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; - +touchcancel?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; - +mousedown?: (e: MouseEvent, point: Point) => HandlerResult | void; - +mousemove?: (e: MouseEvent, point: Point) => HandlerResult | void; - +mouseup?: (e: MouseEvent, point: Point) => HandlerResult | void; - +dblclick?: (e: MouseEvent, point: Point) => HandlerResult | void; - +wheel?: (e: WheelEvent, point: Point) => HandlerResult | void; - +keydown?: (e: KeyboardEvent) => HandlerResult | void; - +keyup?: (e: KeyboardEvent) => HandlerResult | void; - - // `renderFrame` is the only non-dom event. It is called during render - // frames and can be used to smooth camera changes (see scroll handler). - +renderFrame?: () => HandlerResult | void; + enable(): void; + disable(): void; + isEnabled(): boolean; + isActive(): boolean; + // `reset` can be called by the manager at any time and must reset everything to it's original state + reset(): void; + // Handlers can optionally implement these methods. + // They are called with dom events whenever those dom evens are received. + readonly touchstart?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; + readonly touchmove?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; + readonly touchend?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; + readonly touchcancel?: (e: TouchEvent, points: Array, mapTouches: Array) => HandlerResult | void; + readonly mousedown?: (e: MouseEvent, point: Point) => HandlerResult | void; + readonly mousemove?: (e: MouseEvent, point: Point) => HandlerResult | void; + readonly mouseup?: (e: MouseEvent, point: Point) => HandlerResult | void; + readonly dblclick?: (e: MouseEvent, point: Point) => HandlerResult | void; + readonly wheel?: (e: WheelEvent, point: Point) => HandlerResult | void; + readonly keydown?: (e: KeyboardEvent) => HandlerResult | void; + readonly keyup?: (e: KeyboardEvent) => HandlerResult | void; + // `renderFrame` is the only non-dom event. It is called during render + // frames and can be used to smooth camera changes (see scroll handler). + readonly renderFrame?: () => HandlerResult | void; } // All handler methods that are called with events can optionally return a `HandlerResult`. -export type HandlerResult = {| - panDelta?: Point, - zoomDelta?: number, - bearingDelta?: number, - pitchDelta?: number, - // the point to not move when changing the camera - around?: Point | null, - // same as above, except for pinch actions, which are given higher priority - pinchAround?: Point | null, - // A method that can fire a one-off easing by directly changing the map's camera. - cameraAnimation?: (map: Map) => any; - - // The last three properties are needed by only one handler: scrollzoom. - // The DOM event to be used as the `originalEvent` on any camera change events. - originalEvent?: any, - // Makes the manager trigger a frame, allowing the handler to return multiple results over time (see scrollzoom). - needsRenderFrame?: boolean, - // The camera changes won't get recorded for inertial zooming. - noInertia?: boolean -|}; +export type HandlerResult = { + panDelta?: Point, + zoomDelta?: number, + bearingDelta?: number, + pitchDelta?: number, + // the point to not move when changing the camera + around?: Point | null, + // same as above, except for pinch actions, which are given higher priority + pinchAround?: Point | null, + // A method that can fire a one-off easing by directly changing the map's camera. + cameraAnimation?: (map: Map) => any, + // The last three properties are needed by only one handler: scrollzoom. + // The DOM event to be used as the `originalEvent` on any camera change events. + originalEvent?: any, + // Makes the manager trigger a frame, allowing the handler to return multiple results over time (see scrollzoom). + needsRenderFrame?: boolean, + // The camera changes won't get recorded for inertial zooming. + noInertia?: boolean +}; function hasChange(result: HandlerResult) { return (result.panDelta && result.panDelta.mag()) || result.zoomDelta || result.bearingDelta || result.pitchDelta; @@ -95,18 +89,34 @@ function hasChange(result: HandlerResult) { class HandlerManager { _map: Map; _el: HTMLElement; - _handlers: Array<{ handlerName: string, handler: Handler, allowed: any }>; - _eventsInProgress: Object; + _handlers: Array<{ + handlerName: string, + handler: Handler, + allowed: any + }>; + _eventsInProgress: any; _frameId: number; _inertia: HandlerInertia; _bearingSnap: number; - _handlersById: { [string]: Handler }; + _handlersById: { + [x: string]: Handler + }; _updatingCamera: boolean; - _changes: Array<[HandlerResult, Object, any]>; - _previousActiveHandlers: { [string]: Handler }; - _listeners: Array<[HTMLElement, string, void | {passive?: boolean, capture?: boolean}]>; - - constructor(map: Map, options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number, bearingSnap: number}) { + _changes: Array<[HandlerResult, any, any]>; + _previousActiveHandlers: { + [x: string]: Handler + }; + _listeners: Array<[HTMLElement, string, void | { + passive?: boolean, + capture?: boolean + }]>; + + constructor(map: Map, options: { + interactive: boolean, + pitchWithRotate: boolean, + clickTolerance: number, + bearingSnap: number + }) { this._map = map; this._el = this._map.getCanvasContainer(); this._handlers = []; @@ -176,7 +186,11 @@ class HandlerManager { } } - _addDefaultHandlers(options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number }) { + _addDefaultHandlers(options: { + interactive: boolean, + pitchWithRotate: boolean, + clickTolerance: number + }) { const map = this._map; const el = map.getCanvasContainer(); this._add('mapEvent', new MapEventHandler(map, options)); @@ -223,8 +237,8 @@ class HandlerManager { this._add('blockableMapEvent', new BlockableMapEventHandler(map)); for (const name of ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']) { - if (options.interactive && (options: any)[name]) { - (map: any)[name].enable((options: any)[name]); + if (options.interactive && (options as any)[name]) { + (map as any)[name].enable((options as any)[name]); } } } @@ -264,7 +278,9 @@ class HandlerManager { return Boolean(isMoving(this._eventsInProgress)) || this.isZooming(); } - _blockedByActive(activeHandlers: { [string]: Handler }, allowed: Array, myName: string) { + _blockedByActive(activeHandlers: { + [x: string]: Handler + }, allowed: Array, myName: string) { for (const name in activeHandlers) { if (name === myName) continue; if (!allowed || allowed.indexOf(name) < 0) { @@ -281,12 +297,12 @@ class HandlerManager { _getMapTouches(touches: TouchList) { const mapTouches = []; for (const t of touches) { - const target = ((t.target: any): Node); + const target = (t.target as any as Node); if (this._el.contains(target)) { mapTouches.push(t); } } - return ((mapTouches: any): TouchList); + return mapTouches as any as TouchList; } handleEvent(e: InputEvent | RenderFrameEvent, eventName?: string) { @@ -299,7 +315,7 @@ class HandlerManager { this._updatingCamera = true; assert(e.timeStamp !== undefined); - const inputEvent = e.type === 'renderFrame' ? undefined : ((e: any): InputEvent); + const inputEvent = e.type === 'renderFrame' ? undefined : (e as any as InputEvent); /* * We don't call e.preventDefault() for any events by default. @@ -310,8 +326,8 @@ class HandlerManager { const eventsInProgress = {}; const activeHandlers = {}; - const mapTouches = e.touches ? this._getMapTouches(((e: any): TouchEvent).touches) : undefined; - const points = mapTouches ? DOM.touchPos(this._el, mapTouches) : DOM.mousePos(this._el, ((e: any): MouseEvent)); + const mapTouches = e.touches ? this._getMapTouches((e as any as TouchEvent).touches) : undefined; + const points = mapTouches ? DOM.touchPos(this._el, mapTouches) : DOM.mousePos(this._el, ((e as any as MouseEvent))); for (const {handlerName, handler, allowed} of this._handlers) { if (!handler.isEnabled()) continue; @@ -321,8 +337,8 @@ class HandlerManager { handler.reset(); } else { - if ((handler: any)[eventName || e.type]) { - data = (handler: any)[eventName || e.type](e, points, mapTouches); + if ((handler as any)[eventName || e.type]) { + data = (handler as any)[eventName || e.type](e, points, mapTouches); this.mergeHandlerResult(mergedHandlerResult, eventsInProgress, data, handlerName, inputEvent); if (data && data.needsRenderFrame) { this._triggerRenderFrame(); @@ -363,7 +379,7 @@ class HandlerManager { } } - mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: Object, handlerResult: HandlerResult, name: string, e?: InputEvent) { + mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: any, handlerResult: HandlerResult, name: string, e?: InputEvent) { if (!handlerResult) return; extend(mergedHandlerResult, handlerResult); @@ -409,7 +425,7 @@ class HandlerManager { this._changes = []; } - _updateMapTransform(combinedResult: any, combinedEventsInProgress: Object, deactivatedHandlers: Object) { + _updateMapTransform(combinedResult: any, combinedEventsInProgress: any, deactivatedHandlers: any) { const map = this._map; const tr = map.transform; @@ -440,7 +456,9 @@ class HandlerManager { } - _fireEvents(newEventsInProgress: { [string]: Object }, deactivatedHandlers: Object, allowEndAnimation: boolean) { + _fireEvents(newEventsInProgress: { + [x: string]: any + }, deactivatedHandlers: any, allowEndAnimation: boolean) { const wasMoving = isMoving(this._eventsInProgress); const nowMoving = isMoving(newEventsInProgress); @@ -512,7 +530,7 @@ class HandlerManager { } - _fireEvent(type: string, e: *) { + _fireEvent(type: string, e: any) { this._map.fire(new Event(type, e ? {originalEvent: e} : {})); } diff --git a/src/ui/hash.js b/src/ui/hash.ts similarity index 93% rename from src/ui/hash.js rename to src/ui/hash.ts index 82d98153b5..bf0f4421f3 100644 --- a/src/ui/hash.js +++ b/src/ui/hash.ts @@ -1,6 +1,4 @@ -// @flow - -import {bindAll} from '../util/util'; +import { bindAll } from '../util/util'; import window from '../util/window'; import throttle from '../util/throttle'; @@ -14,10 +12,10 @@ import type Map from './map'; */ class Hash { _map: Map; - _updateHash: () => ?TimeoutID; - _hashName: ?string; + _updateHash: () => TimeoutID | undefined | null; + _hashName: string | undefined | null; - constructor(hashName: ?string) { + constructor(hashName?: string | null) { this._hashName = hashName && encodeURIComponent(hashName); bindAll([ '_getCurrentHash', @@ -75,8 +73,8 @@ class Hash { hash += `${zoom}/${lat}/${lng}`; } - if (bearing || pitch) hash += (`/${Math.round(bearing * 10) / 10}`); - if (pitch) hash += (`/${Math.round(pitch)}`); + if (bearing || pitch) hash += ((`/${Math.round(bearing * 10) / 10}`)); + if (pitch) hash += ((`/${Math.round(pitch)}`)); if (this._hashName) { const hashName = this._hashName; diff --git a/src/ui/map.js b/src/ui/map.ts similarity index 96% rename from src/ui/map.js rename to src/ui/map.ts index 70a056176e..a05f972841 100755 --- a/src/ui/map.js +++ b/src/ui/map.ts @@ -1,6 +1,4 @@ -// @flow - -import {version} from '../../package.json'; +import { version } from '../../package.json'; import {extend, bindAll, warnOnce, uniqueId} from '../util/util'; import browser from '../util/browser'; import window from '../util/window'; @@ -43,7 +41,8 @@ import type ScrollZoomHandler from './handler/scroll_zoom'; import type BoxZoomHandler from './handler/box_zoom'; import type {TouchPitchHandler} from './handler/touch_zoom_rotate'; import type DragRotateHandler from './handler/shim/drag_rotate'; -import type DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan'; +import type DragPanHandler from './handler/shim/drag_pan'; +import type { DragPanOptions } from './handler/shim/drag_pan'; import type KeyboardHandler from './handler/keyboard'; import type DoubleClickZoomHandler from './handler/shim/dblclick_zoom'; import type TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate'; @@ -58,51 +57,52 @@ import type { SourceSpecification } from '../style-spec/types'; -type ControlPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; +type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; + /* eslint-disable no-use-before-define */ type IControl = { - onAdd(map: Map): HTMLElement; - onRemove(map: Map): void; + onAdd(map: Map): HTMLElement, + onRemove(map: Map): void, + readonly getDefaultPosition?: () => ControlPosition +}; - +getDefaultPosition?: () => ControlPosition; -} /* eslint-enable no-use-before-define */ type MapOptions = { - hash?: boolean | string, - interactive?: boolean, - container: HTMLElement | string, - bearingSnap?: number, - attributionControl?: boolean, - customAttribution?: string | Array, - logoPosition?: ControlPosition, - failIfMajorPerformanceCaveat?: boolean, - preserveDrawingBuffer?: boolean, - antialias?: boolean, - refreshExpiredTiles?: boolean, - maxBounds?: LngLatBoundsLike, - scrollZoom?: boolean, - minZoom?: ?number, - maxZoom?: ?number, - minPitch?: ?number, - maxPitch?: ?number, - boxZoom?: boolean, - dragRotate?: boolean, - dragPan?: DragPanOptions, - keyboard?: boolean, - doubleClickZoom?: boolean, - touchZoomRotate?: boolean, - touchPitch?: boolean, - trackResize?: boolean, - center?: LngLatLike, - zoom?: number, - bearing?: number, - pitch?: number, - renderWorldCopies?: boolean, - maxTileCacheSize?: number, - transformRequest?: RequestTransformFunction, - accessToken: string, - locale?: Object + hash?: boolean | string, + interactive?: boolean, + container: HTMLElement | string, + bearingSnap?: number, + attributionControl?: boolean, + customAttribution?: string | Array, + logoPosition?: ControlPosition, + failIfMajorPerformanceCaveat?: boolean, + preserveDrawingBuffer?: boolean, + antialias?: boolean, + refreshExpiredTiles?: boolean, + maxBounds?: LngLatBoundsLike, + scrollZoom?: boolean, + minZoom?: number | null, + maxZoom?: number | null, + minPitch?: number | null, + maxPitch?: number | null, + boxZoom?: boolean, + dragRotate?: boolean, + dragPan?: DragPanOptions, + keyboard?: boolean, + doubleClickZoom?: boolean, + touchZoomRotate?: boolean, + touchPitch?: boolean, + trackResize?: boolean, + center?: LngLatLike, + zoom?: number, + bearing?: number, + pitch?: number, + renderWorldCopies?: boolean, + maxTileCacheSize?: number, + transformRequest?: RequestTransformFunction, + accessToken: string, + locale?: any }; const defaultMinZoom = -2; @@ -272,20 +272,22 @@ class Map extends Camera { _container: HTMLElement; _canvasContainer: HTMLElement; _controlContainer: HTMLElement; - _controlPositions: {[_: string]: HTMLElement}; - _interactive: ?boolean; - _showTileBoundaries: ?boolean; - _showCollisionBoxes: ?boolean; - _showPadding: ?boolean; + _controlPositions: { + [_: string]: HTMLElement + }; + _interactive: boolean | undefined | null; + _showTileBoundaries: boolean | undefined | null; + _showCollisionBoxes: boolean | undefined | null; + _showPadding: boolean | undefined | null; _showOverdrawInspector: boolean; - _repaint: ?boolean; - _vertices: ?boolean; + _repaint: boolean | undefined | null; + _vertices: boolean | undefined | null; _canvas: HTMLCanvasElement; _maxTileCacheSize: number; - _frame: ?Cancelable; - _styleDirty: ?boolean; - _sourcesDirty: ?boolean; - _placementDirty: ?boolean; + _frame: Cancelable | undefined | null; + _styleDirty: boolean | undefined | null; + _sourcesDirty: boolean | undefined | null; + _placementDirty: boolean | undefined | null; _loaded: boolean; // accounts for placement finishing as well _fullyLoaded: boolean; @@ -305,7 +307,7 @@ class Map extends Camera { _mapId: number; _localIdeographFontFamily: string; _requestManager: RequestManager; - _locale: Object; + _locale: any; _removed: boolean; _clickTolerance: number; @@ -472,7 +474,7 @@ class Map extends Camera { this.on('style.load', () => { if (this.transform.unmodified) { - this.jumpTo((this.style.stylesheet: any)); + this.jumpTo(((this.style.stylesheet as any))); } }); this.on('data', (event: MapDataEvent) => { @@ -589,7 +591,7 @@ class Map extends Camera { * var mapDiv = document.getElementById('map'); * if (mapDiv.style.visibility === true) map.resize(); */ - resize(eventData?: Object) { + resize(eventData?: any) { const dimensions = this._containerDimensions(); const width = dimensions[0]; const height = dimensions[1]; @@ -675,7 +677,7 @@ class Map extends Camera { * @example * map.setMinZoom(12.25); */ - setMinZoom(minZoom?: ?number) { + setMinZoom(minZoom?: number | null) { minZoom = minZoom === null || minZoom === undefined ? defaultMinZoom : minZoom; @@ -710,7 +712,7 @@ class Map extends Camera { * @example * map.setMaxZoom(18.75); */ - setMaxZoom(maxZoom?: ?number) { + setMaxZoom(maxZoom?: number | null) { maxZoom = maxZoom === null || maxZoom === undefined ? defaultMaxZoom : maxZoom; @@ -743,7 +745,7 @@ class Map extends Camera { * If `null` or `undefined` is provided, the function removes the current minimum pitch (i.e. sets it to 0). * @returns {Map} `this` */ - setMinPitch(minPitch?: ?number) { + setMinPitch(minPitch?: number | null) { minPitch = minPitch === null || minPitch === undefined ? defaultMinPitch : minPitch; @@ -778,7 +780,7 @@ class Map extends Camera { * If `null` or `undefined` is provided, the function removes the current maximum pitch (sets it to 60). * @returns {Map} `this` */ - setMaxPitch(maxPitch?: ?number) { + setMaxPitch(maxPitch?: number | null) { maxPitch = maxPitch === null || maxPitch === undefined ? defaultMaxPitch : maxPitch; @@ -832,7 +834,7 @@ class Map extends Camera { * map.setRenderWorldCopies(true); * @see [Render world copies](https://maplibre.org/maplibre-gl-js-docs/example/render-world-copies/) */ - setRenderWorldCopies(renderWorldCopies?: ?boolean) { + setRenderWorldCopies(renderWorldCopies?: boolean | null) { this.transform.renderWorldCopies = renderWorldCopies; return this._update(); } @@ -1056,7 +1058,7 @@ class Map extends Camera { this._delegatedListeners[type].push(delegatedListener); for (const event in delegatedListener.delegates) { - this.on((event: any), delegatedListener.delegates[event]); + this.on(((event as any)), delegatedListener.delegates[event]); } return this; @@ -1101,7 +1103,7 @@ class Map extends Camera { const delegatedListener = this._createDelegatedListener(type, layerId, listener); for (const event in delegatedListener.delegates) { - this.once((event: any), delegatedListener.delegates[event]); + this.once(((event as any)), delegatedListener.delegates[event]); } return this; @@ -1138,7 +1140,7 @@ class Map extends Camera { const delegatedListener = listeners[i]; if (delegatedListener.layer === layerId && delegatedListener.listener === listener) { for (const event in delegatedListener.delegates) { - this.off((event: any), delegatedListener.delegates[event]); + this.off(((event as any)), delegatedListener.delegates[event]); } listeners.splice(i, 1); return this; @@ -1230,7 +1232,7 @@ class Map extends Camera { * var features = map.queryRenderedFeatures({ layers: ['my-layer-name'] }); * @see [Get features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/queryrenderedfeatures/) */ - queryRenderedFeatures(geometry?: PointLike | [PointLike, PointLike], options?: Object) { + queryRenderedFeatures(geometry?: PointLike | [PointLike, PointLike], options?: any) { // The first parameter can be omitted entirely, making this effectively an overloaded method // with two signatures: // @@ -1245,7 +1247,7 @@ class Map extends Camera { } if (options === undefined && geometry !== undefined && !(geometry instanceof Point) && !Array.isArray(geometry)) { - options = (geometry: Object); + options = (geometry as any); geometry = undefined; } @@ -1300,7 +1302,11 @@ class Map extends Camera { * }); * */ - querySourceFeatures(sourceId: string, parameters: ?{sourceLayer: ?string, filter: ?Array, validate?: boolean}) { + querySourceFeatures(sourceId: string, parameters?: { + sourceLayer: string | undefined | null, + filter: Array | undefined | null, + validate?: boolean + } | null) { return this.style.querySourceFeatures(sourceId, parameters); } @@ -1330,7 +1336,9 @@ class Map extends Camera { * map.setStyle("mapbox://styles/mapbox/streets-v11"); * */ - setStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions) { + setStyle(style: StyleSpecification | string | null, options?: { + diff?: boolean + } & StyleOptions) { options = extend({}, {localIdeographFontFamily: this._localIdeographFontFamily}, options); if ((options.diff !== false && options.localIdeographFontFamily === this._localIdeographFontFamily) && this.style && style) { @@ -1367,7 +1375,9 @@ class Map extends Camera { return str; } - _updateStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions) { + _updateStyle(style: StyleSpecification | string | null, options?: { + diff?: boolean + } & StyleOptions) { if (this.style) { this.style.setEventedParent(null); this.style._remove(); @@ -1399,11 +1409,13 @@ class Map extends Camera { } } - _diffStyle(style: StyleSpecification | string, options?: {diff?: boolean} & StyleOptions) { + _diffStyle(style: StyleSpecification | string, options?: { + diff?: boolean + } & StyleOptions) { if (typeof style === 'string') { const url = this._requestManager.normalizeStyleURL(style); const request = this._requestManager.transformRequest(url, ResourceType.Style); - getJSON(request, (error: ?Error, json: ?Object) => { + getJSON(request, (error?: Error | null, json?: any | null) => { if (error) { this.fire(new ErrorEvent(error)); } else if (json) { @@ -1415,7 +1427,9 @@ class Map extends Camera { } } - _updateDiff(style: StyleSpecification, options?: {diff?: boolean} & StyleOptions) { + _updateDiff(style: StyleSpecification, options?: { + diff?: boolean + } & StyleOptions) { try { if (this.style.setState(style)) { this._update(true); @@ -1630,8 +1644,18 @@ class Map extends Camera { * @see Use `ImageData`: [Add a generated icon to the map](https://maplibre.org/maplibre-gl-js-docs/example/add-image-generated/) */ addImage(id: string, - image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface, - {pixelRatio = 1, sdf = false, stretchX, stretchY, content}: $Shape = {}) { + image: HTMLImageElement | ImageBitmap | ImageData | { + width: number, + height: number, + data: Uint8Array | Uint8ClampedArray + } | StyleImageInterface, + { + pixelRatio = 1, + sdf = false, + stretchX, + stretchY, + content + }: Partial = {}) { this._lazyInitEmptyStyle(); const version = 0; @@ -1644,7 +1668,7 @@ class Map extends Camera { 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`'))); } else { const {width, height, data} = image; - const userImage = ((image: any): StyleImageInterface); + const userImage = (image as any as StyleImageInterface); this.style.addImage(id, { data: new RGBAImage({width, height}, new Uint8Array(data)), @@ -1682,7 +1706,11 @@ class Map extends Camera { * if (map.hasImage('cat')) map.updateImage('cat', './other-cat-icon.png'); */ updateImage(id: string, - image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface) { + image: HTMLImageElement | ImageBitmap | ImageData | { + width: number, + height: number, + data: Uint8Array | Uint8ClampedArray + } | StyleImageInterface) { const existingImage = this.style.getImage(id); if (!existingImage) { @@ -2005,7 +2033,7 @@ class Map extends Camera { * @see [Create a timeline animation](https://maplibre.org/maplibre-gl-js-docs/example/timeline-animation/) * @see Tutorial: [Show changes over time](https://docs.mapbox.com/help/tutorials/show-changes-over-time/) */ - setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}) { + setFilter(layerId: string, filter?: FilterSpecification | null, options: StyleSetterOptions = {}) { this.style.setFilter(layerId, filter, options); return this._update(true); } @@ -2143,7 +2171,11 @@ class Map extends Camera { * @see [Create a hover effect](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see Tutorial: [Create interactive hover effects with Mapbox GL JS](https://docs.mapbox.com/help/tutorials/create-interactive-hover-effects-with-mapbox-gl-js/) */ - setFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }, state: Object) { + setFeatureState(feature: { + source: string, + sourceLayer?: string, + id: string | number + }, state: any) { this.style.setFeatureState(feature, state); return this._update(); } @@ -2195,7 +2227,11 @@ class Map extends Camera { * }); * */ - removeFeatureState(target: { source: string; sourceLayer?: string; id?: string | number; }, key?: string) { + removeFeatureState(target: { + source: string, + sourceLayer?: string, + id?: string | number + }, key?: string) { this.style.removeFeatureState(target, key); return this._update(); } @@ -2229,7 +2265,13 @@ class Map extends Camera { * }); * */ - getFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }): any { + getFeatureState( + feature: { + source: string, + sourceLayer?: string, + id: string | number + } + ): any { return this.style.getFeatureState(feature); } @@ -2342,7 +2384,7 @@ class Map extends Camera { webpSupported.testSupport(gl); } - _contextLost(event: *) { + _contextLost(event: any) { event.preventDefault(); if (this._frame) { this._frame.cancel(); @@ -2351,14 +2393,14 @@ class Map extends Camera { this.fire(new Event('webglcontextlost', {originalEvent: event})); } - _contextRestored(event: *) { + _contextRestored(event: any) { this._setupPainter(); this.resize(); this._update(); this.fire(new Event('webglcontextrestored', {originalEvent: event})); } - _onMapScroll(event: *) { + _onMapScroll(event: any) { if (event.target !== this._container) return; // Revert any scroll which would move the canvas outside of the view diff --git a/src/ui/marker.js b/src/ui/marker.ts similarity index 96% rename from src/ui/marker.js rename to src/ui/marker.ts index 85e2fbe6be..fe4a4d07dc 100644 --- a/src/ui/marker.js +++ b/src/ui/marker.ts @@ -1,12 +1,11 @@ -// @flow - import DOM from '../util/dom'; import window from '../util/window'; import LngLat from '../geo/lng_lat'; import Point from '@mapbox/point-geometry'; import smartWrap from '../util/smart_wrap'; import {bindAll, extend} from '../util/util'; -import {type Anchor, anchorTranslate, applyAnchorClass} from './anchor'; +import { anchorTranslate, applyAnchorClass } from './anchor'; +import type { Anchor } from './anchor'; import {Event, Evented} from '../util/evented'; import type Map from './map'; import type Popup from './popup'; @@ -15,16 +14,16 @@ import type {MapMouseEvent, MapTouchEvent} from './events'; import type {PointLike} from '@mapbox/point-geometry'; type Options = { - element?: HTMLElement, - offset?: PointLike, - anchor?: Anchor, - color?: string, - scale?: number, - draggable?: boolean, - clickTolerance?: number, - rotation?: number, - rotationAlignment?: string, - pitchAlignment?: string + element?: HTMLElement, + offset?: PointLike, + anchor?: Anchor, + color?: string, + scale?: number, + draggable?: boolean, + clickTolerance?: number, + rotation?: number, + rotationAlignment?: string, + pitchAlignment?: string }; /** @@ -60,22 +59,22 @@ export default class Marker extends Evented { _anchor: Anchor; _offset: Point; _element: HTMLElement; - _popup: ?Popup; + _popup: Popup | undefined | null; _lngLat: LngLat; - _pos: ?Point; - _color: ?string; + _pos: Point | undefined | null; + _color: string | undefined | null; _scale: number; _defaultMarker: boolean; _draggable: boolean; _clickTolerance: number; _isDragging: boolean; - _state: 'inactive' | 'pending' | 'active'; // used for handling drag events - _positionDelta: ?Point; - _pointerdownPos: ?Point; + _state: "inactive" | "pending" | "active"; // used for handling drag events + _positionDelta: Point | undefined | null; + _pointerdownPos: Point | undefined | null; _rotation: number; _pitchAlignment: string; _rotationAlignment: string; - _originalTabIndex: ?string; // original tabindex of _element + _originalTabIndex: string | undefined | null; // original tabindex of _element constructor(options?: Options, legacyOptions?: Options) { super(); @@ -342,7 +341,7 @@ export default class Marker extends Evented { * .addTo(map); * @see [Attach a popup to a marker instance](https://maplibre.org/maplibre-gl-js-docs/example/set-popup/) */ - setPopup(popup: ?Popup) { + setPopup(popup?: Popup | null) { if (this._popup) { this._popup.remove(); this._popup = null; @@ -398,7 +397,7 @@ export default class Marker extends Evented { const targetElement = e.originalEvent.target; const element = this._element; - if (this._popup && (targetElement === element || element.contains((targetElement: any)))) { + if (this._popup && (targetElement === element || element.contains(((targetElement as any))))) { this.togglePopup(); } } @@ -438,7 +437,9 @@ export default class Marker extends Evented { return this; } - _update(e?: {type: 'move' | 'moveend'}) { + _update(e?: { + type: "move" | "moveend" + }) { if (!this._map) return; if (this._map.transform.renderWorldCopies) { @@ -560,7 +561,7 @@ export default class Marker extends Evented { } _addDragHandler(e: MapMouseEvent | MapTouchEvent) { - if (this._element.contains((e.originalEvent.target: any))) { + if (this._element.contains(((e.originalEvent.target as any)))) { e.preventDefault(); // We need to calculate the pixel distance between the click point diff --git a/src/ui/popup.js b/src/ui/popup.ts similarity index 97% rename from src/ui/popup.js rename to src/ui/popup.ts index 0dffa2dfba..4f7ce7a9e4 100644 --- a/src/ui/popup.js +++ b/src/ui/popup.ts @@ -1,6 +1,4 @@ -// @flow - -import {extend, bindAll} from '../util/util'; +import { extend, bindAll } from '../util/util'; import {Event, Evented} from '../util/evented'; import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; @@ -8,7 +6,9 @@ import LngLat from '../geo/lng_lat'; import Point from '@mapbox/point-geometry'; import window from '../util/window'; import smartWrap from '../util/smart_wrap'; -import {type Anchor, anchorTranslate, applyAnchorClass} from './anchor'; +import { anchorTranslate, applyAnchorClass } from './anchor'; + +import type { Anchor } from './anchor'; import type Map from './map'; import type {LngLatLike} from '../geo/lng_lat'; @@ -22,17 +22,19 @@ const defaultOptions = { maxWidth: "240px" }; -export type Offset = number | PointLike | {[_: Anchor]: PointLike}; +export type Offset = number | PointLike | { + [_ in Anchor]: PointLike; +}; export type PopupOptions = { - closeButton?: boolean, - closeOnClick?: boolean, - closeOnMove?: boolean, - focusAfterOpen?: boolean, - anchor?: Anchor, - offset?: Offset, - className?: string, - maxWidth?: string + closeButton?: boolean, + closeOnClick?: boolean, + closeOnMove?: boolean, + focusAfterOpen?: boolean, + anchor?: Anchor, + offset?: Offset, + className?: string, + maxWidth?: string }; const focusQuerySelector = [ @@ -105,7 +107,7 @@ export default class Popup extends Evented { _tip: HTMLElement; _lngLat: LngLat; _trackPointer: boolean; - _pos: ?Point; + _pos: Point | undefined | null; constructor(options: PopupOptions) { super(); @@ -511,7 +513,7 @@ export default class Popup extends Evented { this._update(event.point); } - _update(cursor: ?PointLike) { + _update(cursor?: PointLike | null) { const hasPosition = this._lngLat || this._trackPointer; if (!this._map || !hasPosition || !this._content) { return; } @@ -542,7 +544,7 @@ export default class Popup extends Evented { const pos = this._pos = this._trackPointer && cursor ? cursor : this._map.project(this._lngLat); - let anchor: ?Anchor = this.options.anchor; + let anchor: Anchor | undefined | null = this.options.anchor; const offset = normalizeOffset(this.options.offset); if (!anchor) { @@ -567,7 +569,7 @@ export default class Popup extends Evented { if (anchorComponents.length === 0) { anchor = 'bottom'; } else { - anchor = (anchorComponents.join('-'): any); + anchor = (anchorComponents.join('-') as any); } } @@ -589,7 +591,7 @@ export default class Popup extends Evented { } } -function normalizeOffset(offset: ?Offset) { +function normalizeOffset(offset?: Offset | null) { if (!offset) { return normalizeOffset(new Point(0, 0)); diff --git a/src/util/actor.js b/src/util/actor.ts similarity index 89% rename from src/util/actor.js rename to src/util/actor.ts index ac441726c4..1ebe49ea80 100644 --- a/src/util/actor.js +++ b/src/util/actor.ts @@ -1,6 +1,4 @@ -// @flow - -import {bindAll, isWorker, isSafari} from './util'; +import { bindAll, isWorker, isSafari } from './util'; import window from './window'; import {serialize, deserialize} from './web_worker_transfer'; import ThrottledInvoker from './throttled_invoker'; @@ -22,16 +20,22 @@ import type {Cancelable} from '../types/cancelable'; class Actor { target: any; parent: any; - mapId: ?number; - callbacks: { number: any }; + mapId: number | undefined | null; + callbacks: { + number: any + }; name: string; - tasks: { number: any }; + tasks: { + number: any + }; taskQueue: Array; - cancelCallbacks: { number: Cancelable }; + cancelCallbacks: { + number: Cancelable + }; invoker: ThrottledInvoker; globalScope: any; - constructor(target: any, parent: any, mapId: ?number) { + constructor(target: any, parent: any, mapId?: number | null) { this.target = target; this.parent = parent; this.mapId = mapId; @@ -53,7 +57,13 @@ class Actor { * @param targetMapId A particular mapId to which to send this message. * @private */ - send(type: string, data: mixed, callback: ?Function, targetMapId: ?string, mustQueue: boolean = false): ?Cancelable { + send( + type: string, + data: unknown, + callback?: Function | null, + targetMapId?: string | null, + mustQueue: boolean = false + ): Cancelable | undefined | null { // We're using a string ID instead of numbers because they are being used as object keys // anyway, and thus stringified implicitly. We use random IDs because an actor may receive // message from multiple other actors which could run in different execution context. A @@ -62,7 +72,7 @@ class Actor { if (callback) { this.callbacks[id] = callback; } - const buffers: ?Array = isSafari(this.globalScope) ? undefined : []; + const buffers: Array | undefined | null = isSafari(this.globalScope) ? undefined : []; this.target.postMessage({ id, type, @@ -88,7 +98,7 @@ class Actor { }; } - receive(message: Object) { + receive(message: any) { const data = message.data, id = data.id; @@ -166,7 +176,7 @@ class Actor { } } else { let completed = false; - const buffers: ?Array = isSafari(this.globalScope) ? undefined : []; + const buffers: Array | undefined | null = isSafari(this.globalScope) ? undefined : []; const done = task.hasCallback ? (err, data) => { completed = true; delete this.cancelCallbacks[id]; @@ -182,14 +192,14 @@ class Actor { }; let callback = null; - const params = (deserialize(task.data): any); + const params = (deserialize(task.data) as any); if (this.parent[task.type]) { // task.type == 'loadTile', 'removeTile', etc. callback = this.parent[task.type](task.sourceMapId, params, done); } else if (this.parent.getWorkerSource) { // task.type == sourcetype.method const keys = task.type.split('.'); - const scope = (this.parent: any).getWorkerSource(task.sourceMapId, keys[0], params.source); + const scope = (this.parent as any).getWorkerSource(task.sourceMapId, keys[0], params.source); callback = scope[keys[1]](params, done); } else { // No function was found. diff --git a/src/util/ajax.js b/src/util/ajax.ts similarity index 92% rename from src/util/ajax.js rename to src/util/ajax.ts index 83f0431211..f0fe50770d 100644 --- a/src/util/ajax.js +++ b/src/util/ajax.ts @@ -1,5 +1,3 @@ -// @flow - import window from './window'; import {extend, warnOnce, isWorker} from './util'; import {isMapboxHTTPURL, hasCacheDefeatingSku} from './mapbox'; @@ -58,16 +56,21 @@ if (typeof Object.freeze == 'function') { * */ export type RequestParameters = { - url: string, - headers?: Object, - method?: 'GET' | 'POST' | 'PUT', - body?: string, - type?: 'string' | 'json' | 'arrayBuffer', - credentials?: 'same-origin' | 'include', - collectResourceTiming?: boolean + url: string, + headers?: any, + method?: "GET" | "POST" | "PUT", + body?: string, + type?: "string" | "json" | "arrayBuffer", + credentials?: "same-origin" | "include", + collectResourceTiming?: boolean }; -export type ResponseCallback = (error: ?Error, data: ?T, cacheControl: ?string, expires: ?string) => void; +export type ResponseCallback = ( + error?: Error | null, + data?: T | null, + cacheControl?: string | null, + expires?: string | null +) => void; class AJAXError extends Error { status: number; @@ -216,7 +219,7 @@ function makeXMLHttpRequest(requestParameters: RequestParameters, callback: Resp }; xhr.onload = () => { if (((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) && xhr.response !== null) { - let data: mixed = xhr.response; + let data: unknown = xhr.response; if (requestParameters.type === 'json') { // We're manually parsing JSON here to get better error messages. try { @@ -264,11 +267,14 @@ export const makeRequest = function(requestParameters: RequestParameters, callba return makeXMLHttpRequest(requestParameters, callback); }; -export const getJSON = function(requestParameters: RequestParameters, callback: ResponseCallback): Cancelable { +export const getJSON = function(requestParameters: RequestParameters, callback: ResponseCallback): Cancelable { return makeRequest(extend(requestParameters, {type: 'json'}), callback); }; -export const getArrayBuffer = function(requestParameters: RequestParameters, callback: ResponseCallback): Cancelable { +export const getArrayBuffer = function( + requestParameters: RequestParameters, + callback: ResponseCallback +): Cancelable { return makeRequest(extend(requestParameters, {type: 'arrayBuffer'}), callback); }; @@ -284,7 +290,7 @@ function sameOrigin(url) { const transparentPngUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII='; -function arrayBufferToImage(data: ArrayBuffer, callback: (err: ?Error, image: ?HTMLImageElement) => void, cacheControl: ?string, expires: ?string) { +function arrayBufferToImage(data: ArrayBuffer, callback: (err?: Error | null, image?: HTMLImageElement | null) => void, cacheControl?: string | null, expires?: string | null) { const img: HTMLImageElement = new window.Image(); const URL = window.URL; img.onload = () => { @@ -298,12 +304,12 @@ function arrayBufferToImage(data: ArrayBuffer, callback: (err: ?Error, image: ?H }; img.onerror = () => callback(new Error('Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.')); const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'}); - (img: any).cacheControl = cacheControl; - (img: any).expires = expires; + (img as any).cacheControl = cacheControl; + (img as any).expires = expires; img.src = data.byteLength ? URL.createObjectURL(blob) : transparentPngUrl; } -function arrayBufferToImageBitmap(data: ArrayBuffer, callback: (err: ?Error, image: ?ImageBitmap) => void) { +function arrayBufferToImageBitmap(data: ArrayBuffer, callback: (err?: Error | null, image?: ImageBitmap | null) => void) { const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'}); window.createImageBitmap(blob).then((imgBitmap) => { callback(null, imgBitmap); @@ -319,7 +325,10 @@ export const resetImageRequestQueue = () => { }; resetImageRequestQueue(); -export const getImage = function(requestParameters: RequestParameters, callback: Callback): Cancelable { +export const getImage = function( + requestParameters: RequestParameters, + callback: Callback +): Cancelable { if (webpSupported.supported) { if (!requestParameters.headers) { requestParameters.headers = {}; @@ -357,7 +366,7 @@ export const getImage = function(requestParameters: RequestParameters, callback: // request the image with XHR to work around caching issues // see https://github.com/mapbox/mapbox-gl-js/issues/1470 - const request = getArrayBuffer(requestParameters, (err: ?Error, data: ?ArrayBuffer, cacheControl: ?string, expires: ?string) => { + const request = getArrayBuffer(requestParameters, (err?: Error | null, data?: ArrayBuffer | null, cacheControl?: string | null, expires?: string | null) => { advanceImageRequestQueue(); diff --git a/src/util/browser.js b/src/util/browser.ts similarity index 95% rename from src/util/browser.js rename to src/util/browser.ts index 808a6fcc5c..1f60006dfb 100755 --- a/src/util/browser.js +++ b/src/util/browser.ts @@ -1,5 +1,3 @@ -// @flow strict - import window from './window'; import type {Cancelable} from '../types/cancelable'; @@ -36,7 +34,7 @@ const exported = { return {cancel: () => cancel(frame)}; }, - getImageData(img: CanvasImageSource, padding?: number = 0): ImageData { + getImageData(img: CanvasImageSource, padding: number = 0): ImageData { const canvas = window.document.createElement('canvas'); const context = canvas.getContext('2d'); if (!context) { diff --git a/src/util/browser/web_worker.js b/src/util/browser/web_worker.ts similarity index 51% rename from src/util/browser/web_worker.js rename to src/util/browser/web_worker.ts index 3d1314da10..124f01c752 100644 --- a/src/util/browser/web_worker.js +++ b/src/util/browser/web_worker.ts @@ -1,10 +1,8 @@ -// @flow - import window from '../window'; import mapboxgl from '../../'; import type {WorkerInterface} from '../web_worker'; -export default function (): WorkerInterface { - return (new window.Worker(mapboxgl.workerUrl): any); +export default function(): WorkerInterface { + return new window.Worker(mapboxgl.workerUrl) as any; } diff --git a/src/util/browser/window.js b/src/util/browser/window.js deleted file mode 100644 index d2ceea5613..0000000000 --- a/src/util/browser/window.js +++ /dev/null @@ -1,6 +0,0 @@ -// @flow -/* eslint-env browser */ -import type {Window} from '../../types/window'; - -// shim window for the case of requiring the browser bundle in Node -export default typeof self !== 'undefined' ? (self: Window) : (({}: any): Window); diff --git a/src/util/browser/window.ts b/src/util/browser/window.ts new file mode 100644 index 0000000000..3d6582c08a --- /dev/null +++ b/src/util/browser/window.ts @@ -0,0 +1,5 @@ +/* eslint-env browser */ +import type { Window } from '../../types/window'; + +// shim window for the case of requiring the browser bundle in Node +export default typeof self !== 'undefined' ? (self as Window) : ({} as any as Window); diff --git a/src/util/classify_rings.js b/src/util/classify_rings.ts similarity index 92% rename from src/util/classify_rings.js rename to src/util/classify_rings.ts index 3d18b60fca..9d47a0f45c 100644 --- a/src/util/classify_rings.js +++ b/src/util/classify_rings.ts @@ -1,5 +1,3 @@ -// @flow - import quickselect from 'quickselect'; import {calculateSignedArea} from './util'; @@ -20,7 +18,7 @@ export default function classifyRings(rings: Array>, maxRings: numb const area = calculateSignedArea(rings[i]); if (area === 0) continue; - (rings[i]: any).area = Math.abs(area); + (rings[i] as any).area = Math.abs(area); if (ccw === undefined) ccw = area < 0; @@ -29,7 +27,7 @@ export default function classifyRings(rings: Array>, maxRings: numb polygon = [rings[i]]; } else { - (polygon: any).push(rings[i]); + (polygon as any).push(rings[i]); } } if (polygon) polygons.push(polygon); diff --git a/src/util/color_ramp.js b/src/util/color_ramp.ts similarity index 87% rename from src/util/color_ramp.js rename to src/util/color_ramp.ts index 24dc075869..1833466358 100644 --- a/src/util/color_ramp.js +++ b/src/util/color_ramp.ts @@ -1,18 +1,16 @@ -// @flow - -import {RGBAImage} from './image'; +import { RGBAImage } from './image'; import {isPowerOfTwo} from './util'; import assert from 'assert'; import type {StylePropertyExpression} from '../style-spec/expression/index'; export type ColorRampParams = { - expression: StylePropertyExpression; - evaluationKey: string; - resolution?: number; - image?: RGBAImage; - clips?: Array; -} + expression: StylePropertyExpression, + evaluationKey: string, + resolution?: number, + image?: RGBAImage, + clips?: Array +}; /** * Given an expression that should evaluate to a color ramp, @@ -30,7 +28,7 @@ export function renderColorRamp(params: ColorRampParams): RGBAImage { const renderPixel = (stride, index, progress) => { evaluationGlobals[params.evaluationKey] = progress; - const pxColor = params.expression.evaluate((evaluationGlobals: any)); + const pxColor = params.expression.evaluate(((evaluationGlobals as any))); // the colors are being unpremultiplied because Color uses // premultiplied values, and the Texture class expects unpremultiplied ones image.data[stride + index + 0] = Math.floor(pxColor.r * 255 / pxColor.a); diff --git a/src/util/config.js b/src/util/config.ts similarity index 83% rename from src/util/config.js rename to src/util/config.ts index 95d559d313..2ae7d748b4 100644 --- a/src/util/config.js +++ b/src/util/config.ts @@ -1,14 +1,14 @@ -// @flow - -type Config = {| +type Config = { API_URL: string, - EVENTS_URL: ?string, + EVENTS_URL: string | undefined | null, FEEDBACK_URL: string, REQUIRE_ACCESS_TOKEN: boolean, - ACCESS_TOKEN: ?string, + ACCESS_TOKEN: string | undefined | null, MAX_PARALLEL_IMAGE_REQUESTS: number, - REGISTERED_PROTOCOLS: { [string]: any }, -|}; + REGISTERED_PROTOCOLS: { + [x: string]: any + } +}; const config: Config = { API_URL: 'https://api.mapbox.com', diff --git a/src/util/debug.js b/src/util/debug.ts similarity index 84% rename from src/util/debug.js rename to src/util/debug.ts index e26672e747..b173b59e26 100644 --- a/src/util/debug.js +++ b/src/util/debug.ts @@ -1,5 +1,4 @@ -// @flow -import {extend} from './util'; +import { extend } from './util'; import window from './window'; /** @@ -9,7 +8,7 @@ import window from './window'; * @private */ export const Debug = { - extend(dest: Object, ...sources: Array): Object { + extend(dest: any, ...sources: Array): any { return extend(dest, ...sources); }, diff --git a/src/util/dictionary_coder.js b/src/util/dictionary_coder.ts similarity index 91% rename from src/util/dictionary_coder.js rename to src/util/dictionary_coder.ts index 320eb3548f..1180efbd78 100644 --- a/src/util/dictionary_coder.js +++ b/src/util/dictionary_coder.ts @@ -1,9 +1,9 @@ -// @flow strict - import assert from 'assert'; class DictionaryCoder { - _stringToNumber: {[_: string]: number }; + _stringToNumber: { + [_: string]: number + }; _numberToString: Array; constructor(strings: Array) { diff --git a/src/util/dispatcher.js b/src/util/dispatcher.ts similarity index 91% rename from src/util/dispatcher.js rename to src/util/dispatcher.ts index 7a184f8489..f3e1f08238 100644 --- a/src/util/dispatcher.js +++ b/src/util/dispatcher.ts @@ -1,6 +1,4 @@ -// @flow - -import {uniqueId, asyncAll} from './util'; +import { uniqueId, asyncAll } from './util'; import Actor from './actor'; import assert from 'assert'; @@ -19,7 +17,9 @@ class Dispatcher { id: number; // exposed to allow stubbing in unit tests - static Actor: Class; + static Actor: { + new (...args: any): Actor + }; constructor(workerPool: WorkerPool, parent: any) { this.workerPool = workerPool; @@ -40,7 +40,7 @@ class Dispatcher { * Broadcast a message to all Workers. * @private */ - broadcast(type: string, data: mixed, cb?: Function) { + broadcast(type: string, data: unknown, cb?: Function) { assert(this.actors.length); cb = cb || function () {}; asyncAll(this.actors, (actor, done) => { diff --git a/src/util/dom.js b/src/util/dom.ts similarity index 91% rename from src/util/dom.js rename to src/util/dom.ts index 34e2af64f8..3965cdfe7b 100644 --- a/src/util/dom.js +++ b/src/util/dom.ts @@ -1,5 +1,3 @@ -// @flow strict - import Point from '@mapbox/point-geometry'; import window from './window'; @@ -8,7 +6,7 @@ import assert from 'assert'; const DOM = {}; export default DOM; -DOM.create = function (tagName: string, className: ?string, container?: HTMLElement) { +DOM.create = function (tagName: string, className: string | undefined | null, container?: HTMLElement) { const el = window.document.createElement(tagName); if (className !== undefined) el.className = className; if (container) container.appendChild(el); @@ -73,7 +71,10 @@ try { passiveSupported = false; } -DOM.addEventListener = function(target: *, type: *, callback: *, options: {passive?: boolean, capture?: boolean} = {}) { +DOM.addEventListener = function(target: any, type: any, callback: any, options: { + passive?: boolean, + capture?: boolean +} = {}) { if ('passive' in options && passiveSupported) { target.addEventListener(type, callback, options); } else { @@ -81,7 +82,10 @@ DOM.addEventListener = function(target: *, type: *, callback: *, options: {passi } }; -DOM.removeEventListener = function(target: *, type: *, callback: *, options: {passive?: boolean, capture?: boolean} = {}) { +DOM.removeEventListener = function(target: any, type: any, callback: any, options: { + passive?: boolean, + capture?: boolean +} = {}) { if ('passive' in options && passiveSupported) { target.removeEventListener(type, callback, options); } else { diff --git a/src/util/evented.js b/src/util/evented.ts similarity index 88% rename from src/util/evented.js rename to src/util/evented.ts index de05d10921..f90cfb3c04 100644 --- a/src/util/evented.js +++ b/src/util/evented.ts @@ -1,9 +1,10 @@ -// @flow +import { extend } from './util'; -import {extend} from './util'; +type Listener = (a: any) => any; -type Listener = (Object) => any; -type Listeners = {[_: string]: Array }; +type Listeners = { + [_: string]: Array +}; function _addEventListener(type: string, listener: Listener, listenerList: Listeners) { const listenerExists = listenerList[type] && listenerList[type].indexOf(listener) !== -1; @@ -23,22 +24,22 @@ function _removeEventListener(type: string, listener: Listener, listenerList: Li } export class Event { - +type: string; + readonly type: string; - constructor(type: string, data: Object = {}) { + constructor(type: string, data: any = {}) { extend(this, data); this.type = type; } } interface ErrorLike { - message: string; + message: string; } export class ErrorEvent extends Event { error: ErrorLike; - constructor(error: ErrorLike, data: Object = {}) { + constructor(error: ErrorLike, data: any = {}) { super('error', extend({error}, data)); } } @@ -51,8 +52,8 @@ export class ErrorEvent extends Event { export class Evented { _listeners: Listeners; _oneTimeListeners: Listeners; - _eventedParent: ?Evented; - _eventedParentData: ?(Object | () => Object); + _eventedParent: Evented | undefined | null; + _eventedParentData: any | (() => any) | undefined | null; /** * Adds a listener to a specified event type. @@ -63,7 +64,7 @@ export class Evented { * extended with `target` and `type` properties. * @returns {Object} `this` */ - on(type: *, listener: Listener): this { + on(type: any, listener: Listener): this { this._listeners = this._listeners || {}; _addEventListener(type, listener, this._listeners); @@ -77,7 +78,7 @@ export class Evented { * @param {Function} listener The listener function to remove. * @returns {Object} `this` */ - off(type: *, listener: Listener) { + off(type: any, listener: Listener) { _removeEventListener(type, listener, this._listeners); _removeEventListener(type, listener, this._oneTimeListeners); @@ -93,14 +94,14 @@ export class Evented { * @param {Function} listener The function to be called when the event is fired the first time. * @returns {Object} `this` */ - once(type: *, listener: Listener) { + once(type: any, listener: Listener) { this._oneTimeListeners = this._oneTimeListeners || {}; _addEventListener(type, listener, this._oneTimeListeners); return this; } - fire(event: Event, properties?: Object) { + fire(event: Event, properties?: any) { // Compatibility with (type: string, properties: Object) signature from previous versions. // See https://github.com/mapbox/mapbox-gl-js/issues/6522, // https://github.com/mapbox/mapbox-gl-draw/issues/766 @@ -111,7 +112,7 @@ export class Evented { const type = event.type; if (this.listens(type)) { - (event: any).target = this; + (event as any).target = this; // make sure adding or removing listeners inside other listeners won't cause an infinite loop const listeners = this._listeners && this._listeners[type] ? this._listeners[type].slice() : []; @@ -165,7 +166,7 @@ export class Evented { * @returns {Object} `this` * @private */ - setEventedParent(parent: ?Evented, data?: Object | () => Object) { + setEventedParent(parent?: Evented | null, data?: any | (() => any)) { this._eventedParent = parent; this._eventedParentData = data; diff --git a/src/util/find_pole_of_inaccessibility.js b/src/util/find_pole_of_inaccessibility.ts similarity index 97% rename from src/util/find_pole_of_inaccessibility.js rename to src/util/find_pole_of_inaccessibility.ts index 5bf8c1c44c..f5ba7deb1e 100644 --- a/src/util/find_pole_of_inaccessibility.js +++ b/src/util/find_pole_of_inaccessibility.ts @@ -1,5 +1,3 @@ -// @flow - import Queue from 'tinyqueue'; import Point from '@mapbox/point-geometry'; @@ -15,7 +13,11 @@ import {distToSegmentSquared} from './intersection_tests'; * @returns Pole of Inaccessibiliy. * @private */ -export default function (polygonRings: Array>, precision?: number = 1, debug?: boolean = false): Point { +export default function( + polygonRings: Array>, + precision: number = 1, + debug: boolean = false +): Point { // find the bounding box of the outer ring let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity; const outerRing = polygonRings[0]; diff --git a/src/util/global_worker_pool.js b/src/util/global_worker_pool.ts similarity index 93% rename from src/util/global_worker_pool.js rename to src/util/global_worker_pool.ts index 3fb1d06258..2976a526ee 100644 --- a/src/util/global_worker_pool.js +++ b/src/util/global_worker_pool.ts @@ -1,6 +1,4 @@ -// @flow - -import WorkerPool, {PRELOAD_POOL_ID} from './worker_pool'; +import WorkerPool, { PRELOAD_POOL_ID } from './worker_pool'; let globalWorkerPool; diff --git a/src/util/image.js b/src/util/image.ts similarity index 91% rename from src/util/image.js rename to src/util/image.ts index 2ef55d0139..9ab9e4c01d 100644 --- a/src/util/image.js +++ b/src/util/image.ts @@ -1,20 +1,21 @@ -// @flow - import assert from 'assert'; import {register} from './web_worker_transfer'; export type Size = { - width: number, - height: number + width: number, + height: number }; type Point = { - x: number, - y: number + x: number, + y: number }; -function createImage(image: *, {width, height}: Size, channels: number, data?: Uint8Array | Uint8ClampedArray) { +function createImage(image: any, { + width, + height +}: Size, channels: number, data?: Uint8Array | Uint8ClampedArray) { if (!data) { data = new Uint8Array(width * height * channels); } else if (data instanceof Uint8ClampedArray) { @@ -28,7 +29,10 @@ function createImage(image: *, {width, height}: Size, channels: number, data?: U return image; } -function resizeImage(image: *, {width, height}: Size, channels: number) { +function resizeImage(image: any, { + width, + height +}: Size, channels: number) { if (width === image.width && height === image.height) { return; } @@ -45,7 +49,7 @@ function resizeImage(image: *, {width, height}: Size, channels: number) { image.data = newImage.data; } -function copyImage(srcImg: *, dstImg: *, srcPt: Point, dstPt: Point, size: Size, channels: number) { +function copyImage(srcImg: any, dstImg: any, srcPt: Point, dstPt: Point, size: Size, channels: number) { if (size.width === 0 || size.height === 0) { return dstImg; } diff --git a/src/util/intersection_tests.js b/src/util/intersection_tests.ts similarity index 99% rename from src/util/intersection_tests.js rename to src/util/intersection_tests.ts index d79f6f744b..428c979340 100644 --- a/src/util/intersection_tests.js +++ b/src/util/intersection_tests.ts @@ -1,6 +1,4 @@ -// @flow - -import {isCounterClockwise} from './util'; +import { isCounterClockwise } from './util'; import Point from '@mapbox/point-geometry'; diff --git a/src/util/is_char_in_unicode_block.js b/src/util/is_char_in_unicode_block.ts similarity index 99% rename from src/util/is_char_in_unicode_block.js rename to src/util/is_char_in_unicode_block.ts index 427f741d19..3c1a4b0ece 100644 --- a/src/util/is_char_in_unicode_block.js +++ b/src/util/is_char_in_unicode_block.ts @@ -1,9 +1,9 @@ -// @flow - // The following table comes from . // Keep it synchronized with . -type UnicodeBlockLookup = {[key: string]: (char: number) => boolean}; +type UnicodeBlockLookup = { + [key: string]: (char: number) => boolean +}; const unicodeBlockLookup: UnicodeBlockLookup = { // 'Basic Latin': (char) => char >= 0x0000 && char <= 0x007F, diff --git a/src/util/mapbox.js b/src/util/mapbox.ts similarity index 93% rename from src/util/mapbox.js rename to src/util/mapbox.ts index 5af7453fff..b6e6f555f0 100644 --- a/src/util/mapbox.js +++ b/src/util/mapbox.ts @@ -1,5 +1,3 @@ -// @flow - /***** START WARNING - IF YOU USE THIS CODE WITH MAPBOX MAPPING APIS, REMOVAL OR * MODIFICATION OF THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ****** * The following code is used to access Mapbox's Mapping APIs. Removal or modification @@ -27,21 +25,21 @@ import type {RequestParameters} from './ajax'; import type {Cancelable} from '../types/cancelable'; import type {TileJSON} from '../types/tilejson'; -type ResourceTypeEnum = $Keys; +type ResourceTypeEnum = keyof typeof ResourceType; export type RequestTransformFunction = (url: string, resourceType?: ResourceTypeEnum) => RequestParameters; -type UrlObject = {| - protocol: string, - authority: string, - path: string, - params: Array -|}; +type UrlObject = { + protocol: string, + authority: string, + path: string, + params: Array +}; export class RequestManager { _skuToken: string; _skuTokenExpiresAt: number; - _transformRequestFn: ?RequestTransformFunction; - _customAccessToken: ?string; + _transformRequestFn: RequestTransformFunction | undefined | null; + _customAccessToken: string | undefined | null; constructor(transformRequestFn?: RequestTransformFunction, customAccessToken?: string) { this._transformRequestFn = transformRequestFn; @@ -101,7 +99,7 @@ export class RequestManager { return this._makeAPIURL(urlObject, this._customAccessToken || accessToken); } - normalizeTileURL(tileURL: string, tileSize?: ?number): string { + normalizeTileURL(tileURL: string, tileSize?: number | null): string { if (this._isSkuTokenExpired()) { this._createSkuToken(); } @@ -247,7 +245,7 @@ export {isMapboxURL, isMapboxHTTPURL, hasCacheDefeatingSku}; const telemEventKey = 'mapbox.eventData'; -function parseAccessToken(accessToken: ?string) { +function parseAccessToken(accessToken?: string | null) { if (!accessToken) { return null; } @@ -265,15 +263,15 @@ function parseAccessToken(accessToken: ?string) { } } -type TelemetryEventType = 'appUserTurnstile' | 'map.load'; +type TelemetryEventType = "appUserTurnstile" | "map.load"; class TelemetryEvent { eventData: any; - anonId: ?string; + anonId: string | undefined | null; queue: Array; type: TelemetryEventType; - pendingRequest: ?Cancelable; - _customAccessToken: ?string; + pendingRequest: Cancelable | undefined | null; + _customAccessToken: string | undefined | null; constructor(type: TelemetryEventType) { this.type = type; @@ -283,7 +281,7 @@ class TelemetryEvent { this.pendingRequest = null; } - getStorageKey(domain: ?string) { + getStorageKey(domain?: string | null) { const tokenData = parseAccessToken(config.ACCESS_TOKEN); let u = ''; if (tokenData && tokenData['u']) { @@ -334,19 +332,21 @@ class TelemetryEvent { } - processRequests(_: ?string) {} + processRequests(_?: string | null) {} /* * If any event data should be persisted after the POST request, the callback should modify eventData` * to the values that should be saved. For this reason, the callback should be invoked prior to the call * to TelemetryEvent#saveData */ - postEvent(timestamp: number, additionalPayload: {[_: string]: any}, callback: (err: ?Error) => void, customAccessToken?: ?string) { + postEvent(timestamp: number, additionalPayload: { + [_: string]: any + }, callback: (err?: Error | null) => void, customAccessToken?: string | null) { if (!config.EVENTS_URL) return; const eventsUrlObject: UrlObject = parseUrl(config.EVENTS_URL); eventsUrlObject.params.push(`access_token=${customAccessToken || config.ACCESS_TOKEN || ''}`); - const payload: Object = { + const payload: any = { event: this.type, created: new Date(timestamp).toISOString(), sdkIdentifier: 'mapbox-gl-js', @@ -372,14 +372,19 @@ class TelemetryEvent { }); } - queueRequest(event: number | {id: number, timestamp: number}, customAccessToken?: ?string) { + queueRequest(event: number | { + id: number, + timestamp: number + }, customAccessToken?: string | null) { this.queue.push(event); this.processRequests(customAccessToken); } } export class MapLoadEvent extends TelemetryEvent { - +success: {[_: number]: boolean}; + readonly success: { + [_: number]: boolean + }; skuToken: string; constructor() { @@ -401,7 +406,7 @@ export class MapLoadEvent extends TelemetryEvent { } } - processRequests(customAccessToken?: ?string) { + processRequests(customAccessToken?: string | null) { if (this.pendingRequest || this.queue.length === 0) return; const {id, timestamp} = this.queue.shift(); @@ -425,12 +430,12 @@ export class MapLoadEvent extends TelemetryEvent { } export class TurnstileEvent extends TelemetryEvent { - constructor(customAccessToken?: ?string) { + constructor(customAccessToken?: string | null) { super('appUserTurnstile'); this._customAccessToken = customAccessToken; } - postTurnstileEvent(tileUrls: Array, customAccessToken?: ?string) { + postTurnstileEvent(tileUrls: Array, customAccessToken?: string | null) { //Enabled only when Mapbox Access Token is set and a source uses // mapbox tiles. if (config.EVENTS_URL && @@ -441,7 +446,7 @@ export class TurnstileEvent extends TelemetryEvent { } } - processRequests(customAccessToken?: ?string) { + processRequests(customAccessToken?: string | null) { if (this.pendingRequest || this.queue.length === 0) { return; } diff --git a/src/util/offscreen_canvas_supported.js b/src/util/offscreen_canvas_supported.ts similarity index 86% rename from src/util/offscreen_canvas_supported.js rename to src/util/offscreen_canvas_supported.ts index 4ec6b188d0..47d4821ad5 100644 --- a/src/util/offscreen_canvas_supported.js +++ b/src/util/offscreen_canvas_supported.ts @@ -1,7 +1,6 @@ -// @flow import window from './window'; -let supportsOffscreenCanvas: ?boolean; +let supportsOffscreenCanvas: boolean | undefined | null; export default function offscreenCanvasSupported(): boolean { if (supportsOffscreenCanvas == null) { diff --git a/src/util/performance.js b/src/util/performance.ts similarity index 93% rename from src/util/performance.js rename to src/util/performance.ts index 0b6a26c377..592782502c 100644 --- a/src/util/performance.js +++ b/src/util/performance.ts @@ -1,16 +1,14 @@ -// @flow - import window from '../util/window'; import type {RequestParameters} from '../util/ajax'; const performance = window.performance; export type PerformanceMetrics = { - loadTime: number, - fullLoadTime: number, - fps: number, - percentDroppedFrames: number -} + loadTime: number, + fullLoadTime: number, + fps: number, + percentDroppedFrames: number +}; export const PerformanceMarkers = { create: 'create', @@ -25,7 +23,7 @@ const minFramerateTarget = 30; const frameTimeTarget = 1000 / minFramerateTarget; export const PerformanceUtils = { - mark(marker: $Keys) { + mark(marker: keyof typeof PerformanceMarkers) { performance.mark(marker); }, frame(timestamp: number) { @@ -78,7 +76,11 @@ export const PerformanceUtils = { * @private */ export class RequestPerformance { - _marks: {start: string, end: string, measure: string}; + _marks: { + start: string, + end: string, + measure: string + }; constructor (request: RequestParameters) { this._marks = { diff --git a/src/util/primitives.js b/src/util/primitives.ts similarity index 98% rename from src/util/primitives.js rename to src/util/primitives.ts index b1cd69e6fe..77f3b280a8 100644 --- a/src/util/primitives.js +++ b/src/util/primitives.ts @@ -1,6 +1,4 @@ -// @flow - -import {vec3, vec4} from 'gl-matrix'; +import { vec3, vec4 } from 'gl-matrix'; import assert from 'assert'; class Frustum { diff --git a/src/util/resolve_tokens.js b/src/util/resolve_tokens.ts similarity index 79% rename from src/util/resolve_tokens.js rename to src/util/resolve_tokens.ts index 3ca7c86055..5f3c6f7499 100644 --- a/src/util/resolve_tokens.js +++ b/src/util/resolve_tokens.ts @@ -1,4 +1,3 @@ -// @flow export default resolveTokens; /** @@ -9,7 +8,12 @@ export default resolveTokens; * @returns the template with tokens replaced * @private */ -function resolveTokens(properties: {+[string]: mixed}, text: string): string { +function resolveTokens( + properties: { + readonly [x: string]: unknown + }, + text: string +): string { return text.replace(/{([^{}]+)}/g, (match, key: string) => { return key in properties ? String(properties[key]) : ''; }); diff --git a/src/util/script_detection.js b/src/util/script_detection.ts similarity index 99% rename from src/util/script_detection.js rename to src/util/script_detection.ts index 985ae48300..a1c143f9b2 100644 --- a/src/util/script_detection.js +++ b/src/util/script_detection.ts @@ -1,5 +1,3 @@ -// @flow - /* eslint-disable new-cap */ import isChar from './is_char_in_unicode_block'; diff --git a/src/util/sku_token.js b/src/util/sku_token.ts similarity index 94% rename from src/util/sku_token.js rename to src/util/sku_token.ts index 990a1c60c1..155cb5c769 100644 --- a/src/util/sku_token.js +++ b/src/util/sku_token.ts @@ -1,5 +1,3 @@ -// @flow - /***** START WARNING - IF YOU USE THIS CODE WITH MAPBOX MAPPING APIS, REMOVAL OR * MODIFICATION OF THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ****** * The following code is used to access Mapbox's Mapping APIs. Removal or modification @@ -13,10 +11,10 @@ * and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/ ******************************************************************************/ -type SkuTokenObject = {| - token: string, - tokenExpiresAt: number -|}; +type SkuTokenObject = { + token: string, + tokenExpiresAt: number +}; const SKU_ID = '01'; diff --git a/src/util/smart_wrap.js b/src/util/smart_wrap.ts similarity index 94% rename from src/util/smart_wrap.js rename to src/util/smart_wrap.ts index a713d1e2b9..7d8998eebb 100644 --- a/src/util/smart_wrap.js +++ b/src/util/smart_wrap.ts @@ -1,5 +1,3 @@ -// @flow - import LngLat from '../geo/lng_lat'; import type Point from '@mapbox/point-geometry'; @@ -20,7 +18,7 @@ import type Transform from '../geo/transform'; * * @private */ -export default function(lngLat: LngLat, priorPos: ?Point, transform: Transform): LngLat { +export default function(lngLat: LngLat, priorPos: Point | undefined | null, transform: Transform): LngLat { lngLat = new LngLat(lngLat.lng, lngLat.lat); // First, try shifting one world in either direction, and see if either is closer to the diff --git a/src/util/struct_array.js b/src/util/struct_array.ts similarity index 93% rename from src/util/struct_array.js rename to src/util/struct_array.ts index f033270be4..21578a0ac3 100644 --- a/src/util/struct_array.js +++ b/src/util/struct_array.ts @@ -1,5 +1,3 @@ -// @flow - // Note: all "sizes" are measured in bytes import assert from 'assert'; @@ -16,7 +14,7 @@ const viewTypes = { 'Float32': Float32Array }; -export type ViewType = $Keys; +export type ViewType = keyof typeof viewTypes; /** * @private @@ -26,7 +24,7 @@ class Struct { _pos2: number; _pos4: number; _pos8: number; - +_structArray: StructArray; + readonly _structArray: StructArray; // The following properties are defined on the prototype of sub classes. size: number; @@ -37,7 +35,7 @@ class Struct { * @private */ constructor(structArray: StructArray, index: number) { - (this: any)._structArray = structArray; + (this as any)._structArray = structArray; this._pos1 = index * this.size; this._pos2 = this._pos1 / 2; this._pos4 = this._pos1 / 4; @@ -49,21 +47,21 @@ const DEFAULT_CAPACITY = 128; const RESIZE_MULTIPLIER = 5; export type StructArrayMember = { - name: string, - type: ViewType, - components: number, - offset: number + name: string, + type: ViewType, + components: number, + offset: number }; export type StructArrayLayout = { - members: Array, - size: number, - alignment: ?number -} + members: Array, + size: number, + alignment: number | undefined | null +}; export type SerializedStructArray = { - length: number, - arrayBuffer: ArrayBuffer + length: number, + arrayBuffer: ArrayBuffer }; /** @@ -97,8 +95,8 @@ class StructArray { // The following properties are defined on the prototype. members: Array; bytesPerElement: number; - +emplaceBack: Function; - +emplace: Function; + readonly emplaceBack: Function; + readonly emplace: Function; constructor() { this.isTransferred = false; @@ -200,8 +198,12 @@ class StructArray { * @private */ function createLayout( - members: Array<{ name: string, type: ViewType, +components?: number, }>, - alignment: number = 1 + members: Array<{ + name: string, + type: ViewType, + readonly components?: number + }>, + alignment: number = 1 ): StructArrayLayout { let offset = 0; diff --git a/src/util/task_queue.js b/src/util/task_queue.ts similarity index 94% rename from src/util/task_queue.js rename to src/util/task_queue.ts index 25b28d250f..f68ce09806 100644 --- a/src/util/task_queue.js +++ b/src/util/task_queue.ts @@ -1,11 +1,11 @@ -// @flow strict import assert from 'assert'; export type TaskID = number; // can't mark opaque due to https://github.com/flowtype/flow-remove-types/pull/61 + type Task = { - callback: (timeStamp: number) => void; - id: TaskID; - cancelled: boolean; + callback: (timeStamp: number) => void, + id: TaskID, + cancelled: boolean }; class TaskQueue { diff --git a/src/util/throttle.js b/src/util/throttle.ts similarity index 84% rename from src/util/throttle.js rename to src/util/throttle.ts index 79c7b6e709..33dd9ead49 100644 --- a/src/util/throttle.js +++ b/src/util/throttle.ts @@ -1,12 +1,10 @@ -// @flow strict - /** * Throttle the given function to run at most every `period` milliseconds. * @private */ -export default function throttle(fn: () => void, time: number): () => ?TimeoutID { +export default function throttle(fn: () => void, time: number): () => TimeoutID | undefined | null { let pending = false; - let timerId: ?TimeoutID = null; + let timerId: TimeoutID | undefined | null = null; const later = () => { timerId = null; diff --git a/src/util/throttled_invoker.js b/src/util/throttled_invoker.ts similarity index 97% rename from src/util/throttled_invoker.js rename to src/util/throttled_invoker.ts index ca1b97bfce..0b44d9d276 100644 --- a/src/util/throttled_invoker.js +++ b/src/util/throttled_invoker.ts @@ -1,5 +1,3 @@ -// @flow - /** * Invokes the wrapped function in a non-blocking way when trigger() is called. Invocation requests * are ignored until the function was actually invoked. @@ -9,7 +7,7 @@ class ThrottledInvoker { _channel: MessageChannel; _triggered: boolean; - _callback: Function + _callback: Function; constructor(callback: Function) { this._callback = callback; diff --git a/src/util/tile_request_cache.js b/src/util/tile_request_cache.ts similarity index 93% rename from src/util/tile_request_cache.js rename to src/util/tile_request_cache.ts index 22b0178037..57ebc9ea10 100644 --- a/src/util/tile_request_cache.js +++ b/src/util/tile_request_cache.ts @@ -1,6 +1,4 @@ -// @flow - -import {warnOnce, parseCacheControl} from './util'; +import { warnOnce, parseCacheControl } from './util'; import window from './window'; import type Dispatcher from './dispatcher'; @@ -12,15 +10,15 @@ let cacheCheckThreshold = 50; const MIN_TIME_UNTIL_EXPIRY = 1000 * 60 * 7; // 7 minutes. Skip caching tiles with a short enough max age. export type ResponseOptions = { - status: number, - statusText: string, - headers: window.Headers + status: number, + statusText: string, + headers: window.Headers }; // We're using a global shared cache object. Normally, requesting ad-hoc Cache objects is fine, but // Safari has a memory leak in which it fails to release memory when requesting keys() from a Cache // object. See https://bugs.webkit.org/show_bug.cgi?id=203991 for more information. -let sharedCache: ?Promise; +let sharedCache: Promise | undefined | null; function cacheOpen() { if (window.caches && !sharedCache) { @@ -91,7 +89,7 @@ function stripQueryParameters(url: string) { return start < 0 ? url : url.slice(0, start); } -export function cacheGet(request: Request, callback: (error: ?any, response: ?Response, fresh: ?boolean) => void) { +export function cacheGet(request: Request, callback: (error?: any | null, response?: Response | null, fresh?: boolean | null) => void) { cacheOpen(); if (!sharedCache) return callback(null); @@ -159,7 +157,7 @@ export function enforceCacheSizeLimit(limit: number) { }); } -export function clearTileCache(callback?: (err: ?Error) => void) { +export function clearTileCache(callback?: (err?: Error | null) => void) { const promise = window.caches.delete(CACHE_NAME); if (callback) { promise.catch(callback).then(() => callback()); diff --git a/src/util/util.js b/src/util/util.ts similarity index 92% rename from src/util/util.js rename to src/util/util.ts index f5e3d55c58..7dad70f0c9 100644 --- a/src/util/util.js +++ b/src/util/util.ts @@ -1,5 +1,3 @@ -// @flow - import UnitBezier from '@mapbox/unitbezier'; import Point from '@mapbox/point-geometry'; @@ -94,9 +92,9 @@ export function wrap(n: number, min: number, max: number): number { * @private */ export function asyncAll( - array: Array, - fn: (item: Item, fnCallback: Callback) => void, - callback: Callback> + array: Array, + fn: (item: Item, fnCallback: Callback) => void, + callback: Callback> ) { if (!array.length) { return callback(null, []); } let remaining = array.length; @@ -105,7 +103,7 @@ export function asyncAll( array.forEach((item, i) => { fn(item, (err, result) => { if (err) error = err; - results[i] = ((result: any): Result); // https://github.com/facebook/flow/issues/2123 + results[i] = (result as any as Result); // https://github.com/facebook/flow/issues/2123 if (--remaining === 0) callback(error, results); }); }); @@ -117,7 +115,11 @@ export function asyncAll( * * @private */ -export function values(obj: {[key: string]: T}): Array { +export function values( + obj: { + [key: string]: T + } +): Array { const result = []; for (const k in obj) { result.push(obj[k]); @@ -132,7 +134,14 @@ export function values(obj: {[key: string]: T}): Array { * @returns keys difference * @private */ -export function keysDifference(obj: {[key: string]: S}, other: {[key: string]: T}): Array { +export function keysDifference( + obj: { + [key: string]: S + }, + other: { + [key: string]: T + } +): Array { const difference = []; for (const i in obj) { if (!(i in other)) { @@ -152,7 +161,7 @@ export function keysDifference(obj: {[key: string]: S}, other: {[key: stri * @param sources sources from which properties are pulled * @private */ -export function extend(dest: Object, ...sources: Array): Object { +export function extend(dest: any, ...sources: Array): any { for (const src of sources) { for (const k in src) { dest[k] = src[k]; @@ -175,7 +184,7 @@ export function extend(dest: Object, ...sources: Array): Object { * // justName = { name: 'Charlie' } * @private */ -export function pick(src: Object, properties: Array): Object { +export function pick(src: any, properties: Array): any { const result = {}; for (let i = 0; i < properties.length; i++) { const k = properties[i]; @@ -235,7 +244,7 @@ export function nextPowerOfTwo(value: number): number { * @param str string to validate. * @private */ -export function validateUuid(str: ?string): boolean { +export function validateUuid(str?: string | null): boolean { return str ? /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str) : false; } @@ -260,7 +269,7 @@ export function validateUuid(str: ?string): boolean { * setTimeout(myClass.ontimer, 100); * @private */ -export function bindAll(fns: Array, context: Object): void { +export function bindAll(fns: Array, context: any): void { fns.forEach((fn) => { if (!context[fn]) { return; } context[fn] = context[fn].bind(context); @@ -282,7 +291,7 @@ export function endsWith(string: string, suffix: string): boolean { * * @private */ -export function mapObject(input: Object, iterator: Function, context?: Object): Object { +export function mapObject(input: any, iterator: Function, context?: any): any { const output = {}; for (const key in input) { output[key] = iterator.call(context || this, input[key], key, input); @@ -295,7 +304,7 @@ export function mapObject(input: Object, iterator: Function, context?: Object): * * @private */ -export function filterObject(input: Object, iterator: Function, context?: Object): Object { +export function filterObject(input: any, iterator: Function, context?: any): any { const output = {}; for (const key in input) { if (iterator.call(context || this, input[key], key, input)) { @@ -317,7 +326,7 @@ export function clone(input: T): T { if (Array.isArray(input)) { return input.map(clone); } else if (typeof input === 'object' && input) { - return ((mapObject(input, clone): any): T); + return mapObject(input, clone) as any as T; } else { return input; } @@ -341,7 +350,9 @@ export function arraysIntersect(a: Array, b: Array): boolean { * * @private */ -const warnOnceHistory: {[key: string]: boolean} = {}; +const warnOnceHistory: { + [key: string]: boolean +} = {}; export function warnOnce(message: string): void { if (!warnOnceHistory[message]) { @@ -413,7 +424,11 @@ export function isClosedPolygon(points: Array): boolean { * @return cartesian coordinates in [x, y, z] */ -export function sphericalToCartesian([r, azimuthal, polar]: [number, number, number]): {x: number, y: number, z: number} { +export function sphericalToCartesian([r, azimuthal, polar]: [number, number, number]): { + x: number, + y: number, + z: number +} { // We abstract "north"/"up" (compass-wise) to be 0° when really this is 90° (π/2): // correct for that here azimuthal += 90; @@ -449,7 +464,7 @@ export function isWorker(): boolean { * @return object containing parsed header info. */ -export function parseCacheControl(cacheControl: string): Object { +export function parseCacheControl(cacheControl: string): any { // Taken from [Wreck](https://github.com/hapijs/wreck) const re = /(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g; diff --git a/src/util/vectortile_to_geojson.js b/src/util/vectortile_to_geojson.ts similarity index 59% rename from src/util/vectortile_to_geojson.js rename to src/util/vectortile_to_geojson.ts index 87df3344a4..85bb06fb94 100644 --- a/src/util/vectortile_to_geojson.js +++ b/src/util/vectortile_to_geojson.ts @@ -1,9 +1,8 @@ -// @flow -import type {GeoJSONGeometry} from '@mapbox/geojson-types'; +import type { GeoJSONGeometry } from '@mapbox/geojson-types'; class Feature { - type: 'Feature'; - _geometry: ?GeoJSONGeometry; + type: "Feature"; + _geometry: GeoJSONGeometry | undefined | null; properties: {}; id: number | string | void; @@ -13,25 +12,25 @@ class Feature { this.type = 'Feature'; this._vectorTileFeature = vectorTileFeature; - (vectorTileFeature: any)._z = z; - (vectorTileFeature: any)._x = x; - (vectorTileFeature: any)._y = y; + (vectorTileFeature as any)._z = z; + (vectorTileFeature as any)._x = x; + (vectorTileFeature as any)._y = y; this.properties = vectorTileFeature.properties; this.id = id; } - get geometry(): ?GeoJSONGeometry { + get geometry(): GeoJSONGeometry | undefined | null { if (this._geometry === undefined) { this._geometry = this._vectorTileFeature.toGeoJSON( - (this._vectorTileFeature: any)._x, - (this._vectorTileFeature: any)._y, - (this._vectorTileFeature: any)._z).geometry; + (this._vectorTileFeature as any)._x, + (this._vectorTileFeature as any)._y, + (this._vectorTileFeature as any)._z).geometry; } return this._geometry; } - set geometry(g: ?GeoJSONGeometry) { + set geometry(g: GeoJSONGeometry | undefined | null) { this._geometry = g; } @@ -41,7 +40,7 @@ class Feature { }; for (const i in this) { if (i === '_geometry' || i === '_vectorTileFeature') continue; - json[i] = (this: any)[i]; + json[i] = (this as any)[i]; } return json; } diff --git a/src/util/verticalize_punctuation.js b/src/util/verticalize_punctuation.ts similarity index 96% rename from src/util/verticalize_punctuation.js rename to src/util/verticalize_punctuation.ts index 658ffdf631..c44cd203b2 100644 --- a/src/util/verticalize_punctuation.js +++ b/src/util/verticalize_punctuation.ts @@ -1,8 +1,4 @@ -// @flow - -import { - charHasRotatedVerticalOrientation, -} from './script_detection'; +import { charHasRotatedVerticalOrientation } from './script_detection'; export const verticalizedCharacterMap = { '!': '︕', diff --git a/src/util/web_worker.js b/src/util/web_worker.ts similarity index 75% rename from src/util/web_worker.js rename to src/util/web_worker.ts index b08477c97b..36fbc15ecb 100644 --- a/src/util/web_worker.js +++ b/src/util/web_worker.ts @@ -1,5 +1,3 @@ -// @flow - // This file is intended for use in the GL-JS test suite // It implements a MessageBus main thread interface for use in Node environments // In a browser environment, this file is replaced with ./src/util/browser/web_worker.js @@ -10,50 +8,58 @@ import Worker from '../source/worker'; import type {WorkerSource} from '../source/worker_source'; -type MessageListener = ({data: Object}) => mixed; +type MessageListener = ( + a: { + data: any + } +) => unknown; // The main thread interface. Provided by Worker in a browser environment, // and MessageBus below in a node environment. export interface WorkerInterface { - addEventListener(type: 'message', listener: MessageListener): void; - removeEventListener(type: 'message', listener: MessageListener): void; - postMessage(message: any): void; - terminate(): void; + addEventListener(type: "message", listener: MessageListener): void; + removeEventListener(type: "message", listener: MessageListener): void; + postMessage(message: any): void; + terminate(): void; } export interface WorkerGlobalScopeInterface { - importScripts(...urls: Array): void; - - registerWorkerSource: (string, Class) => void, - registerRTLTextPlugin: (_: any) => void + importScripts(...urls: Array): void; + registerWorkerSource: ( + b: string, + a: { + new (...args: any): WorkerSource + } + ) => void; + registerRTLTextPlugin: (_: any) => void; } class MessageBus implements WorkerInterface, WorkerGlobalScopeInterface { addListeners: Array; postListeners: Array; target: MessageBus; - registerWorkerSource: *; - registerRTLTextPlugin: *; + registerWorkerSource: any; + registerRTLTextPlugin: any; constructor(addListeners: Array, postListeners: Array) { this.addListeners = addListeners; this.postListeners = postListeners; } - addEventListener(event: 'message', callback: MessageListener) { + addEventListener(event: "message", callback: MessageListener) { if (event === 'message') { this.addListeners.push(callback); } } - removeEventListener(event: 'message', callback: MessageListener) { + removeEventListener(event: "message", callback: MessageListener) { const i = this.addListeners.indexOf(callback); if (i >= 0) { this.addListeners.splice(i, 1); } } - postMessage(data: Object) { + postMessage(data: any) { setImmediate(() => { try { for (const listener of this.postListeners) { diff --git a/src/util/web_worker_transfer.js b/src/util/web_worker_transfer.ts similarity index 82% rename from src/util/web_worker_transfer.js rename to src/util/web_worker_transfer.ts index a3625eccc4..2ebafe262d 100644 --- a/src/util/web_worker_transfer.js +++ b/src/util/web_worker_transfer.ts @@ -1,5 +1,3 @@ -// @flow - import assert from 'assert'; import Grid from 'grid-index'; @@ -13,36 +11,26 @@ const {ImageData, ImageBitmap} = window; import type {Transferable} from '../types/transferable'; -type SerializedObject = {[_: string]: Serialized }; // eslint-disable-line -export type Serialized = - | null - | void - | boolean - | number - | string - | Boolean - | Number - | String - | Date - | RegExp - | ArrayBuffer - | $ArrayBufferView - | ImageData - | Array - | SerializedObject; +type SerializedObject = { + [_: string]: Serialized +}; // eslint-disable-line + +export type Serialized = null | void | boolean | number | string | Boolean | Number | String | Date | RegExp | ArrayBuffer | $ArrayBufferView | ImageData | Array | SerializedObject; type Registry = { - [_: string]: { - klass: Class, - omit: $ReadOnlyArray, - shallow: $ReadOnlyArray - } + [_: string]: { + klass: { + new (...args: any): any + }, + omit: ReadonlyArray, + shallow: ReadonlyArray + } }; type RegisterOptions = { - omit?: $ReadOnlyArray<$Keys>, - shallow?: $ReadOnlyArray<$Keys> -} + omit?: ReadonlyArray, + shallow?: ReadonlyArray +}; const registry: Registry = {}; @@ -55,9 +43,15 @@ const registry: Registry = {}; * * @private */ -export function register(name: string, klass: Class, options: RegisterOptions = {}) { +export function register( + name: string, + klass: { + new (...args: any): T + }, + options: RegisterOptions = {} +) { assert(!registry[name], `${name} is already registered.`); - (Object.defineProperty: any)(klass, '_classRegistryKey', { + ((Object.defineProperty as any))(klass, '_classRegistryKey', { value: name, writeable: false }); @@ -70,7 +64,9 @@ export function register(name: string, klass: Class, options: Registe register('Object', Object); -type SerializedGrid = { buffer: ArrayBuffer }; +type SerializedGrid = { + buffer: ArrayBuffer +}; Grid.serialize = function serialize(grid: Grid, transferables?: Array): SerializedGrid { const buffer = grid.toArrayBuffer(); @@ -96,7 +92,7 @@ register('ZoomDependentExpression', ZoomDependentExpression); register('ZoomConstantExpression', ZoomConstantExpression); register('CompoundExpression', CompoundExpression, {omit: ['_evaluate']}); for (const name in expressions) { - if ((expressions[name]: any)._classRegistryKey) continue; + if ((expressions[name] as any)._classRegistryKey) continue; register(`Expression_${name}`, expressions[name]); } @@ -124,7 +120,7 @@ function isImageBitmap(val: any): boolean { * * @private */ -export function serialize(input: mixed, transferables: ?Array): Serialized { +export function serialize(input: unknown, transferables?: Array | null): Serialized { if (input === null || input === undefined || typeof input === 'boolean' || @@ -140,13 +136,13 @@ export function serialize(input: mixed, transferables: ?Array): Se if (isArrayBuffer(input) || isImageBitmap(input)) { if (transferables) { - transferables.push(((input: any): ArrayBuffer)); + transferables.push(((input as any as ArrayBuffer))); } return input; } if (ArrayBuffer.isView(input)) { - const view: $ArrayBufferView = (input: any); + const view: $ArrayBufferView = (input as any); if (transferables) { transferables.push(view.buffer); } @@ -169,7 +165,7 @@ export function serialize(input: mixed, transferables: ?Array): Se } if (typeof input === 'object') { - const klass = (input.constructor: any); + const klass = (input.constructor as any); const name = klass._classRegistryKey; if (!name) { throw new Error(`can't serialize object of unregistered class`); @@ -184,14 +180,14 @@ export function serialize(input: mixed, transferables: ?Array): Se // approach for objects whose members include instances of dynamic // StructArray types. Once we refactor StructArray to be static, // we can remove this complexity. - (klass.serialize(input, transferables): SerializedObject) : {}; + (klass.serialize(input, transferables) as SerializedObject) : {}; if (!klass.serialize) { for (const key in input) { // any cast due to https://github.com/facebook/flow/issues/5393 - if (!(input: any).hasOwnProperty(key)) continue; + if (!(input as any).hasOwnProperty(key)) continue; if (registry[name].omit.indexOf(key) >= 0) continue; - const property = (input: any)[key]; + const property = (input as any)[key]; properties[key] = registry[name].shallow.indexOf(key) >= 0 ? property : serialize(property, transferables); @@ -217,7 +213,7 @@ export function serialize(input: mixed, transferables: ?Array): Se throw new Error(`can't serialize object of type ${typeof input}`); } -export function deserialize(input: Serialized): mixed { +export function deserialize(input: Serialized): unknown { if (input === null || input === undefined || typeof input === 'boolean' || @@ -240,7 +236,7 @@ export function deserialize(input: Serialized): mixed { } if (typeof input === 'object') { - const name = (input: any).$name || 'Object'; + const name = (input as any).$name || 'Object'; const {klass} = registry[name]; if (!klass) { @@ -248,14 +244,14 @@ export function deserialize(input: Serialized): mixed { } if (klass.deserialize) { - return (klass.deserialize: typeof deserialize)(input); + return ((klass.deserialize as typeof deserialize))(input); } const result = Object.create(klass.prototype); for (const key of Object.keys(input)) { if (key === '$name') continue; - const value = (input: SerializedObject)[key]; + const value = (input as SerializedObject)[key]; result[key] = registry[name].shallow.indexOf(key) >= 0 ? value : deserialize(value); } diff --git a/src/util/webp_supported.js b/src/util/webp_supported.ts similarity index 99% rename from src/util/webp_supported.js rename to src/util/webp_supported.ts index 7c40c7c97b..a178099fc7 100755 --- a/src/util/webp_supported.js +++ b/src/util/webp_supported.ts @@ -1,5 +1,3 @@ -// @flow strict - import window from './window'; const exported = { diff --git a/src/util/window.js b/src/util/window.ts similarity index 99% rename from src/util/window.js rename to src/util/window.ts index 0d465f163f..8ffcc56d2c 100644 --- a/src/util/window.js +++ b/src/util/window.ts @@ -1,5 +1,3 @@ -// @flow strict - // This file is intended for use in the GL-JS test suite // It implements a JSDOM window object for use in Node environments // In a browser environment, this file is replaced with ./src/util/browser/window.js diff --git a/src/util/worker_pool.js b/src/util/worker_pool.ts similarity index 93% rename from src/util/worker_pool.js rename to src/util/worker_pool.ts index f9a899dfcc..59a36995ea 100644 --- a/src/util/worker_pool.js +++ b/src/util/worker_pool.ts @@ -1,5 +1,3 @@ -// @flow - import WebWorker from './web_worker'; import type {WorkerInterface} from './web_worker'; import browser from './browser'; @@ -13,7 +11,9 @@ export const PRELOAD_POOL_ID = 'mapboxgl_preloaded_worker_pool'; export default class WorkerPool { static workerCount: number; - active: {[_: number | string]: boolean}; + active: { + [_ in number | string]: boolean; + }; workers: Array; constructor() { @@ -40,7 +40,7 @@ export default class WorkerPool { this.workers.forEach((w) => { w.terminate(); }); - this.workers = (null: any); + this.workers = (null as any); } } From 5f2922835f5a55f402f9fc9562d1c6214ddc0cf2 Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 16 Jul 2021 16:44:08 +0300 Subject: [PATCH 003/142] Iint upgrade --- .eslintrc | 34 +- README.md | 2 - package.json | 49 +- src/data/bucket.ts | 2 +- src/data/bucket/circle_attributes.ts | 2 +- src/data/bucket/circle_bucket.ts | 2 +- src/data/bucket/fill_attributes.ts | 2 +- src/data/bucket/fill_bucket.ts | 2 +- src/data/bucket/fill_extrusion_attributes.ts | 2 +- src/data/bucket/fill_extrusion_bucket.ts | 2 +- src/data/bucket/line_attributes.ts | 2 +- src/data/bucket/line_attributes_ext.ts | 2 +- src/data/bucket/line_bucket.ts | 6 +- src/data/bucket/pattern_attributes.ts | 2 +- src/data/bucket/symbol_attributes.ts | 2 +- src/data/bucket/symbol_bucket.ts | 8 +- src/data/dem_data.ts | 2 +- src/data/feature_index.ts | 2 +- src/data/index_array_type.ts | 2 +- src/data/load_geometry.ts | 2 +- src/data/pos_attributes.ts | 2 +- src/data/program_configuration.ts | 6 +- src/data/raster_bounds_attributes.ts | 2 +- src/data/segment.ts | 2 +- src/geo/edge_insets.ts | 2 +- src/geo/lng_lat.ts | 2 +- src/geo/mercator_coordinate.ts | 2 +- src/gl/context.ts | 4 +- src/gl/cull_face_mode.ts | 2 +- src/gl/depth_mode.ts | 2 +- src/gl/framebuffer.ts | 2 +- src/gl/stencil_mode.ts | 2 +- src/render/draw_raster.ts | 2 +- src/render/draw_symbol.ts | 4 +- src/render/glyph_atlas.ts | 2 +- src/render/image_atlas.ts | 12 +- src/render/line_atlas.ts | 2 +- src/render/program.ts | 2 +- src/render/program/background_program.ts | 46 +- src/render/program/circle_program.ts | 14 +- src/render/program/clipping_mask_program.ts | 6 +- src/render/program/collision_program.ts | 20 +- src/render/program/debug_program.ts | 18 +- src/render/program/fill_extrusion_program.ts | 42 +- src/render/program/fill_program.ts | 44 +- src/render/program/heatmap_program.ts | 24 +- src/render/program/hillshade_program.ts | 26 +- src/render/program/line_program.ts | 60 +- src/render/program/program_uniforms.ts | 2 +- src/render/program/raster_program.ts | 54 +- src/render/program/symbol_program.ts | 114 +- src/shaders/encode_attribute.ts | 2 +- src/source/geojson_source.ts | 2 +- src/source/geojson_worker_source.ts | 2 +- src/source/image_source.ts | 2 +- src/source/load_tilejson.ts | 2 +- src/source/raster_dem_tile_source.ts | 2 +- src/source/raster_tile_source.ts | 2 +- src/source/rtl_text_plugin.ts | 2 +- src/source/source.ts | 2 +- src/source/source_cache.ts | 2 +- src/source/source_state.ts | 2 +- src/source/tile.ts | 2 +- src/source/tile_cache.ts | 2 +- src/source/tile_id.ts | 2 +- src/source/vector_tile_source.ts | 2 +- src/source/vector_tile_worker_source.ts | 2 +- src/source/video_source.ts | 2 +- src/source/worker_source.ts | 2 +- .../expression/compound_expression.ts | 2 +- src/style-spec/expression/definitions/at.ts | 2 +- .../expression/definitions/collator.ts | 2 +- .../expression/definitions/comparison.ts | 2 +- .../expression/definitions/format.ts | 14 +- .../expression/definitions/image.ts | 2 +- src/style-spec/expression/definitions/in.ts | 16 +- .../expression/definitions/index.ts | 22 +- .../expression/definitions/index_of.ts | 16 +- .../expression/definitions/length.ts | 2 +- src/style-spec/expression/definitions/let.ts | 2 +- .../expression/definitions/match.ts | 4 +- .../expression/definitions/number_format.ts | 10 +- .../expression/definitions/slice.ts | 14 +- src/style-spec/expression/definitions/step.ts | 2 +- src/style-spec/expression/definitions/var.ts | 2 +- .../expression/definitions/within.ts | 2 +- .../expression/evaluation_context.ts | 2 +- src/style-spec/expression/expression.ts | 2 +- src/style-spec/expression/scope.ts | 2 +- src/style-spec/expression/types/collator.ts | 8 +- src/style-spec/feature_filter/convert.ts | 2 +- src/style-spec/feature_filter/index.ts | 2 +- src/style-spec/migrate/expressions.ts | 2 +- src/style-spec/util/color.ts | 2 +- src/style-spec/util/properties.ts | 2 +- src/style/load_glyph_range.ts | 2 +- src/style/load_sprite.ts | 2 +- src/style/parse_glyph_pbf.ts | 2 +- src/style/style.ts | 4 +- src/style/style_glyph.ts | 2 +- src/style/style_image.ts | 2 +- src/style/style_layer.ts | 6 +- src/symbol/collision_feature.ts | 2 +- src/symbol/get_anchors.ts | 2 +- src/symbol/mergelines.ts | 2 +- src/symbol/opacity_state.ts | 2 +- src/symbol/path_interpolator.ts | 2 +- src/symbol/placement.ts | 4 +- src/symbol/symbol_size.ts | 10 +- src/symbol/transform_text.ts | 2 +- src/ui/camera.ts | 2 +- src/ui/control/geolocate_control.ts | 2 +- src/ui/events.ts | 2 +- src/ui/handler/map_event.ts | 2 +- src/ui/handler/shim/drag_pan.ts | 2 +- src/ui/handler/shim/drag_rotate.ts | 2 +- src/ui/handler/shim/touch_zoom_rotate.ts | 2 +- src/ui/handler/tap_drag_zoom.ts | 2 +- src/ui/handler/tap_zoom.ts | 2 +- src/ui/handler_manager.ts | 2 +- src/ui/hash.ts | 2 +- src/ui/map.ts | 16 +- src/ui/marker.ts | 4 +- src/ui/popup.ts | 6 +- src/util/actor.ts | 2 +- src/util/browser/window.ts | 2 +- src/util/color_ramp.ts | 2 +- src/util/debug.ts | 2 +- src/util/dispatcher.ts | 2 +- src/util/evented.ts | 2 +- src/util/global_worker_pool.ts | 2 +- src/util/image.ts | 8 +- src/util/intersection_tests.ts | 2 +- src/util/primitives.ts | 2 +- src/util/tile_request_cache.ts | 2 +- src/util/vectortile_to_geojson.ts | 2 +- src/util/verticalize_punctuation.ts | 2 +- tsconfig.json | 36 + yarn.lock | 1916 +++++++++++++---- 139 files changed, 2073 insertions(+), 834 deletions(-) create mode 100644 tsconfig.json diff --git a/.eslintrc b/.eslintrc index b17f3bafc2..b42f067dc7 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,19 +1,31 @@ { "extends": [ "mourner", - "plugin:flowtype/recommended", - "plugin:import/recommended" + // "plugin:@typescript-eslint/recommended", + "plugin:import/recommended", + "plugin:import/typescript" ], - "parser": "babel-eslint", + "parser": "@typescript-eslint/parser", "parserOptions": { - "sourceType": "module" + "sourceType": "module", + "createDefaultProgram": true }, "plugins": [ - "flowtype", + "@typescript-eslint", "import", "jsdoc" ], "rules": { + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/restrict-template-expressions": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", + { "argsIgnorePattern": "^_" } + ], + // Disable no-undef. It's covered by @typescript-eslint + "no-undef": "off", // temporarily disabled due to https://github.com/babel/babel-eslint/issues/485 "no-use-before-define": "off", @@ -33,13 +45,6 @@ "array-bracket-spacing": "off", "consistent-return": "off", - "flowtype/define-flow-type": 1, - "flowtype/require-valid-file-annotation": [ - 2, - "always", { - "annotationStyle": "line" - } - ], "global-require": "off", "import/no-commonjs": "error", "key-spacing": "off", @@ -72,7 +77,7 @@ "parameters": "off" } }], - "no-multiple-empty-lines": [ "error", { + "no-multiple-empty-lines": [ "error", { "max": 1 }], "jsdoc/check-param-names": "warn", @@ -87,6 +92,7 @@ "ignorePrivate": true } }, + "ignorePatterns": ["build/*.js", "*.json"], "overrides": [ { "files": ["debug/**", "bench/**", "test/**", "src/style-spec/**"], @@ -107,4 +113,4 @@ "es6": true, "browser": false } -} +} \ No newline at end of file diff --git a/README.md b/README.md index fabdccff4f..996be44784 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,6 @@ Use MapLibre GL JS bindings for React (https://visgl.github.io/react-map-gl/docs ### Roadmap -Migrate to typescript - This project's initial plans are outlined in the [Roadmap](https://github.com/maplibre/maplibre-gl-js/projects/2) project. The primary goal is consistency and backwards-compatability with previous releases and continued bug-fixes and maintenance going forward. ### Getting Involved diff --git a/package.json b/package.json index 4d96f02e65..1ced20ecaa 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,44 @@ "@mapbox/mvt-fixtures": "^3.6.0", "@octokit/rest": "^16.30.1", "@rollup/plugin-strip": "^1.3.1", + "@types/babel__core": "^7.1.12", + "@types/babelify": "^7.3.6", + "@types/benchmark": "^2.1.0", + "@types/browserify": "^12.0.36", + "@types/cssnano": "^4.0.0", + "@types/d3": "^4.13.12", + "@types/diff": "^4.0.2", + "@types/earcut": "^2.1.1", + "@types/ejs": "^2.7.0", + "@types/eslint": "^7.2.6", + "@types/esm": "~3.2.0", + "@types/gl": "^4.1.0", + "@types/glob": "^7.1.3", + "@types/jsdom": "^16.2.5", + "@types/jsonwebtoken": "^8.5.0", + "@types/lodash.template": "^4.5.0", + "@types/minimist": "^1.2.1", + "@types/murmurhash-js": "^1.0.3", + "@types/node-notifier": "^8.0.0", + "@types/npm-packlist": "^1.1.1", + "@types/pbf": "^3.0.2", + "@types/pixelmatch": "^5.2.2", + "@types/pngjs": "^3.4.2", + "@types/puppeteer": "^1.20.7", + "@types/react": "^16.14.2", + "@types/react-dom": "^16.9.10", + "@types/request": "^2.48.5", + "@types/rollup-plugin-buble": "^0.19.1", + "@types/rollup-plugin-json": "^3.0.2", + "@types/rollup-plugin-sourcemaps": "^0.4.2", + "@types/selenium-webdriver": "^4.0.10", + "@types/shuffle-seed": "^1.1.0", + "@types/sinon": "^7.5.2", + "@types/stylelint": "^9.10.1", + "@types/supercluster": "^5.0.2", + "@types/tape": "^4.13.0", + "@typescript-eslint/eslint-plugin": "^4.10.0", + "@typescript-eslint/parser": "^4.10.0", "@types/geojson": "^7946.0.7", "address": "^1.1.2", "babel-eslint": "^10.0.1", @@ -61,13 +99,13 @@ "diff": "^4.0.1", "documentation": "~12.1.1", "ejs": "^2.5.7", - "eslint": "^5.15.3", + "eslint": "^7.15.0", "eslint-config-mourner": "^3.0.0", "eslint-plugin-flowtype": "^3.9.1", "eslint-plugin-html": "^5.0.5", - "eslint-plugin-import": "^2.16.0", - "eslint-plugin-jsdoc": "^17.1.2", - "eslint-plugin-react": "^7.12.4", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^30.7.8", + "eslint-plugin-react": "^7.21.5", "esm": "~3.0.84", "flow-bin": "^0.100.0", "gl": "^4.5.3", @@ -119,7 +157,8 @@ "tap-parser": "^10.0.1", "tape": "^4.13.2", "tape-filter": "^1.0.4", - "testem": "^3.0.0" + "testem": "^3.0.0", + "typescript": "^4.3.5" }, "browser": { "./src/shaders/index.js": "./src/shaders/shaders.js", diff --git a/src/data/bucket.ts b/src/data/bucket.ts index f98d2f166b..910e69de3a 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -1,4 +1,4 @@ -import type { CollisionBoxArray } from './array_types'; +import type {CollisionBoxArray} from './array_types'; import type Style from '../style/style'; import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer'; import type FeatureIndex from './feature_index'; diff --git a/src/data/bucket/circle_attributes.ts b/src/data/bucket/circle_attributes.ts index d3b913a667..ed9ebcefa8 100644 --- a/src/data/bucket/circle_attributes.ts +++ b/src/data/bucket/circle_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'} diff --git a/src/data/bucket/circle_bucket.ts b/src/data/bucket/circle_bucket.ts index 8d32a306b6..5560f138b7 100644 --- a/src/data/bucket/circle_bucket.ts +++ b/src/data/bucket/circle_bucket.ts @@ -1,4 +1,4 @@ -import { CircleLayoutArray } from '../array_types'; +import {CircleLayoutArray} from '../array_types'; import {members as layoutAttributes} from './circle_attributes'; import SegmentVector from '../segment'; diff --git a/src/data/bucket/fill_attributes.ts b/src/data/bucket/fill_attributes.ts index d3b913a667..ed9ebcefa8 100644 --- a/src/data/bucket/fill_attributes.ts +++ b/src/data/bucket/fill_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'} diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index cefb39ecc5..c711d3a1d7 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -1,4 +1,4 @@ -import { FillLayoutArray } from '../array_types'; +import {FillLayoutArray} from '../array_types'; import {members as layoutAttributes} from './fill_attributes'; import SegmentVector from '../segment'; diff --git a/src/data/bucket/fill_extrusion_attributes.ts b/src/data/bucket/fill_extrusion_attributes.ts index cbf3d68af0..dcb728e73f 100644 --- a/src/data/bucket/fill_extrusion_attributes.ts +++ b/src/data/bucket/fill_extrusion_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const layout = createLayout([ {name: 'a_pos', components: 2, type: 'Int16'}, diff --git a/src/data/bucket/fill_extrusion_bucket.ts b/src/data/bucket/fill_extrusion_bucket.ts index e76ac03a96..cee289e7e0 100644 --- a/src/data/bucket/fill_extrusion_bucket.ts +++ b/src/data/bucket/fill_extrusion_bucket.ts @@ -1,4 +1,4 @@ -import { FillExtrusionLayoutArray } from '../array_types'; +import {FillExtrusionLayoutArray} from '../array_types'; import {members as layoutAttributes} from './fill_extrusion_attributes'; import SegmentVector from '../segment'; diff --git a/src/data/bucket/line_attributes.ts b/src/data/bucket/line_attributes.ts index 0cc629f5eb..9371f12564 100644 --- a/src/data/bucket/line_attributes.ts +++ b/src/data/bucket/line_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const lineLayoutAttributes = createLayout([ {name: 'a_pos_normal', components: 2, type: 'Int16'}, diff --git a/src/data/bucket/line_attributes_ext.ts b/src/data/bucket/line_attributes_ext.ts index 8bc44461de..b73b60d33b 100644 --- a/src/data/bucket/line_attributes_ext.ts +++ b/src/data/bucket/line_attributes_ext.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const lineLayoutAttributesExt = createLayout([ {name: 'a_uv_x', components: 1, type: 'Float32'}, diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index 63ca5f4d8e..c61fdb20fe 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -1,4 +1,4 @@ -import { LineLayoutArray, LineExtLayoutArray } from '../array_types'; +import {LineLayoutArray, LineExtLayoutArray} from '../array_types'; import {members as layoutAttributes} from './line_attributes'; import {members as layoutAttributesExt} from './line_attributes_ext'; @@ -540,8 +540,8 @@ class LineBucket implements Bucket { } addHalfVertex({ - x, - y + x, + y }: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) { const totalDistance = this.lineClips ? this.scaledDistance * (MAX_LINE_DISTANCE - 1) : this.scaledDistance; // scale down so that we can store longer distances while sacrificing precision. diff --git a/src/data/bucket/pattern_attributes.ts b/src/data/bucket/pattern_attributes.ts index 22bb51177e..ca8de1b514 100644 --- a/src/data/bucket/pattern_attributes.ts +++ b/src/data/bucket/pattern_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; const patternAttributes = createLayout([ // [tl.x, tl.y, br.x, br.y] diff --git a/src/data/bucket/symbol_attributes.ts b/src/data/bucket/symbol_attributes.ts index 0d795d7f13..34d5ffaec5 100644 --- a/src/data/bucket/symbol_attributes.ts +++ b/src/data/bucket/symbol_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../../util/struct_array'; +import {createLayout} from '../../util/struct_array'; export const symbolLayoutAttributes = createLayout([ {name: 'a_pos_offset', components: 4, type: 'Int16'}, diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index f2c93d25a2..d9c52d01ee 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -1,8 +1,8 @@ import { - symbolLayoutAttributes, - collisionVertexAttributes, - collisionBoxLayout, - dynamicLayoutAttributes, + symbolLayoutAttributes, + collisionVertexAttributes, + collisionBoxLayout, + dynamicLayoutAttributes, } from './symbol_attributes'; import {SymbolLayoutArray, diff --git a/src/data/dem_data.ts b/src/data/dem_data.ts index b90d6bf634..18a7db91ca 100644 --- a/src/data/dem_data.ts +++ b/src/data/dem_data.ts @@ -1,4 +1,4 @@ -import { RGBAImage } from '../util/image'; +import {RGBAImage} from '../util/image'; import {warnOnce} from '../util/util'; import {register} from '../util/web_worker_transfer'; diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index ac01e6b24e..bf34c7fba0 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -97,7 +97,7 @@ class FeatureIndex { loadVTLayers(): { [_: string]: VectorTileLayer - } { + } { if (!this.vtLayers) { this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers; this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']); diff --git a/src/data/index_array_type.ts b/src/data/index_array_type.ts index 547fde2a37..544195c1d3 100644 --- a/src/data/index_array_type.ts +++ b/src/data/index_array_type.ts @@ -1,4 +1,4 @@ -import { LineIndexArray, TriangleIndexArray, LineStripIndexArray } from './array_types'; +import {LineIndexArray, TriangleIndexArray, LineStripIndexArray} from './array_types'; /** * An index array stores Uint16 indices of vertexes in a corresponding vertex array. We use diff --git a/src/data/load_geometry.ts b/src/data/load_geometry.ts index cc67cb8569..6628bf79b2 100644 --- a/src/data/load_geometry.ts +++ b/src/data/load_geometry.ts @@ -1,4 +1,4 @@ -import { warnOnce, clamp } from '../util/util'; +import {warnOnce, clamp} from '../util/util'; import EXTENT from './extent'; diff --git a/src/data/pos_attributes.ts b/src/data/pos_attributes.ts index a1266baf24..37d3cbb514 100644 --- a/src/data/pos_attributes.ts +++ b/src/data/pos_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../util/struct_array'; +import {createLayout} from '../util/struct_array'; export default createLayout([ {name: 'a_pos', type: 'Int16', components: 2} diff --git a/src/data/program_configuration.ts b/src/data/program_configuration.ts index e6725d58b1..d5b02816f3 100644 --- a/src/data/program_configuration.ts +++ b/src/data/program_configuration.ts @@ -1,4 +1,4 @@ -import { packUint8ToFloat } from '../shaders/encode_attribute'; +import {packUint8ToFloat} from '../shaders/encode_attribute'; import Color from '../style-spec/util/color'; import {supportsPropertyExpression} from '../style-spec/util/properties'; import {register} from '../util/web_worker_transfer'; @@ -8,9 +8,9 @@ import {clamp} from '../util/util'; import patternAttributes from './bucket/pattern_attributes'; import EvaluationParameters from '../style/evaluation_parameters'; import FeaturePositionMap from './feature_position_map'; -import { Uniform, Uniform1f, UniformColor, Uniform4f } from '../render/uniform_binding'; +import {Uniform, Uniform1f, UniformColor, Uniform4f} from '../render/uniform_binding'; -import type { UniformLocations } from '../render/uniform_binding'; +import type {UniformLocations} from '../render/uniform_binding'; import type {CanonicalTileID} from '../source/tile_id'; import type Context from '../gl/context'; diff --git a/src/data/raster_bounds_attributes.ts b/src/data/raster_bounds_attributes.ts index 8f94d06393..6ff07123d3 100644 --- a/src/data/raster_bounds_attributes.ts +++ b/src/data/raster_bounds_attributes.ts @@ -1,4 +1,4 @@ -import { createLayout } from '../util/struct_array'; +import {createLayout} from '../util/struct_array'; export default createLayout([ {name: 'a_pos', type: 'Int16', components: 2}, diff --git a/src/data/segment.ts b/src/data/segment.ts index 8f6ec8ffa4..5e422d5fee 100644 --- a/src/data/segment.ts +++ b/src/data/segment.ts @@ -1,4 +1,4 @@ -import { warnOnce } from '../util/util'; +import {warnOnce} from '../util/util'; import {register} from '../util/web_worker_transfer'; diff --git a/src/geo/edge_insets.ts b/src/geo/edge_insets.ts index d8145a314a..425c29041b 100644 --- a/src/geo/edge_insets.ts +++ b/src/geo/edge_insets.ts @@ -1,4 +1,4 @@ -import { number } from "../style-spec/util/interpolate"; +import {number} from "../style-spec/util/interpolate"; import Point from "@mapbox/point-geometry"; import {clamp} from "../util/util"; diff --git a/src/geo/lng_lat.ts b/src/geo/lng_lat.ts index b4e2399391..1065439f44 100644 --- a/src/geo/lng_lat.ts +++ b/src/geo/lng_lat.ts @@ -1,4 +1,4 @@ -import { wrap } from '../util/util'; +import {wrap} from '../util/util'; import LngLatBounds from './lng_lat_bounds'; /* diff --git a/src/geo/mercator_coordinate.ts b/src/geo/mercator_coordinate.ts index 3b20426429..b3ff44612e 100644 --- a/src/geo/mercator_coordinate.ts +++ b/src/geo/mercator_coordinate.ts @@ -1,4 +1,4 @@ -import LngLat, { earthRadius } from '../geo/lng_lat'; +import LngLat, {earthRadius} from '../geo/lng_lat'; import type {LngLatLike} from '../geo/lng_lat'; /* diff --git a/src/gl/context.ts b/src/gl/context.ts index 21415724c8..4be36539fa 100644 --- a/src/gl/context.ts +++ b/src/gl/context.ts @@ -211,8 +211,8 @@ class Context { } clear({ - color, - depth + color, + depth }: ClearArgs) { const gl = this.gl; let mask = 0; diff --git a/src/gl/cull_face_mode.ts b/src/gl/cull_face_mode.ts index 412c5b96d6..85d00cc648 100644 --- a/src/gl/cull_face_mode.ts +++ b/src/gl/cull_face_mode.ts @@ -1,4 +1,4 @@ -import type { CullFaceModeType, FrontFaceType } from './types'; +import type {CullFaceModeType, FrontFaceType} from './types'; const BACK = 0x0405; const CCW = 0x0901; diff --git a/src/gl/depth_mode.ts b/src/gl/depth_mode.ts index e93fa2c14f..8e4d80d130 100644 --- a/src/gl/depth_mode.ts +++ b/src/gl/depth_mode.ts @@ -1,4 +1,4 @@ -import type { DepthFuncType, DepthMaskType, DepthRangeType } from './types'; +import type {DepthFuncType, DepthMaskType, DepthRangeType} from './types'; const ALWAYS = 0x0207; diff --git a/src/gl/framebuffer.ts b/src/gl/framebuffer.ts index 467340e05c..6a5037cfea 100644 --- a/src/gl/framebuffer.ts +++ b/src/gl/framebuffer.ts @@ -1,4 +1,4 @@ -import { ColorAttachment, DepthAttachment } from './value'; +import {ColorAttachment, DepthAttachment} from './value'; import assert from 'assert'; import type Context from './context'; diff --git a/src/gl/stencil_mode.ts b/src/gl/stencil_mode.ts index 7cc5cf8a90..f67c12a183 100644 --- a/src/gl/stencil_mode.ts +++ b/src/gl/stencil_mode.ts @@ -1,4 +1,4 @@ -import type { StencilOpConstant, StencilTest } from './types'; +import type {StencilOpConstant, StencilTest} from './types'; const ALWAYS = 0x0207; const KEEP = 0x1E00; diff --git a/src/render/draw_raster.ts b/src/render/draw_raster.ts index 51ab4884c1..47e6689b8f 100644 --- a/src/render/draw_raster.ts +++ b/src/render/draw_raster.ts @@ -1,4 +1,4 @@ -import { clamp } from '../util/util'; +import {clamp} from '../util/util'; import ImageSource from '../source/image_source'; import browser from '../util/browser'; diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 7632225709..3148bf1bfe 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -25,8 +25,8 @@ import { import type Painter from './painter'; import type SourceCache from '../source/source_cache'; import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; -import type SymbolBucket from '../data/bucket/symbol_bucket'; -import type { SymbolBuffers } from '../data/bucket/symbol_bucket'; +import type SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket'; + import type Texture from '../render/texture'; import type {OverscaledTileID} from '../source/tile_id'; import type {UniformValues} from './uniform_binding'; diff --git a/src/render/glyph_atlas.ts b/src/render/glyph_atlas.ts index 0b7ba33cae..af7d675ad9 100644 --- a/src/render/glyph_atlas.ts +++ b/src/render/glyph_atlas.ts @@ -1,4 +1,4 @@ -import { AlphaImage } from '../util/image'; +import {AlphaImage} from '../util/image'; import {register} from '../util/web_worker_transfer'; import potpack from 'potpack'; diff --git a/src/render/image_atlas.ts b/src/render/image_atlas.ts index 90b82cf7fd..87ebb0c868 100644 --- a/src/render/image_atlas.ts +++ b/src/render/image_atlas.ts @@ -1,4 +1,4 @@ -import { RGBAImage } from '../util/image'; +import {RGBAImage} from '../util/image'; import {register} from '../util/web_worker_transfer'; import potpack from 'potpack'; @@ -25,11 +25,11 @@ export class ImagePosition { content: [number, number, number, number] | undefined | null; constructor(paddedRect: Rect, { - pixelRatio, - version, - stretchX, - stretchY, - content + pixelRatio, + version, + stretchX, + stretchY, + content }: StyleImage) { this.paddedRect = paddedRect; this.pixelRatio = pixelRatio; diff --git a/src/render/line_atlas.ts b/src/render/line_atlas.ts index c054b5ff4b..69f65905d4 100644 --- a/src/render/line_atlas.ts +++ b/src/render/line_atlas.ts @@ -1,4 +1,4 @@ -import { warnOnce } from '../util/util'; +import {warnOnce} from '../util/util'; import type Context from '../gl/context'; diff --git a/src/render/program.ts b/src/render/program.ts index aed691ec54..83f8d03887 100644 --- a/src/render/program.ts +++ b/src/render/program.ts @@ -1,4 +1,4 @@ -import { prelude } from '../shaders'; +import {prelude} from '../shaders'; import assert from 'assert'; import ProgramConfiguration from '../data/program_configuration'; import VertexArrayObject from './vertex_array_object'; diff --git a/src/render/program/background_program.ts b/src/render/program/background_program.ts index c9ccfb83d6..75d009a6f2 100644 --- a/src/render/program/background_program.ts +++ b/src/render/program/background_program.ts @@ -1,4 +1,4 @@ -import { bgPatternUniformValues } from './pattern'; +import {bgPatternUniformValues} from './pattern'; import { Uniform1i, Uniform1f, @@ -44,34 +44,34 @@ export type BackgroundPatternUniformsType = { }; const backgroundUniforms = (context: Context, locations: UniformLocations): BackgroundUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_color': new UniformColor(context, locations.u_color) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_color': new UniformColor(context, locations.u_color) }); const backgroundPatternUniforms = (context: Context, locations: UniformLocations): BackgroundPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a), - 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a), - 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b), - 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_mix': new Uniform1f(context, locations.u_mix), - 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a), - 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b), - 'u_scale_a': new Uniform1f(context, locations.u_scale_a), - 'u_scale_b': new Uniform1f(context, locations.u_scale_b), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a), + 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a), + 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b), + 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_mix': new Uniform1f(context, locations.u_mix), + 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a), + 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b), + 'u_scale_a': new Uniform1f(context, locations.u_scale_a), + 'u_scale_b': new Uniform1f(context, locations.u_scale_b), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels) }); const backgroundUniformValues = (matrix: Float32Array, opacity: number, color: Color): UniformValues => ({ - 'u_matrix': matrix, - 'u_opacity': opacity, - 'u_color': color + 'u_matrix': matrix, + 'u_opacity': opacity, + 'u_color': color }); const backgroundPatternUniformValues = ( diff --git a/src/render/program/circle_program.ts b/src/render/program/circle_program.ts index 982547f252..8e5e07a755 100644 --- a/src/render/program/circle_program.ts +++ b/src/render/program/circle_program.ts @@ -1,4 +1,4 @@ -import { Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; +import {Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f} from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import type Context from '../../gl/context'; @@ -19,12 +19,12 @@ export type CircleUniformsType = { }; const circleUniforms = (context: Context, locations: UniformLocations): CircleUniformsType => ({ - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_scale_with_map': new Uniform1i(context, locations.u_scale_with_map), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_scale_with_map': new Uniform1i(context, locations.u_scale_with_map), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const circleUniformValues = ( diff --git a/src/render/program/clipping_mask_program.ts b/src/render/program/clipping_mask_program.ts index 316bc62e9d..f9071d0d29 100644 --- a/src/render/program/clipping_mask_program.ts +++ b/src/render/program/clipping_mask_program.ts @@ -1,4 +1,4 @@ -import { UniformMatrix4f } from '../uniform_binding'; +import {UniformMatrix4f} from '../uniform_binding'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; @@ -8,11 +8,11 @@ export type ClippingMaskUniformsType = { }; const clippingMaskUniforms = (context: Context, locations: UniformLocations): ClippingMaskUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const clippingMaskUniformValues = (matrix: Float32Array): UniformValues => ({ - 'u_matrix': matrix + 'u_matrix': matrix }); export {clippingMaskUniforms, clippingMaskUniformValues}; diff --git a/src/render/program/collision_program.ts b/src/render/program/collision_program.ts index 7d5d22f625..a13f3b5ab5 100644 --- a/src/render/program/collision_program.ts +++ b/src/render/program/collision_program.ts @@ -1,4 +1,4 @@ -import { Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; +import {Uniform1f, Uniform2f, UniformMatrix4f} from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import type Context from '../../gl/context'; @@ -22,18 +22,18 @@ export type CollisionCircleUniformsType = { }; const collisionUniforms = (context: Context, locations: UniformLocations): CollisionUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pixels_to_tile_units': new Uniform1f(context, locations.u_pixels_to_tile_units), - 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), - 'u_overscale_factor': new Uniform1f(context, locations.u_overscale_factor) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pixels_to_tile_units': new Uniform1f(context, locations.u_pixels_to_tile_units), + 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale), + 'u_overscale_factor': new Uniform1f(context, locations.u_overscale_factor) }); const collisionCircleUniforms = (context: Context, locations: UniformLocations): CollisionCircleUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size) }); const collisionUniformValues = (matrix: Float32Array, transform: Transform, tile: Tile): UniformValues => { diff --git a/src/render/program/debug_program.ts b/src/render/program/debug_program.ts index bf518977b4..46e494a13e 100644 --- a/src/render/program/debug_program.ts +++ b/src/render/program/debug_program.ts @@ -1,4 +1,4 @@ -import { UniformColor, UniformMatrix4f, Uniform1i, Uniform1f } from '../uniform_binding'; +import {UniformColor, UniformMatrix4f, Uniform1i, Uniform1f} from '../uniform_binding'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; @@ -12,17 +12,17 @@ export type DebugUniformsType = { }; const debugUniforms = (context: Context, locations: UniformLocations): DebugUniformsType => ({ - 'u_color': new UniformColor(context, locations.u_color), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_overlay': new Uniform1i(context, locations.u_overlay), - 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale) + 'u_color': new UniformColor(context, locations.u_color), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_overlay': new Uniform1i(context, locations.u_overlay), + 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale) }); const debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues => ({ - 'u_matrix': matrix, - 'u_color': color, - 'u_overlay': 0, - 'u_overlay_scale': scaleRatio + 'u_matrix': matrix, + 'u_color': color, + 'u_overlay': 0, + 'u_overlay_scale': scaleRatio }); export {debugUniforms, debugUniformValues}; diff --git a/src/render/program/fill_extrusion_program.ts b/src/render/program/fill_extrusion_program.ts index 32a9b2c725..dcdb992417 100644 --- a/src/render/program/fill_extrusion_program.ts +++ b/src/render/program/fill_extrusion_program.ts @@ -1,4 +1,4 @@ -import { patternUniformValues } from './pattern'; +import {patternUniformValues} from './pattern'; import { Uniform1i, Uniform1f, @@ -44,31 +44,31 @@ export type FillExtrusionPatternUniformsType = { }; const fillExtrusionUniforms = (context: Context, locations: UniformLocations): FillExtrusionUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_lightpos': new Uniform3f(context, locations.u_lightpos), - 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), - 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), - 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), - 'u_opacity': new Uniform1f(context, locations.u_opacity) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_lightpos': new Uniform3f(context, locations.u_lightpos), + 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), + 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), + 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), + 'u_opacity': new Uniform1f(context, locations.u_opacity) }); const fillExtrusionPatternUniforms = (context: Context, locations: UniformLocations): FillExtrusionPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_lightpos': new Uniform3f(context, locations.u_lightpos), - 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), - 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), - 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), - 'u_height_factor': new Uniform1f(context, locations.u_height_factor), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_lightpos': new Uniform3f(context, locations.u_lightpos), + 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity), + 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor), + 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient), + 'u_height_factor': new Uniform1f(context, locations.u_height_factor), - // pattern uniforms - 'u_image': new Uniform1i(context, locations.u_image), + // pattern uniforms + 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade), - 'u_opacity': new Uniform1f(context, locations.u_opacity) + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade), + 'u_opacity': new Uniform1f(context, locations.u_opacity) }); const fillExtrusionUniformValues = ( diff --git a/src/render/program/fill_program.ts b/src/render/program/fill_program.ts index a91a2ed834..2e093c1519 100644 --- a/src/render/program/fill_program.ts +++ b/src/render/program/fill_program.ts @@ -1,4 +1,4 @@ -import { patternUniformValues } from './pattern'; +import {patternUniformValues} from './pattern'; import { Uniform1i, Uniform1f, @@ -47,37 +47,37 @@ export type FillOutlinePatternUniformsType = { }; const fillUniforms = (context: Context, locations: UniformLocations): FillUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const fillPatternUniforms = (context: Context, locations: UniformLocations): FillPatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) }); const fillOutlineUniforms = (context: Context, locations: UniformLocations): FillOutlineUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world) }); const fillOutlinePatternUniforms = (context: Context, locations: UniformLocations): FillOutlinePatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), - 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper), + 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) }); const fillUniformValues = (matrix: Float32Array): UniformValues => ({ - 'u_matrix': matrix + 'u_matrix': matrix }); const fillPatternUniformValues = ( @@ -91,8 +91,8 @@ const fillPatternUniformValues = ( ); const fillOutlineUniformValues = (matrix: Float32Array, drawingBufferSize: [number, number]): UniformValues => ({ - 'u_matrix': matrix, - 'u_world': drawingBufferSize + 'u_matrix': matrix, + 'u_world': drawingBufferSize }); const fillOutlinePatternUniformValues = ( diff --git a/src/render/program/heatmap_program.ts b/src/render/program/heatmap_program.ts index 2624ccca50..6438487498 100644 --- a/src/render/program/heatmap_program.ts +++ b/src/render/program/heatmap_program.ts @@ -1,4 +1,4 @@ -import { mat4 } from 'gl-matrix'; +import {mat4} from 'gl-matrix'; import { Uniform1i, @@ -29,23 +29,23 @@ export type HeatmapTextureUniformsType = { }; const heatmapUniforms = (context: Context, locations: UniformLocations): HeatmapUniformsType => ({ - 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale), - 'u_intensity': new Uniform1f(context, locations.u_intensity), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) + 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale), + 'u_intensity': new Uniform1f(context, locations.u_intensity), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); const heatmapTextureUniforms = (context: Context, locations: UniformLocations): HeatmapTextureUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_world': new Uniform2f(context, locations.u_world), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp), - 'u_opacity': new Uniform1f(context, locations.u_opacity) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_world': new Uniform2f(context, locations.u_world), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp), + 'u_opacity': new Uniform1f(context, locations.u_opacity) }); const heatmapUniformValues = (matrix: Float32Array, tile: Tile, zoom: number, intensity: number): UniformValues => ({ - 'u_matrix': matrix, - 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom), - 'u_intensity': intensity + 'u_matrix': matrix, + 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom), + 'u_intensity': intensity }); const heatmapTextureUniformValues = ( diff --git a/src/render/program/hillshade_program.ts b/src/render/program/hillshade_program.ts index ec641d6688..9c23aaf2c1 100644 --- a/src/render/program/hillshade_program.ts +++ b/src/render/program/hillshade_program.ts @@ -1,4 +1,4 @@ -import { mat4 } from 'gl-matrix'; +import {mat4} from 'gl-matrix'; import { Uniform1i, @@ -38,21 +38,21 @@ export type HillshadePrepareUniformsType = { }; const hillshadeUniforms = (context: Context, locations: UniformLocations): HillshadeUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_latrange': new Uniform2f(context, locations.u_latrange), - 'u_light': new Uniform2f(context, locations.u_light), - 'u_shadow': new UniformColor(context, locations.u_shadow), - 'u_highlight': new UniformColor(context, locations.u_highlight), - 'u_accent': new UniformColor(context, locations.u_accent) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_latrange': new Uniform2f(context, locations.u_latrange), + 'u_light': new Uniform2f(context, locations.u_light), + 'u_shadow': new UniformColor(context, locations.u_shadow), + 'u_highlight': new UniformColor(context, locations.u_highlight), + 'u_accent': new UniformColor(context, locations.u_accent) }); const hillshadePrepareUniforms = (context: Context, locations: UniformLocations): HillshadePrepareUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_dimension': new Uniform2f(context, locations.u_dimension), - 'u_zoom': new Uniform1f(context, locations.u_zoom), - 'u_unpack': new Uniform4f(context, locations.u_unpack) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_dimension': new Uniform2f(context, locations.u_dimension), + 'u_zoom': new Uniform1f(context, locations.u_zoom), + 'u_unpack': new Uniform4f(context, locations.u_unpack) }); const hillshadeUniformValues = (painter: Painter, tile: Tile, layer: HillshadeStyleLayer): UniformValues => { diff --git a/src/render/program/line_program.ts b/src/render/program/line_program.ts index 0cd45f7773..98f5308d58 100644 --- a/src/render/program/line_program.ts +++ b/src/render/program/line_program.ts @@ -1,4 +1,4 @@ -import { Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f } from '../uniform_binding'; +import {Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f} from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import {extend} from '../../util/util'; import browser from '../../util/browser'; @@ -54,44 +54,44 @@ export type LineSDFUniformsType = { }; const lineUniforms = (context: Context, locations: UniformLocations): LineUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels) }); const lineGradientUniforms = (context: Context, locations: UniformLocations): LineGradientUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_image_height': new Uniform1f(context, locations.u_image_height) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_image_height': new Uniform1f(context, locations.u_image_height) }); const linePatternUniforms = (context: Context, locations: UniformLocations): LinePatternUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_scale': new Uniform3f(context, locations.u_scale), - 'u_fade': new Uniform1f(context, locations.u_fade) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_scale': new Uniform3f(context, locations.u_scale), + 'u_fade': new Uniform1f(context, locations.u_fade) }); const lineSDFUniforms = (context: Context, locations: UniformLocations): LineSDFUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_ratio': new Uniform1f(context, locations.u_ratio), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), - 'u_patternscale_a': new Uniform2f(context, locations.u_patternscale_a), - 'u_patternscale_b': new Uniform2f(context, locations.u_patternscale_b), - 'u_sdfgamma': new Uniform1f(context, locations.u_sdfgamma), - 'u_image': new Uniform1i(context, locations.u_image), - 'u_tex_y_a': new Uniform1f(context, locations.u_tex_y_a), - 'u_tex_y_b': new Uniform1f(context, locations.u_tex_y_b), - 'u_mix': new Uniform1f(context, locations.u_mix) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_ratio': new Uniform1f(context, locations.u_ratio), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels), + 'u_patternscale_a': new Uniform2f(context, locations.u_patternscale_a), + 'u_patternscale_b': new Uniform2f(context, locations.u_patternscale_b), + 'u_sdfgamma': new Uniform1f(context, locations.u_sdfgamma), + 'u_image': new Uniform1i(context, locations.u_image), + 'u_tex_y_a': new Uniform1f(context, locations.u_tex_y_a), + 'u_tex_y_b': new Uniform1f(context, locations.u_tex_y_b), + 'u_mix': new Uniform1f(context, locations.u_mix) }); const lineUniformValues = (painter: Painter, tile: Tile, layer: LineStyleLayer): UniformValues => { diff --git a/src/render/program/program_uniforms.ts b/src/render/program/program_uniforms.ts index ec8642e1ec..25f2271d9f 100644 --- a/src/render/program/program_uniforms.ts +++ b/src/render/program/program_uniforms.ts @@ -1,4 +1,4 @@ -import { fillExtrusionUniforms, fillExtrusionPatternUniforms } from './fill_extrusion_program'; +import {fillExtrusionUniforms, fillExtrusionPatternUniforms} from './fill_extrusion_program'; import {fillUniforms, fillPatternUniforms, fillOutlineUniforms, fillOutlinePatternUniforms} from './fill_program'; import {circleUniforms} from './circle_program'; import {collisionUniforms, collisionCircleUniforms} from './collision_program'; diff --git a/src/render/program/raster_program.ts b/src/render/program/raster_program.ts index fb32ffabc9..eecc8f1e97 100644 --- a/src/render/program/raster_program.ts +++ b/src/render/program/raster_program.ts @@ -1,4 +1,4 @@ -import { Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f } from '../uniform_binding'; +import {Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f} from '../uniform_binding'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; @@ -21,19 +21,19 @@ export type RasterUniformsType = { }; const rasterUniforms = (context: Context, locations: UniformLocations): RasterUniformsType => ({ - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_tl_parent': new Uniform2f(context, locations.u_tl_parent), - 'u_scale_parent': new Uniform1f(context, locations.u_scale_parent), - 'u_buffer_scale': new Uniform1f(context, locations.u_buffer_scale), - 'u_fade_t': new Uniform1f(context, locations.u_fade_t), - 'u_opacity': new Uniform1f(context, locations.u_opacity), - 'u_image0': new Uniform1i(context, locations.u_image0), - 'u_image1': new Uniform1i(context, locations.u_image1), - 'u_brightness_low': new Uniform1f(context, locations.u_brightness_low), - 'u_brightness_high': new Uniform1f(context, locations.u_brightness_high), - 'u_saturation_factor': new Uniform1f(context, locations.u_saturation_factor), - 'u_contrast_factor': new Uniform1f(context, locations.u_contrast_factor), - 'u_spin_weights': new Uniform3f(context, locations.u_spin_weights) + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_tl_parent': new Uniform2f(context, locations.u_tl_parent), + 'u_scale_parent': new Uniform1f(context, locations.u_scale_parent), + 'u_buffer_scale': new Uniform1f(context, locations.u_buffer_scale), + 'u_fade_t': new Uniform1f(context, locations.u_fade_t), + 'u_opacity': new Uniform1f(context, locations.u_opacity), + 'u_image0': new Uniform1i(context, locations.u_image0), + 'u_image1': new Uniform1i(context, locations.u_image1), + 'u_brightness_low': new Uniform1f(context, locations.u_brightness_low), + 'u_brightness_high': new Uniform1f(context, locations.u_brightness_high), + 'u_saturation_factor': new Uniform1f(context, locations.u_saturation_factor), + 'u_contrast_factor': new Uniform1f(context, locations.u_contrast_factor), + 'u_spin_weights': new Uniform3f(context, locations.u_spin_weights) }); const rasterUniformValues = ( @@ -46,19 +46,19 @@ const rasterUniformValues = ( }, layer: RasterStyleLayer ): UniformValues => ({ - 'u_matrix': matrix, - 'u_tl_parent': parentTL, - 'u_scale_parent': parentScaleBy, - 'u_buffer_scale': 1, - 'u_fade_t': fade.mix, - 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'), - 'u_image0': 0, - 'u_image1': 1, - 'u_brightness_low': layer.paint.get('raster-brightness-min'), - 'u_brightness_high': layer.paint.get('raster-brightness-max'), - 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')), - 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')), - 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')) + 'u_matrix': matrix, + 'u_tl_parent': parentTL, + 'u_scale_parent': parentScaleBy, + 'u_buffer_scale': 1, + 'u_fade_t': fade.mix, + 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'), + 'u_image0': 0, + 'u_image1': 1, + 'u_brightness_low': layer.paint.get('raster-brightness-min'), + 'u_brightness_high': layer.paint.get('raster-brightness-max'), + 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')), + 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')), + 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')) }); function spinWeights(angle) { diff --git a/src/render/program/symbol_program.ts b/src/render/program/symbol_program.ts index 828cd39587..ef36a82542 100644 --- a/src/render/program/symbol_program.ts +++ b/src/render/program/symbol_program.ts @@ -1,4 +1,4 @@ -import { Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f } from '../uniform_binding'; +import {Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f} from '../uniform_binding'; import {extend} from '../../util/util'; import browser from '../../util/browser'; @@ -72,68 +72,68 @@ export type symbolTextAndIconUniformsType = { }; const symbolIconUniforms = (context: Context, locations: UniformLocations): SymbolIconUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texture': new Uniform1i(context, locations.u_texture) + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texture': new Uniform1i(context, locations.u_texture) }); const symbolSDFUniforms = (context: Context, locations: UniformLocations): SymbolSDFUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texture': new Uniform1i(context, locations.u_texture), - 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_is_halo': new Uniform1i(context, locations.u_is_halo) + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texture': new Uniform1i(context, locations.u_texture), + 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_is_halo': new Uniform1i(context, locations.u_is_halo) }); const symbolTextAndIconUniforms = (context: Context, locations: UniformLocations): symbolTextAndIconUniformsType => ({ - 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), - 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), - 'u_size_t': new Uniform1f(context, locations.u_size_t), - 'u_size': new Uniform1f(context, locations.u_size), - 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), - 'u_pitch': new Uniform1f(context, locations.u_pitch), - 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), - 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), - 'u_fade_change': new Uniform1f(context, locations.u_fade_change), - 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), - 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), - 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), - 'u_is_text': new Uniform1i(context, locations.u_is_text), - 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), - 'u_texsize': new Uniform2f(context, locations.u_texsize), - 'u_texsize_icon': new Uniform2f(context, locations.u_texsize_icon), - 'u_texture': new Uniform1i(context, locations.u_texture), - 'u_texture_icon': new Uniform1i(context, locations.u_texture_icon), - 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), - 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), - 'u_is_halo': new Uniform1i(context, locations.u_is_halo) + 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant), + 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant), + 'u_size_t': new Uniform1f(context, locations.u_size_t), + 'u_size': new Uniform1f(context, locations.u_size), + 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance), + 'u_pitch': new Uniform1f(context, locations.u_pitch), + 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol), + 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio), + 'u_fade_change': new Uniform1f(context, locations.u_fade_change), + 'u_matrix': new UniformMatrix4f(context, locations.u_matrix), + 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix), + 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix), + 'u_is_text': new Uniform1i(context, locations.u_is_text), + 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map), + 'u_texsize': new Uniform2f(context, locations.u_texsize), + 'u_texsize_icon': new Uniform2f(context, locations.u_texsize_icon), + 'u_texture': new Uniform1i(context, locations.u_texture), + 'u_texture_icon': new Uniform1i(context, locations.u_texture_icon), + 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale), + 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio), + 'u_is_halo': new Uniform1i(context, locations.u_is_halo) }); const symbolIconUniformValues = ( diff --git a/src/shaders/encode_attribute.ts b/src/shaders/encode_attribute.ts index ea58babe12..519f4657a4 100644 --- a/src/shaders/encode_attribute.ts +++ b/src/shaders/encode_attribute.ts @@ -1,4 +1,4 @@ -import { clamp } from '../util/util'; +import {clamp} from '../util/util'; /** * Packs two numbers, interpreted as 8-bit unsigned integers, into a single diff --git a/src/source/geojson_source.ts b/src/source/geojson_source.ts index d1b6956f1a..001ac6ee36 100644 --- a/src/source/geojson_source.ts +++ b/src/source/geojson_source.ts @@ -1,4 +1,4 @@ -import { Event, ErrorEvent, Evented } from '../util/evented'; +import {Event, ErrorEvent, Evented} from '../util/evented'; import {extend} from '../util/util'; import EXTENT from '../data/extent'; diff --git a/src/source/geojson_worker_source.ts b/src/source/geojson_worker_source.ts index 3779a3621a..cf1ddf3707 100644 --- a/src/source/geojson_worker_source.ts +++ b/src/source/geojson_worker_source.ts @@ -1,4 +1,4 @@ -import { getJSON } from '../util/ajax'; +import {getJSON} from '../util/ajax'; import {RequestPerformance} from '../util/performance'; import rewind from '@mapbox/geojson-rewind'; diff --git a/src/source/image_source.ts b/src/source/image_source.ts index 0df87aea1d..9e1fd429f6 100644 --- a/src/source/image_source.ts +++ b/src/source/image_source.ts @@ -1,4 +1,4 @@ -import { CanonicalTileID } from './tile_id'; +import {CanonicalTileID} from './tile_id'; import {Event, ErrorEvent, Evented} from '../util/evented'; import {getImage, ResourceType} from '../util/ajax'; import EXTENT from '../data/extent'; diff --git a/src/source/load_tilejson.ts b/src/source/load_tilejson.ts index 206a22ec6a..2d45e4a086 100644 --- a/src/source/load_tilejson.ts +++ b/src/source/load_tilejson.ts @@ -1,4 +1,4 @@ -import { pick, extend } from '../util/util'; +import {pick, extend} from '../util/util'; import {getJSON, ResourceType} from '../util/ajax'; import browser from '../util/browser'; diff --git a/src/source/raster_dem_tile_source.ts b/src/source/raster_dem_tile_source.ts index 461fecdb97..62e8e3d172 100644 --- a/src/source/raster_dem_tile_source.ts +++ b/src/source/raster_dem_tile_source.ts @@ -1,4 +1,4 @@ -import { getImage, ResourceType } from '../util/ajax'; +import {getImage, ResourceType} from '../util/ajax'; import {extend} from '../util/util'; import {Evented} from '../util/evented'; import browser from '../util/browser'; diff --git a/src/source/raster_tile_source.ts b/src/source/raster_tile_source.ts index 927c426934..de2e3693e7 100644 --- a/src/source/raster_tile_source.ts +++ b/src/source/raster_tile_source.ts @@ -1,4 +1,4 @@ -import { extend, pick } from '../util/util'; +import {extend, pick} from '../util/util'; import {getImage, ResourceType} from '../util/ajax'; import {Event, ErrorEvent, Evented} from '../util/evented'; diff --git a/src/source/rtl_text_plugin.ts b/src/source/rtl_text_plugin.ts index f9f056dfa1..611111347c 100644 --- a/src/source/rtl_text_plugin.ts +++ b/src/source/rtl_text_plugin.ts @@ -1,4 +1,4 @@ -import { Event, Evented } from '../util/evented'; +import {Event, Evented} from '../util/evented'; import {getArrayBuffer} from '../util/ajax'; import browser from '../util/browser'; import assert from 'assert'; diff --git a/src/source/source.ts b/src/source/source.ts index 162a12a937..b17371b5dd 100644 --- a/src/source/source.ts +++ b/src/source/source.ts @@ -1,4 +1,4 @@ -import { bindAll } from '../util/util'; +import {bindAll} from '../util/util'; import type Dispatcher from '../util/dispatcher'; import type {Event, Evented} from '../util/evented'; diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 92e5c5c60e..3b984b5b64 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -1,4 +1,4 @@ -import { create as createSource } from './source'; +import {create as createSource} from './source'; import Tile from './tile'; import {Event, ErrorEvent, Evented} from '../util/evented'; diff --git a/src/source/source_state.ts b/src/source/source_state.ts index 75f2a3f7ab..d709c0c6a7 100644 --- a/src/source/source_state.ts +++ b/src/source/source_state.ts @@ -1,4 +1,4 @@ -import { extend } from '../util/util'; +import {extend} from '../util/util'; import Tile from './tile'; import type {FeatureState} from '../style-spec/expression'; diff --git a/src/source/tile.ts b/src/source/tile.ts index 3f484cb653..608afd6d71 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -1,4 +1,4 @@ -import { uniqueId, parseCacheControl } from '../util/util'; +import {uniqueId, parseCacheControl} from '../util/util'; import {deserialize as deserializeBucket} from '../data/bucket'; import FeatureIndex from '../data/feature_index'; import GeoJSONFeature from '../util/vectortile_to_geojson'; diff --git a/src/source/tile_cache.ts b/src/source/tile_cache.ts index 2c9deb1daa..e5da3dbe2b 100644 --- a/src/source/tile_cache.ts +++ b/src/source/tile_cache.ts @@ -1,4 +1,4 @@ -import { OverscaledTileID } from './tile_id'; +import {OverscaledTileID} from './tile_id'; import type Tile from './tile'; /** diff --git a/src/source/tile_id.ts b/src/source/tile_id.ts index eab403c5df..fd7a596125 100644 --- a/src/source/tile_id.ts +++ b/src/source/tile_id.ts @@ -1,4 +1,4 @@ -import { getTileBBox } from '@mapbox/whoots-js'; +import {getTileBBox} from '@mapbox/whoots-js'; import EXTENT from '../data/extent'; import Point from '@mapbox/point-geometry'; import MercatorCoordinate from '../geo/mercator_coordinate'; diff --git a/src/source/vector_tile_source.ts b/src/source/vector_tile_source.ts index 3d1cdb3fdf..e73173ab05 100644 --- a/src/source/vector_tile_source.ts +++ b/src/source/vector_tile_source.ts @@ -1,4 +1,4 @@ -import { Event, ErrorEvent, Evented } from '../util/evented'; +import {Event, ErrorEvent, Evented} from '../util/evented'; import {extend, pick} from '../util/util'; import loadTileJSON from './load_tilejson'; diff --git a/src/source/vector_tile_worker_source.ts b/src/source/vector_tile_worker_source.ts index 873671474d..d2c7c37a98 100644 --- a/src/source/vector_tile_worker_source.ts +++ b/src/source/vector_tile_worker_source.ts @@ -1,4 +1,4 @@ -import { getArrayBuffer } from '../util/ajax'; +import {getArrayBuffer} from '../util/ajax'; import vt from '@mapbox/vector-tile'; import Protobuf from 'pbf'; diff --git a/src/source/video_source.ts b/src/source/video_source.ts index 94f8451d04..9c7f2d752f 100644 --- a/src/source/video_source.ts +++ b/src/source/video_source.ts @@ -1,4 +1,4 @@ -import { getVideo, ResourceType } from '../util/ajax'; +import {getVideo, ResourceType} from '../util/ajax'; import ImageSource from './image_source'; import rasterBoundsAttributes from '../data/raster_bounds_attributes'; diff --git a/src/source/worker_source.ts b/src/source/worker_source.ts index 6a01af0447..87a4078f89 100644 --- a/src/source/worker_source.ts +++ b/src/source/worker_source.ts @@ -1,4 +1,4 @@ -import type { RequestParameters } from '../util/ajax'; +import type {RequestParameters} from '../util/ajax'; import type {RGBAImage, AlphaImage} from '../util/image'; import type {GlyphPositions} from '../render/glyph_atlas'; import type ImageAtlas from '../render/image_atlas'; diff --git a/src/style-spec/expression/compound_expression.ts b/src/style-spec/expression/compound_expression.ts index 6f23ad218a..2324ff006f 100644 --- a/src/style-spec/expression/compound_expression.ts +++ b/src/style-spec/expression/compound_expression.ts @@ -1,4 +1,4 @@ -import { toString } from './types'; +import {toString} from './types'; import ParsingContext from './parsing_context'; import EvaluationContext from './evaluation_context'; diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index 588e41209d..23aef7c65b 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -1,4 +1,4 @@ -import { array, ValueType, NumberType } from '../types'; +import {array, ValueType, NumberType} from '../types'; import RuntimeError from '../runtime_error'; diff --git a/src/style-spec/expression/definitions/collator.ts b/src/style-spec/expression/definitions/collator.ts index 70e8ec6347..73731a64ff 100644 --- a/src/style-spec/expression/definitions/collator.ts +++ b/src/style-spec/expression/definitions/collator.ts @@ -1,4 +1,4 @@ -import { StringType, BooleanType, CollatorType } from '../types'; +import {StringType, BooleanType, CollatorType} from '../types'; import Collator from '../types/collator'; import type {Expression} from '../expression'; diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index 3c7c096b8b..9c44ef39a2 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -1,4 +1,4 @@ -import { toString, ValueType, BooleanType, CollatorType } from '../types'; +import {toString, ValueType, BooleanType, CollatorType} from '../types'; import Assertion from './assertion'; import {typeOf} from '../values'; import RuntimeError from '../runtime_error'; diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index 8e6f6dc7e0..88b1f46163 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -1,11 +1,11 @@ import { - NumberType, - ValueType, - FormattedType, - array, - StringType, - ColorType, - ResolvedImageType, + NumberType, + ValueType, + FormattedType, + array, + StringType, + ColorType, + ResolvedImageType, } from '../types'; import Formatted, {FormattedSection} from '../types/formatted'; import {toString, typeOf} from '../values'; diff --git a/src/style-spec/expression/definitions/image.ts b/src/style-spec/expression/definitions/image.ts index 80253a71cc..008368c432 100644 --- a/src/style-spec/expression/definitions/image.ts +++ b/src/style-spec/expression/definitions/image.ts @@ -1,4 +1,4 @@ -import { ResolvedImageType, StringType } from '../types'; +import {ResolvedImageType, StringType} from '../types'; import ResolvedImage from '../types/resolved_image'; import type {Expression} from '../expression'; diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index 90efdafc5c..304fb7b4b0 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -1,12 +1,12 @@ import { - BooleanType, - StringType, - ValueType, - NullType, - toString, - NumberType, - isValidType, - isValidNativeType, + BooleanType, + StringType, + ValueType, + NullType, + toString, + NumberType, + isValidType, + isValidNativeType, } from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; diff --git a/src/style-spec/expression/definitions/index.ts b/src/style-spec/expression/definitions/index.ts index deaee865e8..3767fd9069 100644 --- a/src/style-spec/expression/definitions/index.ts +++ b/src/style-spec/expression/definitions/index.ts @@ -1,17 +1,17 @@ import { - NumberType, - StringType, - BooleanType, - ColorType, - ObjectType, - ValueType, - ErrorType, - CollatorType, - array, - toString as typeToString, + NumberType, + StringType, + BooleanType, + ColorType, + ObjectType, + ValueType, + ErrorType, + CollatorType, + array, + toString as typeToString, } from '../types'; -import type { Type } from '../types'; +import type {Type} from '../types'; import {typeOf, Color, validateRGBA, toString as valueToString} from '../values'; import CompoundExpression from '../compound_expression'; diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index 0b5ed21464..aa1a98b13b 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -1,12 +1,12 @@ import { - BooleanType, - StringType, - ValueType, - NullType, - toString, - NumberType, - isValidType, - isValidNativeType, + BooleanType, + StringType, + ValueType, + NullType, + toString, + NumberType, + isValidType, + isValidNativeType, } from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index 974054254f..39e36afd3d 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -1,4 +1,4 @@ -import { NumberType, toString } from '../types'; +import {NumberType, toString} from '../types'; import {typeOf} from '../values'; import RuntimeError from '../runtime_error'; diff --git a/src/style-spec/expression/definitions/let.ts b/src/style-spec/expression/definitions/let.ts index 03e559cf05..7c7e244ce8 100644 --- a/src/style-spec/expression/definitions/let.ts +++ b/src/style-spec/expression/definitions/let.ts @@ -1,4 +1,4 @@ -import type { Type } from '../types'; +import type {Type} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index a9841f3fd2..f5c7e09b30 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -1,9 +1,9 @@ import assert from 'assert'; import {typeOf} from '../values'; -import { ValueType } from '../types'; +import {ValueType} from '../types'; -import type { Type } from '../types'; +import type {Type} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; diff --git a/src/style-spec/expression/definitions/number_format.ts b/src/style-spec/expression/definitions/number_format.ts index 0f4b8ca42e..1de0ae1a07 100644 --- a/src/style-spec/expression/definitions/number_format.ts +++ b/src/style-spec/expression/definitions/number_format.ts @@ -1,20 +1,20 @@ -import { StringType, NumberType } from '../types'; +import {StringType, NumberType} from '../types'; import type {Expression} from '../expression'; import type EvaluationContext from '../evaluation_context'; import type ParsingContext from '../parsing_context'; import type {Type} from '../types'; -declare var Intl: { +declare let Intl: { NumberFormat: { new (...args: any): Intl$NumberFormat } }; declare class Intl$NumberFormat { - constructor(locales?: string | string[], options?: NumberFormatOptions); - format(a: number): string; - resolvedOptions(): any; + constructor(locales?: string | string[], options?: NumberFormatOptions); + format(a: number): string; + resolvedOptions(): any; } type NumberFormatOptions = { diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index a7d12075d4..35875566b5 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -1,11 +1,11 @@ import { - ValueType, - NumberType, - StringType, - array, - toString, - isValidType, - isValidNativeType, + ValueType, + NumberType, + StringType, + array, + toString, + isValidType, + isValidNativeType, } from '../types'; import RuntimeError from '../runtime_error'; import {typeOf} from '../values'; diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index 553071856d..b6d55c30da 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -1,4 +1,4 @@ -import { NumberType } from '../types'; +import {NumberType} from '../types'; import {findStopLessThanOrEqualTo} from '../stops'; diff --git a/src/style-spec/expression/definitions/var.ts b/src/style-spec/expression/definitions/var.ts index 35b4c75932..566e9a907c 100644 --- a/src/style-spec/expression/definitions/var.ts +++ b/src/style-spec/expression/definitions/var.ts @@ -1,4 +1,4 @@ -import type { Type } from '../types'; +import type {Type} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index 41e3b97098..289c127342 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -1,4 +1,4 @@ -import { isValue } from '../values'; +import {isValue} from '../values'; import type {Type} from '../types'; import {BooleanType} from '../types'; import type {Expression} from '../expression'; diff --git a/src/style-spec/expression/evaluation_context.ts b/src/style-spec/expression/evaluation_context.ts index 4ee318eeb2..e0b4d29ab3 100644 --- a/src/style-spec/expression/evaluation_context.ts +++ b/src/style-spec/expression/evaluation_context.ts @@ -1,4 +1,4 @@ -import { Color } from './values'; +import {Color} from './values'; import type {FormattedSection} from './types/formatted'; import type {GlobalProperties, Feature, FeatureState} from './index'; import type {CanonicalTileID} from '../../source/tile_id'; diff --git a/src/style-spec/expression/expression.ts b/src/style-spec/expression/expression.ts index 8cdf5a0062..5c380ed3c3 100644 --- a/src/style-spec/expression/expression.ts +++ b/src/style-spec/expression/expression.ts @@ -1,4 +1,4 @@ -import type { Type } from './types'; +import type {Type} from './types'; import type ParsingContext from './parsing_context'; import type EvaluationContext from './evaluation_context'; diff --git a/src/style-spec/expression/scope.ts b/src/style-spec/expression/scope.ts index 23e585561d..0dad292b22 100644 --- a/src/style-spec/expression/scope.ts +++ b/src/style-spec/expression/scope.ts @@ -1,4 +1,4 @@ -import type { Expression } from './expression'; +import type {Expression} from './expression'; /** * Tracks `let` bindings during expression parsing. diff --git a/src/style-spec/expression/types/collator.ts b/src/style-spec/expression/types/collator.ts index 3d223e45ff..46185ea98a 100644 --- a/src/style-spec/expression/types/collator.ts +++ b/src/style-spec/expression/types/collator.ts @@ -1,16 +1,16 @@ // Flow type declarations for Intl cribbed from // https://github.com/facebook/flow/issues/1270 -declare var Intl: { +declare let Intl: { Collator: { new (...args: any): Intl$Collator } }; declare class Intl$Collator { - constructor(locales?: string | string[], options?: CollatorOptions); - compare(a: string, b: string): number; - resolvedOptions(): any; + constructor(locales?: string | string[], options?: CollatorOptions); + compare(a: string, b: string): number; + resolvedOptions(): any; } type CollatorOptions = { diff --git a/src/style-spec/feature_filter/convert.ts b/src/style-spec/feature_filter/convert.ts index f0fd28cfd5..2eea1376e5 100644 --- a/src/style-spec/feature_filter/convert.ts +++ b/src/style-spec/feature_filter/convert.ts @@ -1,4 +1,4 @@ -import { isExpressionFilter } from './index'; +import {isExpressionFilter} from './index'; import type {FilterSpecification} from '../types'; diff --git a/src/style-spec/feature_filter/index.ts b/src/style-spec/feature_filter/index.ts index c5186f6f23..bb1a6ad910 100644 --- a/src/style-spec/feature_filter/index.ts +++ b/src/style-spec/feature_filter/index.ts @@ -1,4 +1,4 @@ -import { createExpression } from '../expression'; +import {createExpression} from '../expression'; import type {GlobalProperties, Feature} from '../expression'; import type {CanonicalTileID} from '../../source/tile_id'; diff --git a/src/style-spec/migrate/expressions.ts b/src/style-spec/migrate/expressions.ts index 21b6c7c1c2..98564cd6e4 100644 --- a/src/style-spec/migrate/expressions.ts +++ b/src/style-spec/migrate/expressions.ts @@ -1,4 +1,4 @@ -import { eachLayer, eachProperty } from '../visit'; +import {eachLayer, eachProperty} from '../visit'; import {isExpression} from '../expression'; import convertFunction, {convertTokenString} from '../function/convert'; import convertFilter from '../feature_filter/convert'; diff --git a/src/style-spec/util/color.ts b/src/style-spec/util/color.ts index 26af250ea5..f650cec075 100644 --- a/src/style-spec/util/color.ts +++ b/src/style-spec/util/color.ts @@ -1,4 +1,4 @@ -import { parseCSSColor } from 'csscolorparser'; +import {parseCSSColor} from 'csscolorparser'; /** * An RGBA color value. Create instances from color strings using the static diff --git a/src/style-spec/util/properties.ts b/src/style-spec/util/properties.ts index bfdf41aa5f..afcddc2faa 100644 --- a/src/style-spec/util/properties.ts +++ b/src/style-spec/util/properties.ts @@ -1,4 +1,4 @@ -import type { StylePropertySpecification } from '../style-spec'; +import type {StylePropertySpecification} from '../style-spec'; export function supportsPropertyExpression(spec: StylePropertySpecification): boolean { return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven'; diff --git a/src/style/load_glyph_range.ts b/src/style/load_glyph_range.ts index 9cc2b28717..4070890894 100644 --- a/src/style/load_glyph_range.ts +++ b/src/style/load_glyph_range.ts @@ -1,4 +1,4 @@ -import { getArrayBuffer, ResourceType } from '../util/ajax'; +import {getArrayBuffer, ResourceType} from '../util/ajax'; import parseGlyphPBF from './parse_glyph_pbf'; diff --git a/src/style/load_sprite.ts b/src/style/load_sprite.ts index 70b3e767d6..6bf09ca395 100644 --- a/src/style/load_sprite.ts +++ b/src/style/load_sprite.ts @@ -1,4 +1,4 @@ -import { getJSON, getImage, ResourceType } from '../util/ajax'; +import {getJSON, getImage, ResourceType} from '../util/ajax'; import browser from '../util/browser'; import {RGBAImage} from '../util/image'; diff --git a/src/style/parse_glyph_pbf.ts b/src/style/parse_glyph_pbf.ts index b3b52ca050..4af04cbfc3 100644 --- a/src/style/parse_glyph_pbf.ts +++ b/src/style/parse_glyph_pbf.ts @@ -1,4 +1,4 @@ -import { AlphaImage } from '../util/image'; +import {AlphaImage} from '../util/image'; import Protobuf from 'pbf'; const border = 3; diff --git a/src/style/style.ts b/src/style/style.ts index 4127c42fce..e1230cfb30 100644 --- a/src/style/style.ts +++ b/src/style/style.ts @@ -14,8 +14,8 @@ import {isMapboxURL} from '../util/mapbox'; import browser from '../util/browser'; import Dispatcher from '../util/dispatcher'; import {validateStyle, emitValidationErrors as _emitValidationErrors} from './validate_style'; -import { getType as getSourceType, setType as setSourceType } from '../source/source'; -import type { SourceClass } from '../source/source'; +import {getType as getSourceType, setType as setSourceType} from '../source/source'; +import type {SourceClass} from '../source/source'; import {queryRenderedFeatures, queryRenderedSymbols, querySourceFeatures} from '../source/query_features'; import SourceCache from '../source/source_cache'; import GeoJSONSource from '../source/geojson_source'; diff --git a/src/style/style_glyph.ts b/src/style/style_glyph.ts index 87983b9d71..78c2e20197 100644 --- a/src/style/style_glyph.ts +++ b/src/style/style_glyph.ts @@ -1,4 +1,4 @@ -import type { AlphaImage } from '../util/image'; +import type {AlphaImage} from '../util/image'; export type GlyphMetrics = { width: number, diff --git a/src/style/style_image.ts b/src/style/style_image.ts index 49b7d3d077..e24c4275a1 100644 --- a/src/style/style_image.ts +++ b/src/style/style_image.ts @@ -1,4 +1,4 @@ -import { RGBAImage } from '../util/image'; +import {RGBAImage} from '../util/image'; import type Map from '../ui/map'; diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index 95b223112f..f41d83427a 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -1,4 +1,4 @@ -import { endsWith, filterObject } from '../util/util'; +import {endsWith, filterObject} from '../util/util'; import styleSpec from '../style-spec/reference/latest'; import { @@ -16,8 +16,8 @@ import type {Bucket} from '../data/bucket'; import type Point from '@mapbox/point-geometry'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; -import type EvaluationParameters from './evaluation_parameters'; -import type { CrossfadeParameters } from './evaluation_parameters'; +import type EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; + import type Transform from '../geo/transform'; import type { LayerSpecification, diff --git a/src/symbol/collision_feature.ts b/src/symbol/collision_feature.ts index f1d71ac452..285733e175 100644 --- a/src/symbol/collision_feature.ts +++ b/src/symbol/collision_feature.ts @@ -1,4 +1,4 @@ -import type { CollisionBoxArray } from '../data/array_types'; +import type {CollisionBoxArray} from '../data/array_types'; import Point from '@mapbox/point-geometry'; import type Anchor from './anchor'; diff --git a/src/symbol/get_anchors.ts b/src/symbol/get_anchors.ts index 9c85142ccf..c8c5727048 100644 --- a/src/symbol/get_anchors.ts +++ b/src/symbol/get_anchors.ts @@ -1,4 +1,4 @@ -import { number as interpolate } from '../style-spec/util/interpolate'; +import {number as interpolate} from '../style-spec/util/interpolate'; import Anchor from '../symbol/anchor'; import checkMaxAngle from './check_max_angle'; diff --git a/src/symbol/mergelines.ts b/src/symbol/mergelines.ts index 60c05ba6dc..310814191c 100644 --- a/src/symbol/mergelines.ts +++ b/src/symbol/mergelines.ts @@ -1,4 +1,4 @@ -import type { SymbolFeature } from '../data/bucket/symbol_bucket'; +import type {SymbolFeature} from '../data/bucket/symbol_bucket'; export default function(features: Array): Array { const leftIndex: { diff --git a/src/symbol/opacity_state.ts b/src/symbol/opacity_state.ts index 101bb3c2ae..caef016fc5 100644 --- a/src/symbol/opacity_state.ts +++ b/src/symbol/opacity_state.ts @@ -1,4 +1,4 @@ -import { register } from '../util/web_worker_transfer'; +import {register} from '../util/web_worker_transfer'; class OpacityState { opacity: number; diff --git a/src/symbol/path_interpolator.ts b/src/symbol/path_interpolator.ts index 7251a00b05..20ef4a0b7a 100644 --- a/src/symbol/path_interpolator.ts +++ b/src/symbol/path_interpolator.ts @@ -1,4 +1,4 @@ -import { clamp } from '../util/util'; +import {clamp} from '../util/util'; import Point from '@mapbox/point-geometry'; import assert from 'assert'; diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index 35113d1ac4..dd52f6ed87 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -12,8 +12,8 @@ import type Transform from '../geo/transform'; import type StyleLayer from '../style/style_layer'; import type Tile from '../source/tile'; -import type SymbolBucket from '../data/bucket/symbol_bucket'; -import type { CollisionArrays, SingleCollisionBox } from '../data/bucket/symbol_bucket'; +import type SymbolBucket, {CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket'; + import type {CollisionBoxArray, CollisionVertexArray, SymbolInstance} from '../data/array_types'; import type FeatureIndex from '../data/feature_index'; import type {OverscaledTileID} from '../source/tile_id'; diff --git a/src/symbol/symbol_size.ts b/src/symbol/symbol_size.ts index 2027b6ad00..d69de5d8d8 100644 --- a/src/symbol/symbol_size.ts +++ b/src/symbol/symbol_size.ts @@ -1,4 +1,4 @@ -import { number as interpolate } from '../style-spec/util/interpolate'; +import {number as interpolate} from '../style-spec/util/interpolate'; import Interpolate from '../style-spec/expression/definitions/interpolate'; import {clamp} from '../util/util'; import EvaluationParameters from '../style/evaluation_parameters'; @@ -76,15 +76,15 @@ function getSizeData( function evaluateSizeForFeature(sizeData: SizeData, { - uSize, - uSizeT + uSize, + uSizeT }: { uSize: number, uSizeT: number }, { - lowerSize, - upperSize + lowerSize, + upperSize }: { lowerSize: number, upperSize: number diff --git a/src/symbol/transform_text.ts b/src/symbol/transform_text.ts index 3ae8b74060..30e39fc0dd 100644 --- a/src/symbol/transform_text.ts +++ b/src/symbol/transform_text.ts @@ -1,4 +1,4 @@ -import { plugin as rtlTextPlugin } from '../source/rtl_text_plugin'; +import {plugin as rtlTextPlugin} from '../source/rtl_text_plugin'; import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; import type {Feature} from '../style-spec/expression'; diff --git a/src/ui/camera.ts b/src/ui/camera.ts index e685fbf841..caccd64e3b 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -1,4 +1,4 @@ -import { bindAll, extend, warnOnce, clamp, wrap, ease as defaultEasing, pick } from '../util/util'; +import {bindAll, extend, warnOnce, clamp, wrap, ease as defaultEasing, pick} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import browser from '../util/browser'; import LngLat from '../geo/lng_lat'; diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index 7d31d91743..368c742f29 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -1,4 +1,4 @@ -import { Event, Evented } from '../../util/evented'; +import {Event, Evented} from '../../util/evented'; import DOM from '../../util/dom'; import window from '../../util/window'; import {extend, bindAll, warnOnce} from '../../util/util'; diff --git a/src/ui/events.ts b/src/ui/events.ts index b0f0873fa4..360177db06 100644 --- a/src/ui/events.ts +++ b/src/ui/events.ts @@ -1,4 +1,4 @@ -import { Event } from '../util/evented'; +import {Event} from '../util/evented'; import DOM from '../util/dom'; import Point from '@mapbox/point-geometry'; diff --git a/src/ui/handler/map_event.ts b/src/ui/handler/map_event.ts index 1aaf05d7f4..1c531299ca 100644 --- a/src/ui/handler/map_event.ts +++ b/src/ui/handler/map_event.ts @@ -1,4 +1,4 @@ -import { MapMouseEvent, MapTouchEvent, MapWheelEvent } from '../events'; +import {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events'; import type Map from '../map'; export class MapEventHandler { diff --git a/src/ui/handler/shim/drag_pan.ts b/src/ui/handler/shim/drag_pan.ts index e15c3e1294..dac62cfe45 100644 --- a/src/ui/handler/shim/drag_pan.ts +++ b/src/ui/handler/shim/drag_pan.ts @@ -1,4 +1,4 @@ -import type { MousePanHandler } from '../mouse'; +import type {MousePanHandler} from '../mouse'; import type TouchPanHandler from './../touch_pan'; export type DragPanOptions = { diff --git a/src/ui/handler/shim/drag_rotate.ts b/src/ui/handler/shim/drag_rotate.ts index f9895beb58..e16ab05a17 100644 --- a/src/ui/handler/shim/drag_rotate.ts +++ b/src/ui/handler/shim/drag_rotate.ts @@ -1,4 +1,4 @@ -import type { MouseRotateHandler, MousePitchHandler } from '../mouse'; +import type {MouseRotateHandler, MousePitchHandler} from '../mouse'; /** * The `DragRotateHandler` allows the user to rotate the map by clicking and diff --git a/src/ui/handler/shim/touch_zoom_rotate.ts b/src/ui/handler/shim/touch_zoom_rotate.ts index 900ffe252b..f8bda576ae 100644 --- a/src/ui/handler/shim/touch_zoom_rotate.ts +++ b/src/ui/handler/shim/touch_zoom_rotate.ts @@ -1,4 +1,4 @@ -import type { TouchZoomHandler, TouchRotateHandler } from '../touch_zoom_rotate'; +import type {TouchZoomHandler, TouchRotateHandler} from '../touch_zoom_rotate'; import type TapDragZoomHandler from '../tap_drag_zoom'; /** diff --git a/src/ui/handler/tap_drag_zoom.ts b/src/ui/handler/tap_drag_zoom.ts index 494a919c56..5496550bea 100644 --- a/src/ui/handler/tap_drag_zoom.ts +++ b/src/ui/handler/tap_drag_zoom.ts @@ -1,4 +1,4 @@ -import { TapRecognizer, MAX_TAP_INTERVAL } from './tap_recognizer'; +import {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer'; import type Point from '@mapbox/point-geometry'; export default class TapDragZoomHandler { diff --git a/src/ui/handler/tap_zoom.ts b/src/ui/handler/tap_zoom.ts index 651419736a..b16c52da46 100644 --- a/src/ui/handler/tap_zoom.ts +++ b/src/ui/handler/tap_zoom.ts @@ -1,4 +1,4 @@ -import { TapRecognizer } from './tap_recognizer'; +import {TapRecognizer} from './tap_recognizer'; import type Point from '@mapbox/point-geometry'; import type Map from '../map'; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index dec726c2a6..cf3c8bdf2a 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -1,4 +1,4 @@ -import { Event } from '../util/evented'; +import {Event} from '../util/evented'; import DOM from '../util/dom'; import type Map from './map'; import HandlerInertia from './handler_inertia'; diff --git a/src/ui/hash.ts b/src/ui/hash.ts index bf0f4421f3..0e5d80d363 100644 --- a/src/ui/hash.ts +++ b/src/ui/hash.ts @@ -1,4 +1,4 @@ -import { bindAll } from '../util/util'; +import {bindAll} from '../util/util'; import window from '../util/window'; import throttle from '../util/throttle'; diff --git a/src/ui/map.ts b/src/ui/map.ts index a05f972841..be0175af46 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -1,4 +1,4 @@ -import { version } from '../../package.json'; +import {version} from '../../package.json'; import {extend, bindAll, warnOnce, uniqueId} from '../util/util'; import browser from '../util/browser'; import window from '../util/window'; @@ -41,8 +41,8 @@ import type ScrollZoomHandler from './handler/scroll_zoom'; import type BoxZoomHandler from './handler/box_zoom'; import type {TouchPitchHandler} from './handler/touch_zoom_rotate'; import type DragRotateHandler from './handler/shim/drag_rotate'; -import type DragPanHandler from './handler/shim/drag_pan'; -import type { DragPanOptions } from './handler/shim/drag_pan'; +import type DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan'; + import type KeyboardHandler from './handler/keyboard'; import type DoubleClickZoomHandler from './handler/shim/dblclick_zoom'; import type TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate'; @@ -1650,11 +1650,11 @@ class Map extends Camera { data: Uint8Array | Uint8ClampedArray } | StyleImageInterface, { - pixelRatio = 1, - sdf = false, - stretchX, - stretchY, - content + pixelRatio = 1, + sdf = false, + stretchX, + stretchY, + content }: Partial = {}) { this._lazyInitEmptyStyle(); const version = 0; diff --git a/src/ui/marker.ts b/src/ui/marker.ts index fe4a4d07dc..60b6c966fc 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -4,8 +4,8 @@ import LngLat from '../geo/lng_lat'; import Point from '@mapbox/point-geometry'; import smartWrap from '../util/smart_wrap'; import {bindAll, extend} from '../util/util'; -import { anchorTranslate, applyAnchorClass } from './anchor'; -import type { Anchor } from './anchor'; +import {anchorTranslate, applyAnchorClass} from './anchor'; +import type {Anchor} from './anchor'; import {Event, Evented} from '../util/evented'; import type Map from './map'; import type Popup from './popup'; diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 4f7ce7a9e4..ca2c911100 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -1,4 +1,4 @@ -import { extend, bindAll } from '../util/util'; +import {extend, bindAll} from '../util/util'; import {Event, Evented} from '../util/evented'; import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; @@ -6,9 +6,9 @@ import LngLat from '../geo/lng_lat'; import Point from '@mapbox/point-geometry'; import window from '../util/window'; import smartWrap from '../util/smart_wrap'; -import { anchorTranslate, applyAnchorClass } from './anchor'; +import {anchorTranslate, applyAnchorClass} from './anchor'; -import type { Anchor } from './anchor'; +import type {Anchor} from './anchor'; import type Map from './map'; import type {LngLatLike} from '../geo/lng_lat'; diff --git a/src/util/actor.ts b/src/util/actor.ts index 1ebe49ea80..857abb6dbe 100644 --- a/src/util/actor.ts +++ b/src/util/actor.ts @@ -1,4 +1,4 @@ -import { bindAll, isWorker, isSafari } from './util'; +import {bindAll, isWorker, isSafari} from './util'; import window from './window'; import {serialize, deserialize} from './web_worker_transfer'; import ThrottledInvoker from './throttled_invoker'; diff --git a/src/util/browser/window.ts b/src/util/browser/window.ts index 3d6582c08a..3a52a02e35 100644 --- a/src/util/browser/window.ts +++ b/src/util/browser/window.ts @@ -1,5 +1,5 @@ /* eslint-env browser */ -import type { Window } from '../../types/window'; +import type {Window} from '../../types/window'; // shim window for the case of requiring the browser bundle in Node export default typeof self !== 'undefined' ? (self as Window) : ({} as any as Window); diff --git a/src/util/color_ramp.ts b/src/util/color_ramp.ts index 1833466358..05ca6cd501 100644 --- a/src/util/color_ramp.ts +++ b/src/util/color_ramp.ts @@ -1,4 +1,4 @@ -import { RGBAImage } from './image'; +import {RGBAImage} from './image'; import {isPowerOfTwo} from './util'; import assert from 'assert'; diff --git a/src/util/debug.ts b/src/util/debug.ts index b173b59e26..035d2364b3 100644 --- a/src/util/debug.ts +++ b/src/util/debug.ts @@ -1,4 +1,4 @@ -import { extend } from './util'; +import {extend} from './util'; import window from './window'; /** diff --git a/src/util/dispatcher.ts b/src/util/dispatcher.ts index f3e1f08238..bb1dd2556f 100644 --- a/src/util/dispatcher.ts +++ b/src/util/dispatcher.ts @@ -1,4 +1,4 @@ -import { uniqueId, asyncAll } from './util'; +import {uniqueId, asyncAll} from './util'; import Actor from './actor'; import assert from 'assert'; diff --git a/src/util/evented.ts b/src/util/evented.ts index f90cfb3c04..641d45d332 100644 --- a/src/util/evented.ts +++ b/src/util/evented.ts @@ -1,4 +1,4 @@ -import { extend } from './util'; +import {extend} from './util'; type Listener = (a: any) => any; diff --git a/src/util/global_worker_pool.ts b/src/util/global_worker_pool.ts index 2976a526ee..9c814d47a9 100644 --- a/src/util/global_worker_pool.ts +++ b/src/util/global_worker_pool.ts @@ -1,4 +1,4 @@ -import WorkerPool, { PRELOAD_POOL_ID } from './worker_pool'; +import WorkerPool, {PRELOAD_POOL_ID} from './worker_pool'; let globalWorkerPool; diff --git a/src/util/image.ts b/src/util/image.ts index 9ab9e4c01d..4ae848d782 100644 --- a/src/util/image.ts +++ b/src/util/image.ts @@ -13,8 +13,8 @@ type Point = { }; function createImage(image: any, { - width, - height + width, + height }: Size, channels: number, data?: Uint8Array | Uint8ClampedArray) { if (!data) { data = new Uint8Array(width * height * channels); @@ -30,8 +30,8 @@ function createImage(image: any, { } function resizeImage(image: any, { - width, - height + width, + height }: Size, channels: number) { if (width === image.width && height === image.height) { return; diff --git a/src/util/intersection_tests.ts b/src/util/intersection_tests.ts index 428c979340..79d4fb11a4 100644 --- a/src/util/intersection_tests.ts +++ b/src/util/intersection_tests.ts @@ -1,4 +1,4 @@ -import { isCounterClockwise } from './util'; +import {isCounterClockwise} from './util'; import Point from '@mapbox/point-geometry'; diff --git a/src/util/primitives.ts b/src/util/primitives.ts index 77f3b280a8..d444cc8f25 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -1,4 +1,4 @@ -import { vec3, vec4 } from 'gl-matrix'; +import {vec3, vec4} from 'gl-matrix'; import assert from 'assert'; class Frustum { diff --git a/src/util/tile_request_cache.ts b/src/util/tile_request_cache.ts index 57ebc9ea10..a0dcaf151e 100644 --- a/src/util/tile_request_cache.ts +++ b/src/util/tile_request_cache.ts @@ -1,4 +1,4 @@ -import { warnOnce, parseCacheControl } from './util'; +import {warnOnce, parseCacheControl} from './util'; import window from './window'; import type Dispatcher from './dispatcher'; diff --git a/src/util/vectortile_to_geojson.ts b/src/util/vectortile_to_geojson.ts index 85bb06fb94..97c002fcb5 100644 --- a/src/util/vectortile_to_geojson.ts +++ b/src/util/vectortile_to_geojson.ts @@ -1,4 +1,4 @@ -import type { GeoJSONGeometry } from '@mapbox/geojson-types'; +import type {GeoJSONGeometry} from '@mapbox/geojson-types'; class Feature { type: "Feature"; diff --git a/src/util/verticalize_punctuation.ts b/src/util/verticalize_punctuation.ts index c44cd203b2..f7d05d69c1 100644 --- a/src/util/verticalize_punctuation.ts +++ b/src/util/verticalize_punctuation.ts @@ -1,4 +1,4 @@ -import { charHasRotatedVerticalOrientation } from './script_detection'; +import {charHasRotatedVerticalOrientation} from './script_detection'; export const verticalizedCharacterMap = { '!': '︕', diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..d167178c7e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,36 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "checkJs": false, + "declaration": true, + "esModuleInterop": true, + "importHelpers": false, + "isolatedModules": true, + "jsx": "preserve", + "module": "ES6", + "moduleResolution": "Node", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": false, + "target": "ES6", + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable", + "WebWorker" + ], + "outDir": "lib", + "rootDir": "src", + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules", + "lib", + "dist" + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4128c627ba..be31208002 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -236,6 +243,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + "@babel/helper-validator-identifier@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" @@ -260,6 +272,15 @@ "@babel/traverse" "^7.9.0" "@babel/types" "^7.9.0" +"@babel/highlight@^7.10.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -274,6 +295,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== +"@babel/parser@^7.1.0": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" + integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== + "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": version "7.9.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" @@ -977,14 +1003,6 @@ resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz#b6a0eca1a3b72e07f9caf58f998e97568028f6f5" integrity sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ== -"@babel/runtime-corejs3@^7.8.3": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" - integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" @@ -1016,6 +1034,14 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/types@^7.0.0", "@babel/types@^7.3.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + to-fast-properties "^2.0.0" + "@babel/types@^7.1.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" @@ -1025,6 +1051,35 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + "@mapbox/flow-remove-types@^1.3.0-await.upstream.2": version "1.3.0-await.upstream.2" resolved "https://registry.yarnpkg.com/@mapbox/flow-remove-types/-/flow-remove-types-1.3.0-await.upstream.2.tgz#bb8613e5cfd3f69d764658c5084d7f5d501097a2" @@ -1132,11 +1187,32 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -1279,11 +1355,366 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== +"@types/babel-core@*": + version "6.25.7" + resolved "https://registry.yarnpkg.com/@types/babel-core/-/babel-core-6.25.7.tgz#f9c22d5c085686da2f6ffbdae778edb3e6017671" + integrity sha512-WPnyzNFVRo6bxpr7bcL27qXtNKNQ3iToziNBpibaXHyKGWQA0+tTLt73QQxC/5zzbM544ih6Ni5L5xrck6rGwg== + dependencies: + "@types/babel-generator" "*" + "@types/babel-template" "*" + "@types/babel-traverse" "*" + "@types/babel-types" "*" + "@types/babylon" "*" + +"@types/babel-generator@*": + version "6.25.4" + resolved "https://registry.yarnpkg.com/@types/babel-generator/-/babel-generator-6.25.4.tgz#74eacdaa4822c4c6923e68c541144a04415ad8a1" + integrity sha512-Rnsen+ckop5mbl9d43bempS7i9wdTN1vytiTlmQla/YiNm6kH8kEVABVSXmp1UbnpkUV44nUCPeDQoa+Mu7ALA== + dependencies: + "@types/babel-types" "*" + +"@types/babel-template@*": + version "6.25.2" + resolved "https://registry.yarnpkg.com/@types/babel-template/-/babel-template-6.25.2.tgz#3c4cde02dbcbbf461a58d095a9f69f35eabd5f06" + integrity sha512-QKtDQRJmAz3Y1HSxfMl0syIHebMc/NnOeH/8qeD0zjgU2juD0uyC922biMxCy5xjTNvHinigML2l8kxE8eEBmw== + dependencies: + "@types/babel-types" "*" + "@types/babylon" "*" + +"@types/babel-traverse@*": + version "6.25.6" + resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.6.tgz#f6f6d2727d3d9fa7e116fdc0d5e03a762301112f" + integrity sha512-kPGq7V3SP3sipa2ddQBKa0cIA5ji4vInn15rYRt9c0FRT+4Mo6TcbfRZTF/7TnPC8RgTJT0FE+LftqK1iV+0SA== + dependencies: + "@types/babel-types" "*" + +"@types/babel-types@*": + version "7.0.10" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.10.tgz#c12a182ecf326c26acc7b18a301827594bab6df9" + integrity sha512-g7zrcqL4MiRu3jZzdZZYk0g0KcKk2fddXazSdP1PacEpmjihRsNGU50aaEKnPFuKzfN7WkRktUiCXvs4zU9XXQ== + +"@types/babel__core@^7.1.12": + version "7.1.15" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" + integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/babelify@^7.3.6": + version "7.3.7" + resolved "https://registry.yarnpkg.com/@types/babelify/-/babelify-7.3.7.tgz#dca7c01c6f2675fe7251af4cfa05137923a36978" + integrity sha512-OjGe1SBi3M7I/uk5+x4mNhVNymJNyK4RqeStCL5U/H2pB+K1FhC0PYbLJiPTyZpWs/8eVmQJKWoF4hGgqIdYhA== + dependencies: + "@types/babel-core" "*" + "@types/node" "*" + +"@types/babylon@*": + version "6.16.6" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.6.tgz#a1e7e01567b26a5ebad321a74d10299189d8d932" + integrity sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w== + dependencies: + "@types/babel-types" "*" + +"@types/benchmark@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/benchmark/-/benchmark-2.1.1.tgz#d763df29717d93aa333eb11f421ef383a5df5673" + integrity sha512-XmdNOarpSSxnb3DE2rRFOFsEyoqXLUL+7H8nSGS25vs+JS0018bd+cW5Ma9vdlkPmoTHSQ6e8EUFMFMxeE4l+g== + +"@types/browserify@^12.0.36": + version "12.0.37" + resolved "https://registry.yarnpkg.com/@types/browserify/-/browserify-12.0.37.tgz#f08312f17b4a7411441cce3a45434a0ce81c4da3" + integrity sha512-rGVZQhqlBMdnU0Wcq/RDO6+I1tppM42SqVq5ZEXiw2ft/A55Ro+dz4aKTy28gniwOIxZhRFqb5N+qnbg7J040g== + dependencies: + "@types/insert-module-globals" "*" + "@types/node" "*" + +"@types/buble@*": + version "0.20.1" + resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.20.1.tgz#cba009801fd417b0d2eb8fa6824b537842e05803" + integrity sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ== + dependencies: + magic-string "^0.25.0" + +"@types/caseless@*": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" + integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/cssnano@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/cssnano/-/cssnano-4.0.1.tgz#67fa912753d80973a016e7684a47fedf338aacff" + integrity sha512-hGOroxRTBkYl5gSBRJOffhV4+io+Y2bFX1VP7LgKEVHJt/LPPJaWUIuDAz74Vlp7l7hCDZfaDi7iPxwNwuVA4Q== + dependencies: + postcss "5 - 7" + +"@types/d3-array@^1": + version "1.2.9" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.9.tgz#c7dc78992cd8ca5c850243a265fd257ea56df1fa" + integrity sha512-E/7RgPr2ylT5dWG0CswMi9NpFcjIEDqLcUSBgNHe/EMahfqYaTx4zhcggG3khqoEB/leY4Vl6nTSbwLUPjXceA== + +"@types/d3-axis@^1": + version "1.0.16" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.16.tgz#93d7a28795c2f8b0e2fd550fcc4d29b7f174e693" + integrity sha512-p7085weOmo4W+DzlRRVC/7OI/jugaKbVa6WMQGCQscaMylcbuaVEGk7abJLNyGVFLeCBNrHTdDiqRGnzvL0nXQ== + dependencies: + "@types/d3-selection" "^1" + +"@types/d3-brush@^1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.1.5.tgz#c7cfb58decbfd53ad3e47f0376345e3640a68186" + integrity sha512-4zGkBafJf5zCsBtLtvDj/pNMo5X9+Ii/1hUz0GvQ+wEwelUBm2AbIDAzJnp2hLDFF307o0fhxmmocHclhXC+tw== + dependencies: + "@types/d3-selection" "^1" + +"@types/d3-chord@^1": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.11.tgz#5760765db1b1a4b936c0d9355a821dde9dd25da2" + integrity sha512-0DdfJ//bxyW3G9Nefwq/LDgazSKNN8NU0lBT3Cza6uVuInC2awMNsAcv1oKyRFLn9z7kXClH5XjwpveZjuz2eg== + +"@types/d3-collection@*": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.10.tgz#bca161e336156968f267c077f7f2bfa8ff224e58" + integrity sha512-54Fdv8u5JbuXymtmXm2SYzi1x/Svt+jfWBU5junkhrCewL92VjqtCBDn97coBRVwVFmYNnVTNDyV8gQyPYfm+A== + +"@types/d3-color@^1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784" + integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA== + +"@types/d3-dispatch@^1": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.9.tgz#c5a180f1e251de853b399cfbfbb6dd7f8bf842ae" + integrity sha512-zJ44YgjqALmyps+II7b1mZLhrtfV/FOxw9owT87mrweGWcg+WK5oiJX2M3SYJ0XUAExBduarysfgbR11YxzojQ== + +"@types/d3-drag@^1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.5.tgz#0b1b852cb41577075aa625ae6149379ea6c34dfd" + integrity sha512-7NeTnfolst1Js3Vs7myctBkmJWu6DMI3k597AaHUX98saHjHWJ6vouT83UrpE+xfbSceHV+8A0JgxuwgqgmqWw== + dependencies: + "@types/d3-selection" "^1" + +"@types/d3-dsv@^1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.2.1.tgz#1524fee9f19d689c2f76aa0e24e230762bf96994" + integrity sha512-LLmJmjiqp/fTNEdij5bIwUJ6P6TVNk5hKM9/uk5RPO2YNgEu9XvKO0dJ7Iqd3psEdmZN1m7gB1bOsjr4HmO2BA== + +"@types/d3-ease@^1": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.10.tgz#09910e8558439b6038a7ed620650e510394ffa6d" + integrity sha512-fMFTCzd8DOwruE9zlu2O8ci5ct+U5jkGcDS+cH+HCidnJlDs0MZ+TuSVCFtEzh4E5MasItwy+HvgoFtxPHa5Cw== + +"@types/d3-force@^1": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.2.4.tgz#6e274c72288c2db08fbdb8f5b87b9aa83e55a9e8" + integrity sha512-fkorLTKvt6AQbFBQwn4aq7h9rJ4c7ZVcPMGB8X6eFFveAyMZcv7t7m6wgF4Eg93rkPgPORU7sAho1QSHNcZu6w== + +"@types/d3-format@^1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.4.2.tgz#ea17bf559b71d9afd569ae9bfe4c544dab863baa" + integrity sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ== + +"@types/d3-geo@^1": + version "1.12.3" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.12.3.tgz#512ebe735cb1cdf5f87ad59608416e2e9e868c5a" + integrity sha512-yZbPb7/5DyL/pXkeOmZ7L5ySpuGr4H48t1cuALjnJy5sXQqmSSAYBiwa6Ya/XpWKX2rJqGDDubmh3nOaopOpeA== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@^1": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz#50657f420d565a06c0b950a4b82eee0a369f2dea" + integrity sha512-AbStKxNyWiMDQPGDguG2Kuhlq1Sv539pZSxYbx4UZeYkutpPwXCcgyiRrlV4YH64nIOsKx7XVnOMy9O7rJsXkg== + +"@types/d3-interpolate@^1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b" + integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg== + dependencies: + "@types/d3-color" "^1" + +"@types/d3-path@^1": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.9.tgz#73526b150d14cd96e701597cbf346cfd1fd4a58c" + integrity sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ== + +"@types/d3-polygon@^1": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.8.tgz#127ee83fccda5bf57384011da90f31367fea1530" + integrity sha512-1TOJPXCBJC9V3+K3tGbTqD/CsqLyv/YkTXAcwdsZzxqw5cvpdnCuDl42M4Dvi8XzMxZNCT9pL4ibrK2n4VmAcw== + +"@types/d3-quadtree@^1": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.9.tgz#c7c3b795b5af06e5b043d1d34e754a434b3bae59" + integrity sha512-5E0OJJn2QVavITFEc1AQlI8gLcIoDZcTKOD3feKFckQVmFV4CXhqRFt83tYNVNIN4ZzRkjlAMavJa1ldMhf5rA== + +"@types/d3-queue@*": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-queue/-/d3-queue-3.0.8.tgz#fad6212f14f34a549fc67144e354f032fb25a447" + integrity sha512-1FWOiI/MYwS5Z1Sa9EvS1Xet3isiVIIX5ozD6iGnwHonGcqL+RcC1eThXN5VfDmAiYt9Me9EWNEv/9J9k9RIKQ== + +"@types/d3-random@^1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.3.tgz#8f7fdc23f92d1561e0694eb49567e8ab50537a19" + integrity sha512-XXR+ZbFCoOd4peXSMYJzwk0/elP37WWAzS/DG+90eilzVbUSsgKhBcWqylGWe+lA2ubgr7afWAOBaBxRgMUrBQ== + +"@types/d3-request@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-request/-/d3-request-1.0.6.tgz#7f7e3b7138040756e73a023ef31020b2324c42c8" + integrity sha512-4nRKDUBg3EBx8VowpMvM3NAVMiMMI1qFUOYv3OJsclGjHX6xjtu09nsWhRQ0fvSUla3MEjb5Ch4IeaYarMEi1w== + dependencies: + "@types/d3-dsv" "^1" + +"@types/d3-scale@^1": + version "1.0.17" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-1.0.17.tgz#f54f6104c5e94fa327212398c1a164d695eefe90" + integrity sha512-baIP5/gw+PS8Axs1lfZCeIjcOXen/jxQmgFEjbYThwaj2drvivOIrJMh2Ig4MeenrogCH6zkhiOxCPRkvN1scA== + dependencies: + "@types/d3-time" "^1" + +"@types/d3-selection@^1": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.3.tgz#36928bbe64eb8e0bbcbaa01fb05c21ff6c71fa93" + integrity sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA== + +"@types/d3-shape@^1": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" + integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== + dependencies: + "@types/d3-path" "^1" + +"@types/d3-time-format@^2": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.3.1.tgz#87a30e4513b9d1d53b920327a361f87255bf3372" + integrity sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA== + +"@types/d3-time@^1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.1.1.tgz#6cf3a4242c3bbac00440dfb8ba7884f16bedfcbf" + integrity sha512-ULX7LoqXTCYtM+tLYOaeAJK7IwCT+4Gxlm2MaH0ErKLi07R5lh8NHCAyWcDkCCmx1AfRcBEV6H9QE9R25uP7jw== + +"@types/d3-timer@^1": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.10.tgz#329c51c2c931f44ed0acff78b8c84571acf0ed21" + integrity sha512-ZnAbquVqy+4ZjdW0cY6URp+qF/AzTVNda2jYyOzpR2cPT35FTXl78s15Bomph9+ckOiI1TtkljnWkwbIGAb6rg== + +"@types/d3-transition@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.3.2.tgz#ed59beca7b4d679cfa52f88a6a50e5bbeb7e0a3c" + integrity sha512-J+a3SuF/E7wXbOSN19p8ZieQSFIm5hU2Egqtndbc54LXaAEOpLfDx4sBu/PKAKzHOdgKK1wkMhINKqNh4aoZAg== + dependencies: + "@types/d3-selection" "^1" + +"@types/d3-voronoi@*": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz#7bbc210818a3a5c5e0bafb051420df206617c9e5" + integrity sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ== + +"@types/d3-zoom@^1": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.8.3.tgz#00237900c6fdc2bb4fe82679ee4d74eb8fbe7b3c" + integrity sha512-3kHkL6sPiDdbfGhzlp5gIHyu3kULhtnHTTAl3UBZVtWB1PzcLL8vdmz5mTx7plLiUqOA2Y+yT2GKjt/TdA2p7Q== + dependencies: + "@types/d3-interpolate" "^1" + "@types/d3-selection" "^1" + +"@types/d3@^4.13.12": + version "4.13.12" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-4.13.12.tgz#1403037b8b7704939a5c74f13bb5d4fd220fec28" + integrity sha512-/bbFtkOBc04gGGN8N9rMG5ps3T0eIj5I8bnYe9iIyeM5qoOrydPCbFYlEPUnj2h9ibc2i+QZfDam9jY5XTrTxQ== + dependencies: + "@types/d3-array" "^1" + "@types/d3-axis" "^1" + "@types/d3-brush" "^1" + "@types/d3-chord" "^1" + "@types/d3-collection" "*" + "@types/d3-color" "^1" + "@types/d3-dispatch" "^1" + "@types/d3-drag" "^1" + "@types/d3-dsv" "^1" + "@types/d3-ease" "^1" + "@types/d3-force" "^1" + "@types/d3-format" "^1" + "@types/d3-geo" "^1" + "@types/d3-hierarchy" "^1" + "@types/d3-interpolate" "^1" + "@types/d3-path" "^1" + "@types/d3-polygon" "^1" + "@types/d3-quadtree" "^1" + "@types/d3-queue" "*" + "@types/d3-random" "^1" + "@types/d3-request" "*" + "@types/d3-scale" "^1" + "@types/d3-selection" "^1" + "@types/d3-shape" "^1" + "@types/d3-time" "^1" + "@types/d3-time-format" "^2" + "@types/d3-timer" "^1" + "@types/d3-transition" "^1" + "@types/d3-voronoi" "*" + "@types/d3-zoom" "^1" + +"@types/diff@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/diff/-/diff-4.0.2.tgz#2e9bb89f9acc3ab0108f0f3dc4dbdcf2fff8a99c" + integrity sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ== + +"@types/earcut@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/earcut/-/earcut-2.1.1.tgz#573a0af609f17005c751f6f4ffec49cfe358ea51" + integrity sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ== + +"@types/ejs@^2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-2.7.0.tgz#bc84e083eae38f64a287a6dab9012bbe1d96e295" + integrity sha512-kM2g9Fdk/du24fKuuQhA/LBleFR4Z4JP2MVKpLxQQSzofF1uJ06D+c05zfLDAkkDO55aEeNwJih0gHrE/Ci20A== + +"@types/eslint@^7.2.6": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" + integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/esm@~3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/esm/-/esm-3.2.0.tgz#f53dbded33cc1cef95645ebbf287aa3b3742e103" + integrity sha512-aXemgVPnF1s0PQin04Ei8zTWaNwUdc4pmhZDg8LBW6QEl9kBWVItAUOLGUY5H5xduAmbL1pLGH1X/PN0+4R9tg== + dependencies: + "@types/node" "*" + "@types/estree@*": version "0.0.44" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" @@ -1299,11 +1730,21 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@types/geojson@*": + version "7946.0.8" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" + integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== + "@types/geojson@^7946.0.7": version "7946.0.7" resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== +"@types/gl@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@types/gl/-/gl-4.1.0.tgz#44d48283f1ffb5e6698de145b805fa1bf80ca4aa" + integrity sha512-XdyM2/Q+XAsdw69t23YD812fY3KDw9dYmULZTOGMFM2tLaweBtcVzUnOwsMzF7i0dvFDL0GnawYwEq/+hvUZtw== + "@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" @@ -1313,21 +1754,153 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/glob@^7.1.3": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" + integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/insert-module-globals@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/insert-module-globals/-/insert-module-globals-7.0.2.tgz#0d44216a6489829897d7c8a97dbf8250444c95f8" + integrity sha512-b+XCUBUioZoveg4e8+D/wGVIvQcuV6TNHPy53aeY0YBydOOZhAtX2Sdr4x97uWKKy9Xrt0SUKsPxbT9e0u/x9Q== + dependencies: + "@types/node" "*" + +"@types/jsdom@^16.2.5": + version "16.2.13" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.13.tgz#126c8b7441b159d6234610a48de77b6066f1823f" + integrity sha512-8JQCjdeAidptSsOcRWk2iTm9wCcwn9l+kRG6k5bzUacrnm1ezV4forq0kWjUih/tumAeoG+OspOvQEbbRucBTw== + dependencies: + "@types/node" "*" + "@types/parse5" "*" + "@types/tough-cookie" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.7": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" + integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== + +"@types/jsonwebtoken@^8.5.0": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz#50ccaf0aa6f5d7b9956e70fe323b76e582991913" + integrity sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg== + dependencies: + "@types/node" "*" + +"@types/lodash.template@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@types/lodash.template/-/lodash.template-4.5.0.tgz#277654af717ed37ce2687c69f8f221c550276b7a" + integrity sha512-4LgHxK16IPbGR7TmXpPvNT7iNGsLCdQY6Rc0mi1a/JECt8et/D4hx6NMVAJej/d932sj1mJsg0QYHKL189O0Qw== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.171" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.171.tgz#f01b3a5fe3499e34b622c362a46a609fdb23573b" + integrity sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.1": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/murmurhash-js@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/murmurhash-js/-/murmurhash-js-1.0.3.tgz#0e8c0a1db692c062ea4f7e1093fc1ba1d1839298" + integrity sha512-PxJwTlcFOBRPqv9pSoC3O1FpKN8GnM5hMJIkG6U3omH8b4GAh28fO1c+TMR4oxj0BG43/ICbrIK3KBfzad2heg== + +"@types/node-notifier@^8.0.0": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@types/node-notifier/-/node-notifier-8.0.1.tgz#5cf3fb1c67732bfc487e051492de688dd362edbc" + integrity sha512-oEaec3j6vw1u0xT/rEniM0yarkV5dZsZvjgTX3IlgekpjDGlv8EGD+Pnpbt3D9IMkoosprPeRtvYc/1t9XBduw== + dependencies: + "@types/node" "*" + "@types/node@*", "@types/node@>= 8": version "12.12.31" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.31.tgz#d6b4f9645fee17f11319b508fb1001797425da51" integrity sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg== +"@types/npm-packlist@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/npm-packlist/-/npm-packlist-1.1.2.tgz#285978c9023ce68fa0641ca606c7c3b7b0e851c5" + integrity sha512-9NYoEH87t90e6dkaQOuUTY/R1xUE0a67sXzJBuAB+b+/z4FysHFD19g/O154ToGjyWqKYkezVUtuBdtfd4hyfw== + +"@types/parse5@*": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" + integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== + +"@types/pbf@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" + integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== + +"@types/pixelmatch@^5.2.2": + version "5.2.4" + resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" + integrity sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ== + dependencies: + "@types/node" "*" + +"@types/pngjs@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-3.4.2.tgz#8dc49b45fbcf18a5873179e3664f049388e39ecf" + integrity sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw== + dependencies: + "@types/node" "*" + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/puppeteer@^1.20.7": + version "1.20.8" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-1.20.8.tgz#fadbf64f7ac497e9248297beb6ed6a01705c0918" + integrity sha512-yJZzz9NeEmTxRGaZzUxUtBIEAoVXTtAx40mG8K0eDPwEeWyuxXKC7Lredxs6uNcgbvMDc8xzYy4v54jbbpoqrg== + dependencies: + "@types/node" "*" + "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/react-dom@^16.9.10": + version "16.9.14" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.14.tgz#674b8f116645fe5266b40b525777fc6bb8eb3bcd" + integrity sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A== + dependencies: + "@types/react" "^16" + +"@types/react@^16", "@types/react@^16.14.2": + version "16.14.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.11.tgz#992a0cd4b66b9f27315042b5d96e976717368f04" + integrity sha512-Don0MtsZZ3fjwTJ2BsoqkyOy7e176KplEAKOpr/4XDdzinlyJBn9yfsKn5mcSgn4kh1B22+3tBnzBC1z63ybtQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/request@^2.48.5": + version "2.48.6" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.6.tgz#2300e7fc443108f79efa90e3bdf34c6d60fa89d8" + integrity sha512-vrZaV3Ij7j/l/3hz6OttZFtpRCu7zlq7XgkYHJP6FwVEAZkGQ095WqyJV08/GlW9eyXKVcp/xmtruHm8eHpw1g== + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -1335,6 +1908,77 @@ dependencies: "@types/node" "*" +"@types/rollup-plugin-buble@^0.19.1": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@types/rollup-plugin-buble/-/rollup-plugin-buble-0.19.2.tgz#5b8e5b25068ff8f75357db9758a61cc12555b388" + integrity sha512-GcWqRXqQrBRlyR4u6/xrGjwTpmVLd8Qt91Cf/7hoOtYiU49FLeQoaiACLozKdClYVz7xs/6USIIFFk9zuzsUbw== + dependencies: + "@types/buble" "*" + "@types/node" "*" + rollup "^0.63.4" + +"@types/rollup-plugin-json@^3.0.2": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/rollup-plugin-json/-/rollup-plugin-json-3.0.3.tgz#a3dbf32e3c9e0e7bc34a8bce2be6210ed331cf49" + integrity sha512-5Y5fTYRCXS1llyLzQ3X1XhDRpw/31jkfWOMpDRgz000d9ABOsdLWDg/f6mqwT8BKGYV/+6tje4uGQnuebuk7dg== + dependencies: + "@types/node" "*" + rollup "^0.63.4" + +"@types/rollup-plugin-sourcemaps@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@types/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#ce3752116834aeb8b798da77a180612fb6ff617a" + integrity sha512-dqF1rMFy4O8yNlQYwYPos5Cfav0f6M7PLH8B33gsslQ0zA9MX1jMGokwNuJ3Z3EXAzsKF/xAWNHpFmELcgYJww== + dependencies: + "@types/node" "*" + rollup "^0.63.4" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/selenium-webdriver@^4.0.10": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-4.0.15.tgz#03012b84155cf6bbae2f64aa9dccf2a84c78c7c8" + integrity sha512-5760PIZkzhPejy3hsKAdCKe5LJygGdxLKOLxmZL9GEUcFlO5OgzM6G2EbdbvOnaw4xvUSa9Uip6Ipwkih12BPA== + +"@types/shuffle-seed@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/shuffle-seed/-/shuffle-seed-1.1.0.tgz#b301d4b1dc88f603b8187329bee9cdb9e814f12d" + integrity sha512-h6UW72XuE07bSDVTkNjMMapFj6ERJmvf+RajssOoEIVhuU53/+zyCSBjBrSpDJSzVYjGr4CYxW3ABrY0C6s8qA== + +"@types/sinon@^7.5.2": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.2.tgz#5e2f1d120f07b9cda07e5dedd4f3bf8888fccdb9" + integrity sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg== + +"@types/stylelint@^9.10.1": + version "9.10.1" + resolved "https://registry.yarnpkg.com/@types/stylelint/-/stylelint-9.10.1.tgz#211832381e43fd0774217b59f02ab389d82643ea" + integrity sha512-au+n/CjGixNopJmh51GeZSkqf/ahwOBkzcvizHPe3flfwWag0T+/L7uHD0Hjx7ZhmXGFSEwOCqEybD4domcyRw== + dependencies: + postcss "7.x.x" + +"@types/supercluster@^5.0.2": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/supercluster/-/supercluster-5.0.3.tgz#aa03a77c6545265e63b50fa267ab12afe0c27658" + integrity sha512-XMSqQEr7YDuNtFwSgaHHOjsbi0ZGL62V9Js4CW45RBuRYlNWSW/KDqN+RFFE7HdHcGhJPtN0klKvw06r9Kg7rg== + dependencies: + "@types/geojson" "*" + +"@types/tape@^4.13.0": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@types/tape/-/tape-4.13.1.tgz#b789e28d0e7c558a08da8b8986298d46b71f6cf1" + integrity sha512-p6eHt3Yi7C9o7lpjchpVnfKb3ldFjHR/1sBaQdpuZnjAFtsc2UgsFlu+XKQH2l5pgt98oFcINYNTRAwWbrZjnw== + dependencies: + "@types/node" "*" + +"@types/tough-cookie@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" + integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== + "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" @@ -1356,6 +2000,75 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@typescript-eslint/eslint-plugin@^4.10.0": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz#36cdcd9ca6f9e5cb49b9f61b970b1976708d084b" + integrity sha512-jW8sEFu1ZeaV8xzwsfi6Vgtty2jf7/lJmQmDkDruBjYAbx5DA8JtbcMnP0rNPUG+oH5GoQBTSp+9613BzuIpYg== + dependencies: + "@typescript-eslint/experimental-utils" "4.28.3" + "@typescript-eslint/scope-manager" "4.28.3" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.3.tgz#976f8c1191b37105fd06658ed57ddfee4be361ca" + integrity sha512-zZYl9TnrxwEPi3FbyeX0ZnE8Hp7j3OCR+ELoUfbwGHGxWnHg9+OqSmkw2MoCVpZksPCZYpQzC559Ee9pJNHTQw== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.28.3" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/typescript-estree" "4.28.3" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.10.0": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44" + integrity sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ== + dependencies: + "@typescript-eslint/scope-manager" "4.28.3" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/typescript-estree" "4.28.3" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371" + integrity sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ== + dependencies: + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/visitor-keys" "4.28.3" + +"@typescript-eslint/types@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7" + integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA== + +"@typescript-eslint/typescript-estree@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb" + integrity sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w== + dependencies: + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/visitor-keys" "4.28.3" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4" + integrity sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg== + dependencies: + "@typescript-eslint/types" "4.28.3" + eslint-visitor-keys "^2.0.0" + JSONStream@^1.0.3: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1400,11 +2113,16 @@ acorn-globals@^4.3.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.0, acorn-jsx@^5.0.1: +acorn-jsx@^5.0.1: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" @@ -1429,7 +2147,7 @@ acorn@^5.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.1.1: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.1.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== @@ -1439,6 +2157,11 @@ acorn@^7.0.0, acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + address@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -1456,7 +2179,17 @@ agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.10.2, ajv@^6.5.5: version "6.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== @@ -1466,6 +2199,16 @@ ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" + integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -1476,10 +2219,10 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-html@^0.0.7: version "0.0.7" @@ -1628,13 +2371,15 @@ array-from@^2.1.1: resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= -array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" is-string "^1.0.5" array-union@^1.0.2: @@ -1644,6 +2389,11 @@ array-union@^1.0.2: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1654,13 +2404,24 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== +array.prototype.flat@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" arraybuffer.slice@~0.0.7: version "0.0.7" @@ -1711,6 +2472,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-cache@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-cache/-/async-cache-1.1.0.tgz#4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a" @@ -2003,7 +2769,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2279,6 +3045,14 @@ caching-transform@^3.0.1: package-hash "^3.0.0" write-file-atomic "^2.4.2" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-matcher@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-2.0.0.tgz#a38bee4e9ddbeec76aa31cc20311085a34dd395b" @@ -2410,6 +3184,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -2447,11 +3229,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - charm@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" @@ -2521,18 +3298,6 @@ clean-yaml-object@^0.1.0: resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -2687,10 +3452,10 @@ commander@2, commander@^2.20.0, commander@^2.6.0, commander@^2.8.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -comment-parser@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.2.tgz#baf6d99b42038678b81096f15b630d18142f4b8a" - integrity sha512-4Rjb1FnxtOcv9qsfuaNuVsmmVn4ooVoBHzYfyKteiXwIU84PClyGA5jASoFMwPV93+FPh9spwueXauxFJZkGAg== +comment-parser@^0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" + integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== commondir@^1.0.1: version "1.0.1" @@ -2793,11 +3558,6 @@ constants-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -2855,11 +3615,6 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" -core-js-pure@^3.0.0: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" - integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2950,7 +3705,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1: +cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3137,6 +3892,11 @@ cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3523,6 +4283,13 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3530,6 +4297,13 @@ debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: dependencies: ms "^2.1.1" +debug@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -3579,7 +4353,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -3733,6 +4507,13 @@ dir-glob@^2.2.2: dependencies: path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine-temporary-fork@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz#36f2154f556ee4f1e60311d391cd23de5187ed57" @@ -3740,14 +4521,6 @@ doctrine-temporary-fork@2.1.0: dependencies: esutils "^2.0.2" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -4057,6 +4830,13 @@ engine.io@~3.4.0: engine.io-parser "~2.2.0" ws "^7.1.2" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -4086,7 +4866,7 @@ error@^7.0.0: dependencies: string-template "~0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -4103,6 +4883,28 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4144,6 +4946,11 @@ escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.11.0, escodegen@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" @@ -4161,20 +4968,20 @@ eslint-config-mourner@^3.0.0: resolved "https://registry.yarnpkg.com/eslint-config-mourner/-/eslint-config-mourner-3.0.0.tgz#2cb7df3a14889e70409bbc3250ef0373285e7430" integrity sha512-QWMt3Cbqkhg/73fZ2UrTNa/p27nF3JhI1Ej2Jg7qSBri88Y0bg4LFzz0/6I5IrvFR10c6UPwDS+DsV9Ec42aVQ== -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.4.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" - integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== +eslint-module-utils@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" + integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== dependencies: - debug "^2.6.9" + debug "^3.2.7" pkg-dir "^2.0.0" eslint-plugin-flowtype@^3.9.1: @@ -4191,129 +4998,154 @@ eslint-plugin-html@^5.0.5: dependencies: htmlparser2 "^3.10.0" -eslint-plugin-import@^2.16.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== +eslint-plugin-import@^2.22.1: + version "2.23.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" has "^1.0.3" + is-core-module "^2.4.0" minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" -eslint-plugin-jsdoc@^17.1.2: - version "17.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-17.1.2.tgz#1d2bcdd918c2665dfabe1d60714663f4afe4ae88" - integrity sha512-x3XbsYUF8VFTMi+Ssdezh4g77PodQyFcZ0DPQOeSkvI5EyHGV31yH3ekcD69JChEb5BkmcUu07FtLFuaxE97PQ== +eslint-plugin-jsdoc@^30.7.8: + version "30.7.13" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.13.tgz#52e5c74fb806d3bbeb51d04a0c829508c3c6b563" + integrity sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ== dependencies: - comment-parser "^0.7.0" - debug "^4.1.1" - jsdoctypeparser "^6.0.0" - lodash "^4.17.15" - object.entries-ponyfill "^1.0.1" - regextras "^0.6.1" + comment-parser "^0.7.6" + debug "^4.3.1" + jsdoctypeparser "^9.0.0" + lodash "^4.17.20" + regextras "^0.7.1" + semver "^7.3.4" + spdx-expression-parse "^3.0.1" -eslint-plugin-react@^7.12.4: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== +eslint-plugin-react@^7.21.5: + version "7.24.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz#eadedfa351a6f36b490aa17f4fa9b14e842b9eb4" + integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== dependencies: - array-includes "^3.1.1" + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.4" + object.fromentries "^2.0.4" + object.values "^1.1.4" prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.5" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.15.3: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.15.0: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8" + integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.1.2" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" text-table "^0.2.0" + v8-compile-cache "^2.0.3" esm@~3.0.84: version "3.0.84" resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -4325,29 +5157,29 @@ espurify@^2.0.0, espurify@^2.0.1: resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.0.1.tgz#c25b3bb613863daa142edcca052370a1a459f41d" integrity sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA== -esquery@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" - integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - estraverse "^5.0.0" + estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" - integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== estree-walker@^0.6.1: version "0.6.1" @@ -4486,15 +5318,6 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4534,6 +5357,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -4546,12 +5374,23 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4561,6 +5400,13 @@ fast-safe-stringify@^2.0.7: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fastq@^1.6.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" + integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== + dependencies: + reusify "^1.0.4" + faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -4580,13 +5426,6 @@ fd@~0.0.2: resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c" integrity sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" @@ -4594,12 +5433,12 @@ file-entry-cache@^4.0.0: dependencies: flat-cache "^2.0.1" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" file-uri-to-path@1.0.0: version "1.0.0" @@ -4694,11 +5533,24 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatted@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" + integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg== + flow-bin@^0.100.0: version "0.100.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.100.0.tgz#729902726658cfa0a81425d6401f9625cf9f5534" @@ -4744,6 +5596,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -4886,6 +5747,15 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-npm-tarball-url@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.1.tgz#43c15223c35096e3e4068d8a6c6747bbdfc23462" @@ -4992,6 +5862,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -5064,11 +5941,30 @@ globals-docs@^2.4.0: resolved "https://registry.yarnpkg.com/globals-docs/-/globals-docs-2.4.1.tgz#d16887709f4a15eb22d97e96343591f87a2ee3db" integrity sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg== -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.6.0, globals@^13.9.0: + version "13.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" + integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^9.0.0: version "9.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -5164,6 +6060,11 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -5196,6 +6097,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -5436,7 +6342,7 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5465,6 +6371,11 @@ ignore@^5.0.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -5493,6 +6404,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -5567,25 +6486,6 @@ inline-source-map@~0.6.0: dependencies: source-map "~0.5.3" -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - insert-module-globals@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" @@ -5602,14 +6502,14 @@ insert-module-globals@^7.0.0: undeclared-identifiers "^1.1.2" xtend "^4.0.0" -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - es-abstract "^1.17.0-next.1" + get-intrinsic "^1.1.0" has "^1.0.3" - side-channel "^1.0.2" + side-channel "^1.0.4" invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -5688,6 +6588,11 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -5702,6 +6607,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -5724,6 +6636,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -5736,6 +6653,13 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.2.0, is-core-module@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5856,6 +6780,16 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5892,11 +6826,6 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -5916,6 +6845,14 @@ is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: dependencies: has "^1.0.3" +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -5955,6 +6892,11 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + is-supported-regexp-flag@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" @@ -5974,6 +6916,13 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + is-type@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/is-type/-/is-type-0.0.1.tgz#f651d85c365d44955d14a51d8d7061f3f6b4779c" @@ -6040,7 +6989,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -6152,7 +7101,7 @@ jest-worker@^24.9.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.10.0, js-yaml@^3.12.1, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.1: +js-yaml@^3.10.0, js-yaml@^3.12.1, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -6165,10 +7114,10 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdoctypeparser@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz#acfb936c26300d98f1405cb03e20b06748e512a8" - integrity sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA== +jsdoctypeparser@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" + integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== jsdom@^13.0.0: version "13.2.0" @@ -6222,6 +7171,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -6256,6 +7210,13 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -6307,13 +7268,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" - integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" + array-includes "^3.1.2" + object.assign "^4.1.2" jszip@^3.2.2: version "3.2.2" @@ -6432,7 +7393,15 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -6477,16 +7446,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -6546,7 +7505,7 @@ lodash.castarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= -lodash.clonedeep@^4.4.1: +lodash.clonedeep@^4.4.1, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -6631,6 +7590,11 @@ lodash.memoize@~3.0.3: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -6661,6 +7625,11 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -6671,7 +7640,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6743,6 +7712,13 @@ lru-cache@^4.0.0, lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + ls-archive@^1.2.3: version "1.3.4" resolved "https://registry.yarnpkg.com/ls-archive/-/ls-archive-1.3.4.tgz#52150919dab1acb094cdcef9dde9c66934a4650f" @@ -6760,7 +7736,7 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5: +magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -6987,6 +7963,11 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -7011,6 +7992,14 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7046,11 +8035,6 @@ mime@~1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7206,7 +8190,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -7228,11 +8212,6 @@ mustache@^3.0.0: resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.1.tgz#89e78a9d207d78f2799b1e95764a25bf71a28322" integrity sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - nan@^2.12.1, nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -7613,6 +8592,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.10.3, object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + object-inspect@^1.7.0, object-inspect@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" @@ -7645,29 +8629,33 @@ object.assign@^4.0.4, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries-ponyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.entries-ponyfill/-/object.entries-ponyfill-1.0.1.tgz#29abdf77cbfbd26566dd1aa24e9d88f65433d256" - integrity sha1-Kavfd8v70mVm3RqiTp2I9lQz0lY= +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -object.entries@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" - integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== +object.entries@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" + integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + es-abstract "^1.18.2" -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.2" has "^1.0.3" object.getownpropertydescriptors@^2.1.0: @@ -7685,7 +8673,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1: +object.values@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -7695,6 +8683,15 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.3, object.values@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -7719,13 +8716,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - open@^7.3.0: version "7.3.0" resolved "https://registry.npmjs.org/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" @@ -7746,7 +8736,7 @@ optimist@~0.5.2: dependencies: wordwrap "~0.0.2" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -7758,6 +8748,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -8026,11 +9028,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -8084,13 +9081,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -8098,6 +9088,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbf@^3.0.5, pbf@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" @@ -8132,6 +9127,11 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + pidtree@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" @@ -8199,6 +9199,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -8619,6 +9626,15 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== +"postcss@5 - 7", postcss@7.x.x: + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + postcss@^6.0.1: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -8663,6 +9679,11 @@ prebuild-install@^5.1.0: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -8863,6 +9884,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" @@ -8967,14 +9993,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -9000,15 +10018,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -9140,7 +10149,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -9148,10 +10157,18 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^4.5.4, regexpu-core@^4.7.0: version "4.7.0" @@ -9165,10 +10182,10 @@ regexpu-core@^4.5.4, regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -regextras@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.6.1.tgz#9689641bbb338e0ff7001a5c507c6a2008df7b36" - integrity sha512-EzIHww9xV2Kpqx+corS/I7OBmf2rZ0pKKJPsw5Dc+l6Zq1TslDmtRIP9maVn3UH+72MIXmn8zzDgP07ihQogUA== +regextras@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" + integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== registry-url@^4.0.0: version "4.0.0" @@ -9421,6 +10438,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -9470,20 +10492,28 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.3, resolve@^1.1.4, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1, resolve@~1.15.1: +resolve@^1.1.3, resolve@^1.1.4, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1, resolve@~1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" resumer@~0.0.0: version "0.0.0" @@ -9497,6 +10527,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -9521,6 +10556,13 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@~2.2.6: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" @@ -9617,6 +10659,14 @@ rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.5.0, dependencies: estree-walker "^0.6.1" +rollup@^0.63.4: + version "0.63.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.63.5.tgz#5543eecac9a1b83b7e1be598b5be84c9c0a089db" + integrity sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g== + dependencies: + "@types/estree" "0.0.39" + "@types/node" "*" + rollup@^1.23.1: version "1.32.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" @@ -9626,25 +10676,18 @@ rollup@^1.23.1: "@types/node" "*" acorn "^7.1.0" -run-async@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - is-promise "^2.1.0" + queue-microtask "^1.2.2" rw@1, rw@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -rxjs@^6.4.0: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9706,7 +10749,7 @@ selenium-webdriver@^4.0.0-alpha.5: rimraf "^2.7.1" tmp "0.0.30" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9721,6 +10764,13 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9844,13 +10894,14 @@ shuffle-seed@^1.1.6: dependencies: seedrandom "^2.4.2" -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" @@ -9896,6 +10947,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -9905,6 +10961,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -10102,6 +11167,14 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" @@ -10245,7 +11318,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10271,17 +11344,19 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== +string.prototype.matchall@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" + integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + es-abstract "^1.18.2" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" string.prototype.padend@^3.0.0: version "3.1.0" @@ -10300,6 +11375,14 @@ string.prototype.trim@~1.2.1: es-abstract "^1.17.0-next.1" function-bind "^1.1.1" +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -10316,6 +11399,14 @@ string.prototype.trimright@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string_decoder@0.10, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -10412,6 +11503,11 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" @@ -10574,7 +11670,7 @@ syntax-error@^1.1.1: dependencies: acorn-node "^1.2.0" -table@^5.0.0, table@^5.2.3: +table@^5.0.0: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -10584,6 +11680,18 @@ table@^5.0.0, table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + tap-mocha-reporter@^3.0.7: version "3.0.9" resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz#ea41e741149a94c278d106cbcccc37fec2dfeeaa" @@ -10836,7 +11944,7 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: +"through@>=2.2.7 <3", through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10894,7 +12002,7 @@ tmp@0.0.31: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.33, tmp@^0.0.33: +tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -11029,10 +12137,26 @@ tsame@^2.0.1: resolved "https://registry.yarnpkg.com/tsame/-/tsame-2.0.1.tgz#70410ddbefcd29c61e2d68549b3347b0444d613f" integrity sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw== -tslib@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +tsconfig-paths@^3.9.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz#79ae67a68c15289fdf5c51cb74f397522d795ed7" + integrity sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q== + dependencies: + json5 "^2.2.0" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" tty-browserify@0.0.1: version "0.0.1" @@ -11051,6 +12175,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -11063,6 +12194,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11081,6 +12217,11 @@ typescript@^3.2.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -11099,6 +12240,16 @@ unassert@^1.5.1: esutils "^2.0.2" object-assign "^4.1.0" +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -11403,6 +12554,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -11651,6 +12807,17 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -11689,7 +12856,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -11786,13 +12953,6 @@ xmlhttprequest@1: resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= -xregexp@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From 36712e22cdd846f733279a2a7a7b46e0ca54b643 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 17 Jul 2021 00:11:45 +0300 Subject: [PATCH 004/142] More lint fixes --- .eslintrc | 2 +- src/shaders/index.ts | 2 +- src/shaders/shaders.ts | 1 - src/source/load_tilejson.ts | 2 +- src/source/source.ts | 2 +- src/source/source_state.ts | 2 +- src/source/worker_source.ts | 2 -- src/style/style_layer.ts | 2 +- src/ui/camera.ts | 4 ++-- src/ui/control/logo_control.ts | 2 +- test/unit/ui/control/logo.test.js | 4 ++-- 11 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.eslintrc b/.eslintrc index b42f067dc7..8dd0ceeadc 100644 --- a/.eslintrc +++ b/.eslintrc @@ -55,7 +55,7 @@ "object": "Object", "property": "assign" }], - "no-unused-vars": ["error", {"argsIgnorePattern": "^_$"}], + "no-unused-vars": "off", "no-warning-comments": "error", "object-curly-spacing": ["error", "never"], "prefer-arrow-callback": "error", diff --git a/src/shaders/index.ts b/src/shaders/index.ts index e20894e2c7..f2dba503ce 100644 --- a/src/shaders/index.ts +++ b/src/shaders/index.ts @@ -4,7 +4,7 @@ // when Rollup builds the main bundle. // See package.json#browser -/* eslint-disable import/unambiguous, import/no-commonjs, flowtype/require-valid-file-annotation, no-global-assign */ +/* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ const fs = require('fs'); diff --git a/src/shaders/shaders.ts b/src/shaders/shaders.ts index 25f1fabdbc..4b3e6626c1 100644 --- a/src/shaders/shaders.ts +++ b/src/shaders/shaders.ts @@ -1,6 +1,5 @@ // Disable Flow annotations here because Flow doesn't support importing GLSL files -/* eslint-disable flowtype/require-valid-file-annotation */ import preludeFrag from './_prelude.fragment.glsl'; import preludeVert from './_prelude.vertex.glsl'; diff --git a/src/source/load_tilejson.ts b/src/source/load_tilejson.ts index 2d45e4a086..5774050d7a 100644 --- a/src/source/load_tilejson.ts +++ b/src/source/load_tilejson.ts @@ -16,7 +16,7 @@ export default function(options: any, requestManager: RequestManager, callback: const result: any = pick( // explicit source options take precedence over TileJSON extend(tileJSON, options), - ['tiles', 'minzoom', 'maxzoom', 'attribution', 'mapbox_logo', 'bounds', 'scheme', 'tileSize', 'encoding'] + ['tiles', 'minzoom', 'maxzoom', 'attribution', 'maplibreLogo', 'bounds', 'scheme', 'tileSize', 'encoding'] ); if (tileJSON.vector_layers) { diff --git a/src/source/source.ts b/src/source/source.ts index b17371b5dd..34cdf5501b 100644 --- a/src/source/source.ts +++ b/src/source/source.ts @@ -41,7 +41,7 @@ export interface Source { attribution?: string; roundZoom?: boolean; isTileClipped?: boolean; - mapbox_logo?: boolean; + maplibreLogo?: boolean; tileID?: CanonicalTileID; reparseOverscaled?: boolean; vectorLayerIds?: Array; diff --git a/src/source/source_state.ts b/src/source/source_state.ts index d709c0c6a7..d5b49e39fa 100644 --- a/src/source/source_state.ts +++ b/src/source/source_state.ts @@ -3,7 +3,7 @@ import Tile from './tile'; import type {FeatureState} from '../style-spec/expression'; export type FeatureStates = { - [feature_id: string]: FeatureState + [featureId: string]: FeatureState }; export type LayerFeatureStates = { [layer: string]: FeatureStates diff --git a/src/source/worker_source.ts b/src/source/worker_source.ts index 87a4078f89..3e8152b4db 100644 --- a/src/source/worker_source.ts +++ b/src/source/worker_source.ts @@ -10,8 +10,6 @@ import type DEMData from '../data/dem_data'; import type {StyleGlyph} from '../style/style_glyph'; import type {StyleImage} from '../style/style_image'; import type {PromoteIdSpecification} from '../style-spec/types'; -import window from '../util/window'; -const {ImageBitmap} = window; export type TileParameters = { source: string, diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index f41d83427a..e8649e05b0 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -179,7 +179,7 @@ class StyleLayer extends Evented { // No-op; can be overridden by derived classes. } - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars _handleOverridablePaintPropertyUpdate(name: string, oldValue: PropertyValue, newValue: PropertyValue): boolean { // No-op; can be overridden by derived classes. return false; diff --git a/src/ui/camera.ts b/src/ui/camera.ts index caccd64e3b..350b48ce5a 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -1269,10 +1269,10 @@ function addAssertions(camera: Camera) { //eslint-disable-line }); // Canary used to test whether this function is stripped in prod build - canary = 'canary debug run'; + canary = 'canary debug run'; // eslint-disable-line }); } -let canary; //eslint-disable-line +let canary; // eslint-disable-line export default Camera; diff --git a/src/ui/control/logo_control.ts b/src/ui/control/logo_control.ts index 23d79c82da..284e1adb65 100644 --- a/src/ui/control/logo_control.ts +++ b/src/ui/control/logo_control.ts @@ -63,7 +63,7 @@ class LogoControl { const sourceCaches = this._map.style.sourceCaches; for (const id in sourceCaches) { const source = sourceCaches[id].getSource(); - if (source.mapbox_logo) { + if (source.maplibreLogo) { return true; } } diff --git a/test/unit/ui/control/logo.test.js b/test/unit/ui/control/logo.test.js index 10a1fa529e..d31ece295a 100644 --- a/test/unit/ui/control/logo.test.js +++ b/test/unit/ui/control/logo.test.js @@ -35,7 +35,7 @@ function createSource(options, logoRequired) { source.on('error', (e) => { throw e.error; }); - const logoFlag = "mapbox_logo"; + const logoFlag = "maplibreLogo"; source[logoFlag] = logoRequired === undefined ? true : logoRequired; return source; } @@ -59,7 +59,7 @@ test('LogoControl appears in the position specified by the position option', (t) }); }); -test('LogoControl is not displayed when the mapbox_logo property is false', (t) => { +test('LogoControl is not displayed when the maplibreLogo property is false', (t) => { const map = createMap(t, 'top-left', false); map.on('load', () => { t.equal(map.getContainer().querySelectorAll('.maplibregl-ctrl-top-left > .maplibregl-ctrl')[0].style.display, 'none'); From c309e605bd04c3c9cb79a85beb33c6b58b36b7ae Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 17 Jul 2021 13:18:59 +0300 Subject: [PATCH 005/142] Updated lint command, added build typescript command --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ced20ecaa..c94382d396 100644 --- a/package.json +++ b/package.json @@ -167,6 +167,7 @@ }, "esm": true, "scripts": { + "build-tsc": "tsc --noEmit -p .", "build-dev": "rollup -c --environment BUILD:dev", "watch-dev": "rollup -c --environment BUILD:dev --watch", "build-prod": "rollup -c --environment BUILD:production", @@ -188,7 +189,7 @@ "start-release": "run-s build-prod-min build-css print-release-url start-server", "diff-tarball": "cross-env build/run-node build/diff-tarball", "prepare-publish": "git clean -fdx && yarn install", - "lint": "eslint --cache --ignore-path .gitignore src test bench build debug/*.html", + "lint": "eslint src --ext .ts", "lint-docs": "documentation lint src/index.js", "lint-css": "stylelint 'src/css/maplibre-gl.css'", "test": "run-s lint lint-css lint-docs test-flow test-unit", From 10876d949a340df67908db94bcaec7235ad9348a Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 17 Jul 2021 13:46:17 +0300 Subject: [PATCH 006/142] Add non typed modules according to ts fork. --- src/types/non-typed-modules.d.ts | 175 +++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 src/types/non-typed-modules.d.ts diff --git a/src/types/non-typed-modules.d.ts b/src/types/non-typed-modules.d.ts new file mode 100644 index 0000000000..359275a414 --- /dev/null +++ b/src/types/non-typed-modules.d.ts @@ -0,0 +1,175 @@ +import type Pbf from 'pbf'; +import type Point from '@mapbox/point-geometry'; +import type {GeoJSONFeature} from '@mapbox/geojson-types'; + +declare module "@mapbox/mapbox-gl-supported" { + type isSupported = { + webGLContextAttributes: WebGLContextAttributes, + ( + options?: { + failIfMajorPerformanceCaveat: boolean + } + ): boolean + }; + + let __exports: isSupported; + export = __exports +} + +declare module "@mapbox/unitbezier" { + class UnitBezier { + constructor(p1x: number, p1y: number, p2x: number, p2y: number); + sampleCurveX(t: number): number; + sampleCurveY(t: number): number; + sampleCurveDerivativeX(t: number): number; + solveCurveX(x: number, epsilon: number | void): number; + solve(x: number, epsilon: number | void): number; + } + + let __exports: typeof UnitBezier; + export = __exports +} + +declare module "@mapbox/point-geometry" { + type PointLike = Point | [number, number]; + + export default class Point { + x: number; + y: number; + constructor(x: number, y: number); + clone(): Point; + add(point: Point): Point; + sub(point: Point): Point; + multByPoint(point: Point): Point; + divByPoint(point: Point): Point; + mult(k: number): Point; + div(k: number): Point; + rotate(angle: number): Point; + rotateAround(angle: number, point: Point): Point; + matMult(matrix: [number, number, number, number]): Point; + unit(): Point; + perp(): Point; + round(): Point; + mag(): number; + equals(point: Point): boolean; + dist(point: Point): number; + distSqr(point: Point): number; + angle(): number; + angleTo(point: Point): number; + angleWith(point: Point): number; + angleWithSep(x: number, y: number): number; + _matMult(matrix: [number, number, number, number]): Point; + _add(point: Point): Point; + _sub(point: Point): Point; + _mult(k: number): Point; + _div(k: number): Point; + _multByPoint(point: Point): Point; + _divByPoint(point: Point): Point; + _unit(): Point; + _perp(): Point; + _rotate(angle: number): Point; + _rotateAround(angle: number, point: Point): Point; + _round(): Point; + static convert(a: PointLike): Point; + } +} + +declare module "potpack" { + type Bin = { + x: number, + y: number, + w: number, + h: number + }; + + function potpack(bins: Array): { + w: number, + h: number, + fill: number + } + + let __exports: typeof potpack; + export = __exports +} + +declare module "sinon" { + type SpyCall = { + args: Array + }; + + type Spy = { + calledOnce: number, + getCall(i: number): SpyCall, + (): any + }; + + type Stub = { + callsFake(fn: unknown): Spy + }; + + class FakeServer { + xhr: XMLHttpRequest; + } + + type Sandbox = { + xhr: { + supportsCORS: boolean + }, + fakeServer: { + create: () => FakeServer + }, + createSandbox(options: unknown): Sandbox, + stub(obj?: unknown, prop?: string): Stub, + spy(obj?: unknown, prop?: string): Spy, + restore(): void + }; + + let __exports: Sandbox; + export = __exports +} + +declare global { + declare interface VectorTile { + layers: { + [_: string]: VectorTileLayer + }; + } + + declare interface VectorTileLayer { + version?: number; + name: string; + extent: number; + length: number; + feature(i: number): VectorTileFeature; + } + + declare interface VectorTileFeature { + extent: number; + type: 1 | 2 | 3; + id: number; + properties: { + [_: string]: string | number | boolean + }; + loadGeometry(): Array>; + toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + } +} + +declare module "@mapbox/vector-tile" { + import "@mapbox/vector-tile"; + class VectorTileImpl { + constructor(pbf: Pbf); + } + + class VectorTileFeatureImpl { + static types: ["Unknown", "Point", "LineString", "Polygon"]; + toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + } + + let __exports: { + VectorTile: typeof VectorTileImpl, + VectorTileFeature: typeof VectorTileFeatureImpl + }; + + export = __exports +} From 3f9310af3eb5c0625565cbc4427b41974108f183 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 16:30:25 +0200 Subject: [PATCH 007/142] Switch from yarn to npm --- .gitignore | 1 - package-lock.json | 18664 ++++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 13065 ------------------------------- 3 files changed, 18664 insertions(+), 13066 deletions(-) create mode 100644 package-lock.json delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 9dc10d318f..ea8b0cc0ac 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ *.es.js *.js.map node_modules -package-lock.json *.sublime-* coverage flow-coverage diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..74571669b1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18664 @@ +{ + "name": "maplibre-gl", + "version": "1.15.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "dev": true + }, + "@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-replace-supers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helpers": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.5.tgz", + "integrity": "sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.14.5" + } + }, + "@babel/plugin-proposal-do-expressions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.14.5.tgz", + "integrity": "sha512-i40m/CLe5WBGYMZL/SC3xtjJ/B0i+XblaonSsinumgfNIqmBOf4LEcZJXijoQeQbQVl55PyM0siWSWWJ9lV7cA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-do-expressions": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.14.5.tgz", + "integrity": "sha512-T8KZ5abXvKMjF6JcoXjgac3ElmXf0AWzJwi2O/42Jk+HmCky3D9+i1B7NPP1FblyceqTevKeV/9szeikFoaMDg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-default-from": "^7.14.5" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-function-bind": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.14.5.tgz", + "integrity": "sha512-PSQk5JImi81nFAzIebCEqkd0aiP9LDVKLCIH+0yR66JV8cQ1oZ8IRK9NNaA5nw9sjo0cPXxuBPCqgqcpugR8tA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-function-bind": "^7.14.5" + } + }, + "@babel/plugin-proposal-function-sent": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.14.5.tgz", + "integrity": "sha512-3Hvb9m1dvFK1cor9kObPCPK8q0xlcakm+haBwHQy7V5BN1As6iys9oOKyWpHVbop+tW8JYs0v9Ahcp1BOxC3Ng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/plugin-syntax-function-sent": "^7.14.5" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-pipeline-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.14.5.tgz", + "integrity": "sha512-JahWUHYn1mij/tYte6/wGElJFUIuLGu0Eqiz329QK2yl50aQfL0sRyqGy1GhM+w0R6KWSQ9V6FDewDF2ST/xRA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-pipeline-operator": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-throw-expressions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.14.5.tgz", + "integrity": "sha512-Db2JCIPhe409U3qy0sWpDun6Xa1k77TfNsKTzUY0PDRTpiho7e2uIhYMJVwGrHOkHRH03D6yQLZRosNahnpi1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-throw-expressions": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-do-expressions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.14.5.tgz", + "integrity": "sha512-IpVyxRlfFCU2emBiq2OxUX10PD6FoGZ30yWwGt1qdkIPUDhAodG5Il1LStODgATndKRhQgqT21ksqA5fd39AwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.14.5.tgz", + "integrity": "sha512-snWDxjuaPEobRBnhpqEfZ8RMxDbHt8+87fiEioGuE+Uc0xAKgSD8QiuL3lF93hPVQfZFAcYwrrf+H5qUhike3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-function-bind": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.14.5.tgz", + "integrity": "sha512-gstAIrKtlPwrQaRz4uK+kT7zI2p5MQqX41SeO+kZKH1XGO1jL0nLZBWznRigPpkem6LfIoG2EduQZmPBcUwEmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-function-sent": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.14.5.tgz", + "integrity": "sha512-FNN0Ve2/6yxCa0xMG7wUlM81t+HOPu8HNWk683Xav1B+vjHKQQujX82NEKYdDYNUX7/ky8pUCHfRUYVmigs69Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-pipeline-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.14.5.tgz", + "integrity": "sha512-yyV4QIHExzKJwYoZ0yRorVLROdsZ96H6iamG60rvDghWyfo7BaSPjvoHWGRirebzUj+Vv5Ih6yhhMLx04Gnvyw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-throw-expressions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.14.5.tgz", + "integrity": "sha512-4aFC2goA9+JceXayipcSY017nGspvcAkzR+sdsT6hN4DUuHWvM88wdjf/Nxja5sTE7oYPmfuN84ViREdgjingw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", + "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", + "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", + "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.14.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", + "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-flow": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.14.5.tgz", + "integrity": "sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-flow-strip-types": "^7.14.5" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", + "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + } + }, + "@babel/preset-stage-0": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz", + "integrity": "sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ==", + "dev": true + }, + "@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@mapbox/flow-remove-types": { + "version": "1.3.0-await.upstream.2", + "resolved": "https://registry.npmjs.org/@mapbox/flow-remove-types/-/flow-remove-types-1.3.0-await.upstream.2.tgz", + "integrity": "sha512-OYVWXwkluP+9Jz2uenNSeum7U2Hp6RncPAS8iz3qnJ37kE/acae5dD1207BFqWsJ2JsBqULG8g2wB+hUQzPeYg==", + "dev": true, + "requires": { + "babylon": "^7.0.0-beta.41", + "node-modules-regexp": "^1.0.0", + "pirates": "^3.0.2", + "vlq": "^0.2.1" + }, + "dependencies": { + "pirates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz", + "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + } + } + }, + "@mapbox/gazetteer": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@mapbox/gazetteer/-/gazetteer-4.0.4.tgz", + "integrity": "sha512-XzOaDedR2EAfjlVApDn+cV6Upi8tsa8J6fBRWHxzmG0ekdC03jvqXkOKPS/P4BkUDyBD6bMLMJ8WH5A0iZNmwQ==", + "dev": true, + "requires": { + "@mapbox/geojsonhint": "^2.2.0" + } + }, + "@mapbox/geojson-rewind": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz", + "integrity": "sha512-eL7fMmfTBKjrb+VFHXCGv9Ot0zc3C0U+CwXo1IrP+EPwDczLoXv34Tgq3y+2mPSFNVUXgU42ILWJTC7145KPTA==", + "requires": { + "get-stream": "^6.0.1", + "minimist": "^1.2.5" + } + }, + "@mapbox/geojson-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==" + }, + "@mapbox/geojsonhint": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/geojsonhint/-/geojsonhint-2.2.0.tgz", + "integrity": "sha512-8qQYRB+/2z2JsN5s6D0WAnpo69+3V3nvJsSFLwMB1dsaWz1V4oZeuoje9srbYAxxL8PXCwIywfhYa3GxOkBv5Q==", + "dev": true, + "requires": { + "concat-stream": "^1.6.1", + "jsonlint-lines": "1.7.1", + "minimist": "1.2.0", + "vfile": "^4.0.0", + "vfile-reporter": "^5.1.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha1-zlblOfg1UrWNENZy6k1vya3HsjQ=" + }, + "@mapbox/mapbox-gl-rtl-text": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-rtl-text/-/mapbox-gl-rtl-text-0.2.3.tgz", + "integrity": "sha512-RaCYfnxULUUUxNwcUimV9C/o2295ktTyLEUzD/+VWkqXqvaVfFcZ5slytGzb2Sd/Jj4MlbxD0DCZbfa6CzcmMw==", + "dev": true + }, + "@mapbox/mapbox-gl-supported": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", + "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==" + }, + "@mapbox/mvt-fixtures": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@mapbox/mvt-fixtures/-/mvt-fixtures-3.6.0.tgz", + "integrity": "sha512-YgaODBQdutOcCnOiRJzbJO3lRejuaeuwfYk0XxfVlAi6L+UDXVHzi7NlpAa6GAYGzQm1V1KLk+2Io8+aSv8I+w==", + "dev": true, + "requires": { + "@mapbox/sphericalmercator": "^1.0.5", + "@mapbox/vector-tile": "^1.3.0", + "d3-queue": "^3.0.7", + "pbf": "^3.0.5", + "protocol-buffers-schema": "^3.3.2" + } + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", + "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.1", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.4", + "tar": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" + }, + "@mapbox/sphericalmercator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-1.1.0.tgz", + "integrity": "sha512-pEsfZyG4OMThlfFQbCte4gegvHUjxXCjz0KZ4Xk8NdOYTQBLflj6U8PL05RPAiuRAMAQNUUKJuL6qYZ5Y4kAWA==", + "dev": true + }, + "@mapbox/tiny-sdf": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==" + }, + "@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4=" + }, + "@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "requires": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", + "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/openapi-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-8.3.0.tgz", + "integrity": "sha512-ZFyQ30tNpoATI7o+Z9MWFUzUgWisB8yduhcky7S4UYsRijgIGSnwUKzPBDGzf/Xkx1DuvUtqzvmuFlDSqPJqmQ==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/request": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz", + "integrity": "sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.19.0.tgz", + "integrity": "sha512-9wdZFiJfonDyU6DjIgDHxAIn92vdSUBOwAXbO2F9rOFt6DJwuAkyGLu1CvdJPphCbPBoV9iSDMX7y4fu0v6AtA==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^8.3.0" + } + }, + "@rollup/plugin-strip": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-strip/-/plugin-strip-1.3.3.tgz", + "integrity": "sha512-jBZYNi9Wa5lSv8wXUepgqLFcv5PMJiP2VcWSIqjAzYOwZiQA09e3vwtar9EYHSYfIONyc1hG0IkSDz2VvGBZcA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.4", + "estree-walker": "^1.0.1", + "magic-string": "^0.25.5" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "@types/babel-core": { + "version": "6.25.7", + "resolved": "https://registry.npmjs.org/@types/babel-core/-/babel-core-6.25.7.tgz", + "integrity": "sha512-WPnyzNFVRo6bxpr7bcL27qXtNKNQ3iToziNBpibaXHyKGWQA0+tTLt73QQxC/5zzbM544ih6Ni5L5xrck6rGwg==", + "dev": true, + "requires": { + "@types/babel-generator": "*", + "@types/babel-template": "*", + "@types/babel-traverse": "*", + "@types/babel-types": "*", + "@types/babylon": "*" + } + }, + "@types/babel-generator": { + "version": "6.25.4", + "resolved": "https://registry.npmjs.org/@types/babel-generator/-/babel-generator-6.25.4.tgz", + "integrity": "sha512-Rnsen+ckop5mbl9d43bempS7i9wdTN1vytiTlmQla/YiNm6kH8kEVABVSXmp1UbnpkUV44nUCPeDQoa+Mu7ALA==", + "dev": true, + "requires": { + "@types/babel-types": "*" + } + }, + "@types/babel-template": { + "version": "6.25.2", + "resolved": "https://registry.npmjs.org/@types/babel-template/-/babel-template-6.25.2.tgz", + "integrity": "sha512-QKtDQRJmAz3Y1HSxfMl0syIHebMc/NnOeH/8qeD0zjgU2juD0uyC922biMxCy5xjTNvHinigML2l8kxE8eEBmw==", + "dev": true, + "requires": { + "@types/babel-types": "*", + "@types/babylon": "*" + } + }, + "@types/babel-traverse": { + "version": "6.25.6", + "resolved": "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.6.tgz", + "integrity": "sha512-kPGq7V3SP3sipa2ddQBKa0cIA5ji4vInn15rYRt9c0FRT+4Mo6TcbfRZTF/7TnPC8RgTJT0FE+LftqK1iV+0SA==", + "dev": true, + "requires": { + "@types/babel-types": "*" + } + }, + "@types/babel-types": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.10.tgz", + "integrity": "sha512-g7zrcqL4MiRu3jZzdZZYk0g0KcKk2fddXazSdP1PacEpmjihRsNGU50aaEKnPFuKzfN7WkRktUiCXvs4zU9XXQ==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/babelify": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@types/babelify/-/babelify-7.3.7.tgz", + "integrity": "sha512-OjGe1SBi3M7I/uk5+x4mNhVNymJNyK4RqeStCL5U/H2pB+K1FhC0PYbLJiPTyZpWs/8eVmQJKWoF4hGgqIdYhA==", + "dev": true, + "requires": { + "@types/babel-core": "*", + "@types/node": "*" + } + }, + "@types/babylon": { + "version": "6.16.6", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz", + "integrity": "sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==", + "dev": true, + "requires": { + "@types/babel-types": "*" + } + }, + "@types/benchmark": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-2.1.1.tgz", + "integrity": "sha512-XmdNOarpSSxnb3DE2rRFOFsEyoqXLUL+7H8nSGS25vs+JS0018bd+cW5Ma9vdlkPmoTHSQ6e8EUFMFMxeE4l+g==", + "dev": true + }, + "@types/browserify": { + "version": "12.0.37", + "resolved": "https://registry.npmjs.org/@types/browserify/-/browserify-12.0.37.tgz", + "integrity": "sha512-rGVZQhqlBMdnU0Wcq/RDO6+I1tppM42SqVq5ZEXiw2ft/A55Ro+dz4aKTy28gniwOIxZhRFqb5N+qnbg7J040g==", + "dev": true, + "requires": { + "@types/insert-module-globals": "*", + "@types/node": "*" + } + }, + "@types/buble": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.20.1.tgz", + "integrity": "sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ==", + "dev": true, + "requires": { + "magic-string": "^0.25.0" + } + }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", + "dev": true + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/cssnano": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/cssnano/-/cssnano-4.0.1.tgz", + "integrity": "sha512-hGOroxRTBkYl5gSBRJOffhV4+io+Y2bFX1VP7LgKEVHJt/LPPJaWUIuDAz74Vlp7l7hCDZfaDi7iPxwNwuVA4Q==", + "dev": true, + "requires": { + "postcss": "5 - 7" + } + }, + "@types/d3": { + "version": "4.13.12", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-4.13.12.tgz", + "integrity": "sha512-/bbFtkOBc04gGGN8N9rMG5ps3T0eIj5I8bnYe9iIyeM5qoOrydPCbFYlEPUnj2h9ibc2i+QZfDam9jY5XTrTxQ==", + "dev": true, + "requires": { + "@types/d3-array": "^1", + "@types/d3-axis": "^1", + "@types/d3-brush": "^1", + "@types/d3-chord": "^1", + "@types/d3-collection": "*", + "@types/d3-color": "^1", + "@types/d3-dispatch": "^1", + "@types/d3-drag": "^1", + "@types/d3-dsv": "^1", + "@types/d3-ease": "^1", + "@types/d3-force": "^1", + "@types/d3-format": "^1", + "@types/d3-geo": "^1", + "@types/d3-hierarchy": "^1", + "@types/d3-interpolate": "^1", + "@types/d3-path": "^1", + "@types/d3-polygon": "^1", + "@types/d3-quadtree": "^1", + "@types/d3-queue": "*", + "@types/d3-random": "^1", + "@types/d3-request": "*", + "@types/d3-scale": "^1", + "@types/d3-selection": "^1", + "@types/d3-shape": "^1", + "@types/d3-time": "^1", + "@types/d3-time-format": "^2", + "@types/d3-timer": "^1", + "@types/d3-transition": "^1", + "@types/d3-voronoi": "*", + "@types/d3-zoom": "^1" + } + }, + "@types/d3-array": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.9.tgz", + "integrity": "sha512-E/7RgPr2ylT5dWG0CswMi9NpFcjIEDqLcUSBgNHe/EMahfqYaTx4zhcggG3khqoEB/leY4Vl6nTSbwLUPjXceA==", + "dev": true + }, + "@types/d3-axis": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.16.tgz", + "integrity": "sha512-p7085weOmo4W+DzlRRVC/7OI/jugaKbVa6WMQGCQscaMylcbuaVEGk7abJLNyGVFLeCBNrHTdDiqRGnzvL0nXQ==", + "dev": true, + "requires": { + "@types/d3-selection": "^1" + } + }, + "@types/d3-brush": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.1.5.tgz", + "integrity": "sha512-4zGkBafJf5zCsBtLtvDj/pNMo5X9+Ii/1hUz0GvQ+wEwelUBm2AbIDAzJnp2hLDFF307o0fhxmmocHclhXC+tw==", + "dev": true, + "requires": { + "@types/d3-selection": "^1" + } + }, + "@types/d3-chord": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.11.tgz", + "integrity": "sha512-0DdfJ//bxyW3G9Nefwq/LDgazSKNN8NU0lBT3Cza6uVuInC2awMNsAcv1oKyRFLn9z7kXClH5XjwpveZjuz2eg==", + "dev": true + }, + "@types/d3-collection": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.10.tgz", + "integrity": "sha512-54Fdv8u5JbuXymtmXm2SYzi1x/Svt+jfWBU5junkhrCewL92VjqtCBDn97coBRVwVFmYNnVTNDyV8gQyPYfm+A==", + "dev": true + }, + "@types/d3-color": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.2.tgz", + "integrity": "sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA==", + "dev": true + }, + "@types/d3-dispatch": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.9.tgz", + "integrity": "sha512-zJ44YgjqALmyps+II7b1mZLhrtfV/FOxw9owT87mrweGWcg+WK5oiJX2M3SYJ0XUAExBduarysfgbR11YxzojQ==", + "dev": true + }, + "@types/d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-7NeTnfolst1Js3Vs7myctBkmJWu6DMI3k597AaHUX98saHjHWJ6vouT83UrpE+xfbSceHV+8A0JgxuwgqgmqWw==", + "dev": true, + "requires": { + "@types/d3-selection": "^1" + } + }, + "@types/d3-dsv": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-1.2.1.tgz", + "integrity": "sha512-LLmJmjiqp/fTNEdij5bIwUJ6P6TVNk5hKM9/uk5RPO2YNgEu9XvKO0dJ7Iqd3psEdmZN1m7gB1bOsjr4HmO2BA==", + "dev": true + }, + "@types/d3-ease": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.10.tgz", + "integrity": "sha512-fMFTCzd8DOwruE9zlu2O8ci5ct+U5jkGcDS+cH+HCidnJlDs0MZ+TuSVCFtEzh4E5MasItwy+HvgoFtxPHa5Cw==", + "dev": true + }, + "@types/d3-force": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.4.tgz", + "integrity": "sha512-fkorLTKvt6AQbFBQwn4aq7h9rJ4c7ZVcPMGB8X6eFFveAyMZcv7t7m6wgF4Eg93rkPgPORU7sAho1QSHNcZu6w==", + "dev": true + }, + "@types/d3-format": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.2.tgz", + "integrity": "sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ==", + "dev": true + }, + "@types/d3-geo": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.12.3.tgz", + "integrity": "sha512-yZbPb7/5DyL/pXkeOmZ7L5ySpuGr4H48t1cuALjnJy5sXQqmSSAYBiwa6Ya/XpWKX2rJqGDDubmh3nOaopOpeA==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/d3-hierarchy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz", + "integrity": "sha512-AbStKxNyWiMDQPGDguG2Kuhlq1Sv539pZSxYbx4UZeYkutpPwXCcgyiRrlV4YH64nIOsKx7XVnOMy9O7rJsXkg==", + "dev": true + }, + "@types/d3-interpolate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz", + "integrity": "sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg==", + "dev": true, + "requires": { + "@types/d3-color": "^1" + } + }, + "@types/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ==", + "dev": true + }, + "@types/d3-polygon": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.8.tgz", + "integrity": "sha512-1TOJPXCBJC9V3+K3tGbTqD/CsqLyv/YkTXAcwdsZzxqw5cvpdnCuDl42M4Dvi8XzMxZNCT9pL4ibrK2n4VmAcw==", + "dev": true + }, + "@types/d3-quadtree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.9.tgz", + "integrity": "sha512-5E0OJJn2QVavITFEc1AQlI8gLcIoDZcTKOD3feKFckQVmFV4CXhqRFt83tYNVNIN4ZzRkjlAMavJa1ldMhf5rA==", + "dev": true + }, + "@types/d3-queue": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-queue/-/d3-queue-3.0.8.tgz", + "integrity": "sha512-1FWOiI/MYwS5Z1Sa9EvS1Xet3isiVIIX5ozD6iGnwHonGcqL+RcC1eThXN5VfDmAiYt9Me9EWNEv/9J9k9RIKQ==", + "dev": true + }, + "@types/d3-random": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.3.tgz", + "integrity": "sha512-XXR+ZbFCoOd4peXSMYJzwk0/elP37WWAzS/DG+90eilzVbUSsgKhBcWqylGWe+lA2ubgr7afWAOBaBxRgMUrBQ==", + "dev": true + }, + "@types/d3-request": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-request/-/d3-request-1.0.6.tgz", + "integrity": "sha512-4nRKDUBg3EBx8VowpMvM3NAVMiMMI1qFUOYv3OJsclGjHX6xjtu09nsWhRQ0fvSUla3MEjb5Ch4IeaYarMEi1w==", + "dev": true, + "requires": { + "@types/d3-dsv": "^1" + } + }, + "@types/d3-scale": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-1.0.17.tgz", + "integrity": "sha512-baIP5/gw+PS8Axs1lfZCeIjcOXen/jxQmgFEjbYThwaj2drvivOIrJMh2Ig4MeenrogCH6zkhiOxCPRkvN1scA==", + "dev": true, + "requires": { + "@types/d3-time": "^1" + } + }, + "@types/d3-selection": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.3.tgz", + "integrity": "sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA==", + "dev": true + }, + "@types/d3-shape": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz", + "integrity": "sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg==", + "dev": true, + "requires": { + "@types/d3-path": "^1" + } + }, + "@types/d3-time": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.1.tgz", + "integrity": "sha512-ULX7LoqXTCYtM+tLYOaeAJK7IwCT+4Gxlm2MaH0ErKLi07R5lh8NHCAyWcDkCCmx1AfRcBEV6H9QE9R25uP7jw==", + "dev": true + }, + "@types/d3-time-format": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.1.tgz", + "integrity": "sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA==", + "dev": true + }, + "@types/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-ZnAbquVqy+4ZjdW0cY6URp+qF/AzTVNda2jYyOzpR2cPT35FTXl78s15Bomph9+ckOiI1TtkljnWkwbIGAb6rg==", + "dev": true + }, + "@types/d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-J+a3SuF/E7wXbOSN19p8ZieQSFIm5hU2Egqtndbc54LXaAEOpLfDx4sBu/PKAKzHOdgKK1wkMhINKqNh4aoZAg==", + "dev": true, + "requires": { + "@types/d3-selection": "^1" + } + }, + "@types/d3-voronoi": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz", + "integrity": "sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ==", + "dev": true + }, + "@types/d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-3kHkL6sPiDdbfGhzlp5gIHyu3kULhtnHTTAl3UBZVtWB1PzcLL8vdmz5mTx7plLiUqOA2Y+yT2GKjt/TdA2p7Q==", + "dev": true, + "requires": { + "@types/d3-interpolate": "^1", + "@types/d3-selection": "^1" + } + }, + "@types/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ==", + "dev": true + }, + "@types/earcut": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", + "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==", + "dev": true + }, + "@types/ejs": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-2.7.0.tgz", + "integrity": "sha512-kM2g9Fdk/du24fKuuQhA/LBleFR4Z4JP2MVKpLxQQSzofF1uJ06D+c05zfLDAkkDO55aEeNwJih0gHrE/Ci20A==", + "dev": true + }, + "@types/eslint": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/esm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/esm/-/esm-3.2.0.tgz", + "integrity": "sha512-aXemgVPnF1s0PQin04Ei8zTWaNwUdc4pmhZDg8LBW6QEl9kBWVItAUOLGUY5H5xduAmbL1pLGH1X/PN0+4R9tg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", + "dev": true + }, + "@types/gl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/gl/-/gl-4.1.0.tgz", + "integrity": "sha512-XdyM2/Q+XAsdw69t23YD812fY3KDw9dYmULZTOGMFM2tLaweBtcVzUnOwsMzF7i0dvFDL0GnawYwEq/+hvUZtw==", + "dev": true + }, + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/insert-module-globals": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/insert-module-globals/-/insert-module-globals-7.0.2.tgz", + "integrity": "sha512-b+XCUBUioZoveg4e8+D/wGVIvQcuV6TNHPy53aeY0YBydOOZhAtX2Sdr4x97uWKKy9Xrt0SUKsPxbT9e0u/x9Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jsdom": { + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-16.2.13.tgz", + "integrity": "sha512-8JQCjdeAidptSsOcRWk2iTm9wCcwn9l+kRG6k5bzUacrnm1ezV4forq0kWjUih/tumAeoG+OspOvQEbbRucBTw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/parse5": "*", + "@types/tough-cookie": "*" + } + }, + "@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "dev": true + }, + "@types/jsonwebtoken": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz", + "integrity": "sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.171", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.171.tgz", + "integrity": "sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg==", + "dev": true + }, + "@types/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@types/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-4LgHxK16IPbGR7TmXpPvNT7iNGsLCdQY6Rc0mi1a/JECt8et/D4hx6NMVAJej/d932sj1mJsg0QYHKL189O0Qw==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/murmurhash-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/murmurhash-js/-/murmurhash-js-1.0.3.tgz", + "integrity": "sha512-PxJwTlcFOBRPqv9pSoC3O1FpKN8GnM5hMJIkG6U3omH8b4GAh28fO1c+TMR4oxj0BG43/ICbrIK3KBfzad2heg==", + "dev": true + }, + "@types/node": { + "version": "16.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.3.tgz", + "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==", + "dev": true + }, + "@types/node-notifier": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/node-notifier/-/node-notifier-8.0.1.tgz", + "integrity": "sha512-oEaec3j6vw1u0xT/rEniM0yarkV5dZsZvjgTX3IlgekpjDGlv8EGD+Pnpbt3D9IMkoosprPeRtvYc/1t9XBduw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/npm-packlist": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/npm-packlist/-/npm-packlist-1.1.2.tgz", + "integrity": "sha512-9NYoEH87t90e6dkaQOuUTY/R1xUE0a67sXzJBuAB+b+/z4FysHFD19g/O154ToGjyWqKYkezVUtuBdtfd4hyfw==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", + "dev": true + }, + "@types/pbf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.2.tgz", + "integrity": "sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ==", + "dev": true + }, + "@types/pixelmatch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.4.tgz", + "integrity": "sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/pngjs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/pngjs/-/pngjs-3.4.2.tgz", + "integrity": "sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, + "@types/puppeteer": { + "version": "1.20.8", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.20.8.tgz", + "integrity": "sha512-yJZzz9NeEmTxRGaZzUxUtBIEAoVXTtAx40mG8K0eDPwEeWyuxXKC7Lredxs6uNcgbvMDc8xzYy4v54jbbpoqrg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "@types/react": { + "version": "16.14.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.11.tgz", + "integrity": "sha512-Don0MtsZZ3fjwTJ2BsoqkyOy7e176KplEAKOpr/4XDdzinlyJBn9yfsKn5mcSgn4kh1B22+3tBnzBC1z63ybtQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "16.9.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", + "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", + "dev": true, + "requires": { + "@types/react": "^16" + } + }, + "@types/request": { + "version": "2.48.6", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.6.tgz", + "integrity": "sha512-vrZaV3Ij7j/l/3hz6OttZFtpRCu7zlq7XgkYHJP6FwVEAZkGQ095WqyJV08/GlW9eyXKVcp/xmtruHm8eHpw1g==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/rollup-plugin-buble": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@types/rollup-plugin-buble/-/rollup-plugin-buble-0.19.2.tgz", + "integrity": "sha512-GcWqRXqQrBRlyR4u6/xrGjwTpmVLd8Qt91Cf/7hoOtYiU49FLeQoaiACLozKdClYVz7xs/6USIIFFk9zuzsUbw==", + "dev": true, + "requires": { + "@types/buble": "*", + "@types/node": "*", + "rollup": "^0.63.4" + }, + "dependencies": { + "rollup": { + "version": "0.63.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.5.tgz", + "integrity": "sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*" + } + } + } + }, + "@types/rollup-plugin-json": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/rollup-plugin-json/-/rollup-plugin-json-3.0.3.tgz", + "integrity": "sha512-5Y5fTYRCXS1llyLzQ3X1XhDRpw/31jkfWOMpDRgz000d9ABOsdLWDg/f6mqwT8BKGYV/+6tje4uGQnuebuk7dg==", + "dev": true, + "requires": { + "@types/node": "*", + "rollup": "^0.63.4" + }, + "dependencies": { + "rollup": { + "version": "0.63.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.5.tgz", + "integrity": "sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*" + } + } + } + }, + "@types/rollup-plugin-sourcemaps": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@types/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", + "integrity": "sha512-dqF1rMFy4O8yNlQYwYPos5Cfav0f6M7PLH8B33gsslQ0zA9MX1jMGokwNuJ3Z3EXAzsKF/xAWNHpFmELcgYJww==", + "dev": true, + "requires": { + "@types/node": "*", + "rollup": "^0.63.4" + }, + "dependencies": { + "rollup": { + "version": "0.63.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.5.tgz", + "integrity": "sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*" + } + } + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.0.15.tgz", + "integrity": "sha512-5760PIZkzhPejy3hsKAdCKe5LJygGdxLKOLxmZL9GEUcFlO5OgzM6G2EbdbvOnaw4xvUSa9Uip6Ipwkih12BPA==", + "dev": true + }, + "@types/shuffle-seed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/shuffle-seed/-/shuffle-seed-1.1.0.tgz", + "integrity": "sha512-h6UW72XuE07bSDVTkNjMMapFj6ERJmvf+RajssOoEIVhuU53/+zyCSBjBrSpDJSzVYjGr4CYxW3ABrY0C6s8qA==", + "dev": true + }, + "@types/sinon": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz", + "integrity": "sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg==", + "dev": true + }, + "@types/stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npmjs.org/@types/stylelint/-/stylelint-9.10.1.tgz", + "integrity": "sha512-au+n/CjGixNopJmh51GeZSkqf/ahwOBkzcvizHPe3flfwWag0T+/L7uHD0Hjx7ZhmXGFSEwOCqEybD4domcyRw==", + "dev": true, + "requires": { + "postcss": "7.x.x" + } + }, + "@types/supercluster": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-5.0.3.tgz", + "integrity": "sha512-XMSqQEr7YDuNtFwSgaHHOjsbi0ZGL62V9Js4CW45RBuRYlNWSW/KDqN+RFFE7HdHcGhJPtN0klKvw06r9Kg7rg==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/tape": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.1.tgz", + "integrity": "sha512-p6eHt3Yi7C9o7lpjchpVnfKb3ldFjHR/1sBaQdpuZnjAFtsc2UgsFlu+XKQH2l5pgt98oFcINYNTRAwWbrZjnw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/tough-cookie": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz", + "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==", + "dev": true + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", + "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", + "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", + "dev": true, + "requires": { + "vfile-message": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz", + "integrity": "sha512-jW8sEFu1ZeaV8xzwsfi6Vgtty2jf7/lJmQmDkDruBjYAbx5DA8JtbcMnP0rNPUG+oH5GoQBTSp+9613BzuIpYg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.28.3", + "@typescript-eslint/scope-manager": "4.28.3", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.3.tgz", + "integrity": "sha512-zZYl9TnrxwEPi3FbyeX0ZnE8Hp7j3OCR+ELoUfbwGHGxWnHg9+OqSmkw2MoCVpZksPCZYpQzC559Ee9pJNHTQw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.3", + "@typescript-eslint/types": "4.28.3", + "@typescript-eslint/typescript-estree": "4.28.3", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.3.tgz", + "integrity": "sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.28.3", + "@typescript-eslint/types": "4.28.3", + "@typescript-eslint/typescript-estree": "4.28.3", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz", + "integrity": "sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.3", + "@typescript-eslint/visitor-keys": "4.28.3" + } + }, + "@typescript-eslint/types": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.3.tgz", + "integrity": "sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz", + "integrity": "sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.3", + "@typescript-eslint/visitor-keys": "4.28.3", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz", + "integrity": "sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.3", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "JSV": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", + "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "async-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", + "integrity": "sha1-SppaidBl7F2OUlS9nulrp2xTK1o=", + "dev": true, + "requires": { + "lru-cache": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "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=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true + }, + "babylon": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", + "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", + "dev": true + }, + "backbone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", + "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", + "dev": true, + "requires": { + "underscore": ">=1.8.3" + }, + "dependencies": { + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", + "dev": true + } + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bind-obj-methods": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.2.tgz", + "integrity": "sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bit-twiddle": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4=", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "requires": { + "resolve": "^1.17.0" + } + }, + "browserify": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "buble": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", + "integrity": "sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==", + "dev": true, + "requires": { + "acorn": "^6.1.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.0.1", + "chalk": "^2.4.2", + "magic-string": "^0.25.3", + "minimist": "^1.2.0", + "os-homedir": "^2.0.0", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "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==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cached-path-relative": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-matcher": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-2.0.0.tgz", + "integrity": "sha512-CIDC5wZZfZ2VjZu849WQckS58Z3pJXFfRaSjNjgo/q3in5zxkhTwVL83vttgtmvyLG7TuDlLlBya7SKP6CjDIA==", + "dev": true, + "requires": { + "deep-equal": "^1.0.0", + "espurify": "^2.0.0", + "estraverse": "^4.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", + "dev": true + }, + "canvas": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz", + "integrity": "sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q==", + "dev": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.14.0", + "simple-get": "^3.0.3" + } + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "charm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", + "integrity": "sha1-it02cVOm2aWBMxBSxAkJkdqZXjU=", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-regexp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", + "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "dev": true, + "requires": { + "is-regexp": "^1.0.0", + "is-supported-regexp-flag": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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=", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.0.tgz", + "integrity": "sha512-4ximSqKXLTQmYLJuvrRHtpOqniR+ASoaVK+Rxdy6ZpfsLvUqtIM7oGGgopRG+O4p9NRv/AfuVD3jsvdxyXqozQ==", + "dev": true, + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "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=", + "dev": true + }, + "color-string": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "comment-parser": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", + "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js-compat": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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=", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "coveralls": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", + "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.2" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha1-s085HupNqPPpgjHizNjfnAQfFxs=" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d3": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz", + "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==", + "dev": true, + "requires": { + "d3-array": "1.2.1", + "d3-axis": "1.0.8", + "d3-brush": "1.0.4", + "d3-chord": "1.0.4", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-dsv": "1.0.8", + "d3-ease": "1.0.3", + "d3-force": "1.1.0", + "d3-format": "1.2.2", + "d3-geo": "1.9.1", + "d3-hierarchy": "1.1.5", + "d3-interpolate": "1.1.6", + "d3-path": "1.0.5", + "d3-polygon": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-queue": "3.0.7", + "d3-random": "1.1.0", + "d3-request": "1.0.6", + "d3-scale": "1.0.7", + "d3-selection": "1.3.0", + "d3-shape": "1.2.0", + "d3-time": "1.0.8", + "d3-time-format": "2.1.1", + "d3-timer": "1.0.7", + "d3-transition": "1.1.1", + "d3-voronoi": "1.1.2", + "d3-zoom": "1.7.1" + } + }, + "d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==", + "dev": true + }, + "d3-axis": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", + "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=", + "dev": true + }, + "d3-brush": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", + "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", + "dev": true, + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", + "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", + "dev": true, + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-collection": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", + "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=", + "dev": true + }, + "d3-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", + "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=", + "dev": true + }, + "d3-dispatch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", + "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=", + "dev": true + }, + "d3-drag": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", + "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", + "dev": true, + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", + "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", + "dev": true, + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", + "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=", + "dev": true + }, + "d3-force": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", + "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", + "dev": true, + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz", + "integrity": "sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw==", + "dev": true + }, + "d3-geo": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz", + "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==", + "dev": true, + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", + "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=", + "dev": true + }, + "d3-interpolate": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", + "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", + "dev": true, + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", + "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=", + "dev": true + }, + "d3-polygon": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", + "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=", + "dev": true + }, + "d3-quadtree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", + "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=", + "dev": true + }, + "d3-queue": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", + "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=", + "dev": true + }, + "d3-random": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", + "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=", + "dev": true + }, + "d3-request": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", + "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", + "dev": true, + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-dsv": "1", + "xmlhttprequest": "1" + } + }, + "d3-scale": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", + "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", + "dev": true, + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-color": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-selection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", + "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==", + "dev": true + }, + "d3-shape": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", + "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", + "dev": true, + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz", + "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==", + "dev": true + }, + "d3-time-format": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz", + "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==", + "dev": true, + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", + "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==", + "dev": true + }, + "d3-transition": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", + "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", + "dev": true, + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=", + "dev": true + }, + "d3-zoom": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz", + "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==", + "dev": true, + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.8.1.tgz", + "integrity": "sha512-g213uqF8fyk40W8SBjm079n3CZB4qSpCrA2ye1fLGzH/4HEgB6tzuW2CbLE7leb4t45/6h44Ud59Su1/ROTfqw==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dev": true, + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "doctrine-temporary-fork": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz", + "integrity": "sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "documentation": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/documentation/-/documentation-12.1.4.tgz", + "integrity": "sha512-GGS635tR8bBR/m/AuUZ6MCZmFXZA25Wk9S/TTHNe+EMkTCoDdlcft56dZCjF7voCmfnMqKRo8sXAukf/ciA5IA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.2", + "@babel/generator": "^7.1.3", + "@babel/parser": "7.1.3", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-decorators": "^7.1.2", + "@babel/plugin-proposal-do-expressions": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-function-bind": "^7.0.0", + "@babel/plugin-proposal-function-sent": "^7.1.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-proposal-pipeline-operator": "^7.0.0", + "@babel/plugin-proposal-throw-expressions": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/preset-env": "^7.1.0", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@babel/preset-stage-0": "^7.0.0", + "@babel/traverse": "^7.1.4", + "@babel/types": "^7.1.3", + "ansi-html": "^0.0.7", + "babelify": "^10.0.0", + "chalk": "^2.3.0", + "chokidar": "^2.0.4", + "concat-stream": "^1.6.0", + "diff": "^4.0.1", + "doctrine-temporary-fork": "2.1.0", + "get-port": "^4.0.0", + "git-url-parse": "^11.1.2", + "github-slugger": "1.2.0", + "glob": "^7.1.2", + "globals-docs": "^2.4.0", + "highlight.js": "^9.15.5", + "ini": "^1.3.5", + "js-yaml": "^3.10.0", + "lodash": "^4.17.10", + "mdast-util-inject": "^1.1.0", + "micromatch": "^3.1.5", + "mime": "^2.2.0", + "module-deps-sortable": "5.0.0", + "parse-filepath": "^1.0.2", + "pify": "^4.0.0", + "read-pkg-up": "^4.0.0", + "remark": "^9.0.0", + "remark-html": "^8.0.0", + "remark-reference-links": "^4.0.1", + "remark-toc": "^5.0.0", + "resolve": "^1.8.1", + "stream-array": "^1.1.2", + "strip-json-comments": "^2.0.1", + "tiny-lr": "^1.1.0", + "unist-builder": "^1.0.2", + "unist-util-visit": "^1.3.0", + "vfile": "^4.0.0", + "vfile-reporter": "^6.0.0", + "vfile-sort": "^2.1.0", + "vinyl": "^2.1.0", + "vinyl-fs": "^3.0.2", + "vue-template-compiler": "^2.5.16", + "yargs": "^12.0.2" + }, + "dependencies": { + "@babel/parser": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz", + "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "module-deps-sortable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz", + "integrity": "sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.0", + "defined": "^1.0.0", + "detective": "^4.0.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2", + "resolve": "^1.1.3", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~2.0.0", + "typedarray": "~0.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + } + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "vfile-reporter": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz", + "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==", + "dev": true, + "requires": { + "repeat-string": "^1.5.0", + "string-width": "^4.0.0", + "supports-color": "^6.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-sort": "^2.1.2", + "vfile-statistics": "^1.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "earcut": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.3.tgz", + "integrity": "sha512-iRDI1QeCQIhMCZk48DRDMVgQSSBDmbzzNhnxIo+pwx3swkfjMh6vh0nWLq1NdvGHLKH6wIrAM3vQWeTj6qeoug==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.779", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz", + "integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", + "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "dev": true, + "requires": { + "string-template": "~0.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-mourner": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-mourner/-/eslint-config-mourner-3.0.0.tgz", + "integrity": "sha512-QWMt3Cbqkhg/73fZ2UrTNa/p27nF3JhI1Ej2Jg7qSBri88Y0bg4LFzz0/6I5IrvFR10c6UPwDS+DsV9Ec42aVQ==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", + "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", + "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-html": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz", + "integrity": "sha512-v/33i3OD0fuXcRXexVyXXBOe4mLBLBQoF1UO1Uy9D+XLq4MC8K45GcQKfqjC/FnHAHp3pYUjpHHktYNCtShGmg==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "eslint-plugin-import": { + "version": "2.23.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", + "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.1", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.4.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "eslint-plugin-jsdoc": { + "version": "30.7.13", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.13.tgz", + "integrity": "sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==", + "dev": true, + "requires": { + "comment-parser": "^0.7.6", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.4", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", + "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "esm": { + "version": "3.0.84", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.84.tgz", + "integrity": "sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "espurify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.1.1.tgz", + "integrity": "sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true + }, + "events-to-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", + "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "dev": true, + "requires": { + "clone-regexp": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz", + "integrity": "sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==", + "dev": true + }, + "fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", + "integrity": "sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==", + "dev": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + }, + "dependencies": { + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", + "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", + "dev": true + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "dev": true + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fireworm": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/fireworm/-/fireworm-0.7.1.tgz", + "integrity": "sha1-zPIPeUHxCIg/zduZOD2+bhhhx1g=", + "dev": true, + "requires": { + "async": "~0.2.9", + "is-type": "0.0.1", + "lodash.debounce": "^3.1.1", + "lodash.flatten": "^3.0.2", + "minimatch": "^3.0.2" + }, + "dependencies": { + "lodash.debounce": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-3.1.1.tgz", + "integrity": "sha1-gSIRw3ipTMKdWqTjNGzwv846ffU=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0" + } + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flow-bin": { + "version": "0.100.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.100.0.tgz", + "integrity": "sha512-jcethhgrslBJukH7Z7883ohFFpzLrdsOEwHxvn5NwuTWbNaE71GAl55/PEBRJwYpDvYkRlqgcNkANTv0x5XjqA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function-loop": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", + "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-npm-tarball-url": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.2.tgz", + "integrity": "sha512-2dPhgT0K4pVyciTqdS0gr9nEwyCQwt9ql1/t5MCUMvcjWjAysjGJgT7Sx4n6oq3tFBjBN238mxX4RfTjT3838Q==", + "dev": true, + "requires": { + "normalize-registry-url": "^1.0.0" + } + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "git-url-parse": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.5.0.tgz", + "integrity": "sha512-TZYSMDeM37r71Lqg1mbnMlOqlHd7BSij9qN7XwTkRqSAYFMihGLGhfHwgqQob3GUhEneKnV4nskN9rbQw2KGxA==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "github-slugger": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz", + "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==", + "dev": true, + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "gl": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/gl/-/gl-4.9.0.tgz", + "integrity": "sha512-5Qz8fM4kO4xTo/Ofv80hq/iXEGNlMxOCSo1+9cvT9CX/j84tIFBsbFLXkBVFZiKulA3H2VPQGSs0qZIMwv3KEA==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "bit-twiddle": "^1.0.2", + "glsl-tokenizer": "^2.0.2", + "nan": "^2.14.1", + "node-abi": "^2.18.0", + "node-gyp": "^7.1.0", + "prebuild-install": "^5.3.5" + } + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globals-docs": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.1.tgz", + "integrity": "sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "glsl-tokenizer": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", + "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "dev": true, + "requires": { + "through2": "^0.6.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "dev": true + }, + "hast-util-sanitize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-1.3.1.tgz", + "integrity": "sha512-AIeKHuHx0Wk45nSkGVa2/ujQYTksnDl8gmmKo/mwQi7ag7IBZ8cM3nJ2G86SajbjGP/HRpud6kMkPtcM2i0Tlw==", + "dev": true, + "requires": { + "xtend": "^4.0.1" + } + }, + "hast-util-to-html": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz", + "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.1", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^1.0.1", + "unist-util-is": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "unist-util-is": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz", + "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==", + "dev": true + } + } + }, + "hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", + "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "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==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "dev": true + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, + "is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true + }, + "is-supported-regexp-flag": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", + "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-type": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/is-type/-/is-type-0.0.1.tgz", + "integrity": "sha1-9lHYXDZdRJVdFKUdjXBh8/a0d5w=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, + "jsdom": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", + "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.5", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "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==", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-pretty-compact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==", + "dev": true + }, + "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=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonlint-lines": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/jsonlint-lines/-/jsonlint-lines-1.7.1.tgz", + "integrity": "sha1-UH3mgNP7jEvhZBzFfW9nnynxeP8=", + "dev": true, + "requires": { + "JSV": ">= 4.0.x", + "nomnom": ">= 1.5.x" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + } + }, + "jszip": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz", + "integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "known-css-properties": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.11.0.tgz", + "integrity": "sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==", + "dev": true + }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", + "dev": true + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "list-npm-contents": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/list-npm-contents/-/list-npm-contents-1.0.2.tgz", + "integrity": "sha512-cpAkA9+ioEqHnxTuh3UDRewX+obC3mTr9dlYRVnTt0riggK+0IdKIed7BPn1BgkBQP+TVHiso4Rj0ZxGaXzh1Q==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "get-npm-tarball-url": "^2.0.0", + "got": "^6.7.1", + "is-url": "^1.2.2", + "ls-archive": "^1.2.3", + "meow": "^3.3.0", + "registry-url": "^4.0.0", + "tmp": "0.0.31" + }, + "dependencies": { + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._baseflatten": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz", + "integrity": "sha1-B3D/gBMa9uNPO1EXlqe6UhTmX/c=", + "dev": true, + "requires": { + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", + "dev": true + }, + "lodash.flatten": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-3.0.2.tgz", + "integrity": "sha1-3hz1d1j49EeTGdNcPpzGDEUBk4w=", + "dev": true, + "requires": { + "lodash._baseflatten": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "lolex": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ls-archive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ls-archive/-/ls-archive-1.3.4.tgz", + "integrity": "sha512-7GmjZOckV+gzm4PM1/LcWIsZIRsSkAVmIchoEf5xjquNKU0Ti5KUvGQ3dl/7VsbZIduMOPwRDXrvpo3LVJ0Pmg==", + "dev": true, + "requires": { + "async": "~0.2.9", + "colors": "~0.6.2", + "optimist": "~0.5.2", + "rimraf": "~2.2.6", + "tar": "^2.2.1", + "yauzl": "^2.9.1" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + } + } + }, + "macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mapbox-gl-styles": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mapbox-gl-styles/-/mapbox-gl-styles-2.0.2.tgz", + "integrity": "sha1-u1Jbd+oNwrBBu4BRZFF283g+KUo=", + "dev": true, + "requires": { + "glob": "^5.0.14" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "mdast-util-definitions": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz", + "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==", + "dev": true, + "requires": { + "unist-util-visit": "^1.0.0" + } + }, + "mdast-util-inject": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz", + "integrity": "sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU=", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.0" + } + }, + "mdast-util-to-hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz", + "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.0", + "detab": "^2.0.0", + "mdast-util-definitions": "^1.2.0", + "mdurl": "^1.0.1", + "trim": "0.0.1", + "trim-lines": "^1.0.0", + "unist-builder": "^1.0.1", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.0", + "xtend": "^4.0.1" + } + }, + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true + }, + "mdast-util-toc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz", + "integrity": "sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==", + "dev": true, + "requires": { + "github-slugger": "^1.2.1", + "mdast-util-to-string": "^1.0.5", + "unist-util-is": "^2.1.2", + "unist-util-visit": "^1.1.0" + }, + "dependencies": { + "github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "dev": true, + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "unist-util-is": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz", + "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==", + "dev": true + } + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "requires": { + "mime-db": "1.48.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "mock-geolocation": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/mock-geolocation/-/mock-geolocation-1.0.11.tgz", + "integrity": "sha1-LHuZJCoscNvs0xezkrMDEXIpksg=", + "dev": true + }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multi-stage-sourcemap": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.3.1.tgz", + "integrity": "sha512-UiTLYjqeIoVnJHyWGskwMKIhtZKK9uXUjSTWuwatarrc0d2H/6MAVFdwvEA/aKOHamIn7z4tfvxjz+FYucFpNQ==", + "dev": true, + "requires": { + "source-map": "^0.1.34" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=" + }, + "mustache": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.2.1.tgz", + "integrity": "sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA==", + "dev": true + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + } + } + }, + "node-abi": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", + "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-nailgun-client": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/node-nailgun-client/-/node-nailgun-client-0.1.2.tgz", + "integrity": "sha512-OC611lR0fsDUSptwnhBf8d3sj4DZ5fiRKfS2QaGPe0kR3Dt9YoZr1MY7utK0scFPTbXuQdSBBbeoKYVbME1q5g==", + "dev": true, + "requires": { + "commander": "^2.8.1" + } + }, + "node-nailgun-server": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/node-nailgun-server/-/node-nailgun-server-0.1.4.tgz", + "integrity": "sha512-e0Hbh6XPb/7GqATJ45BePaUEO5AwR7InRW/pGeMKHH1cqPMBFCeqdBNfvi+bkVLnsbYOOQE+pAek9nmNoD8sYw==", + "dev": true, + "requires": { + "commander": "^2.8.1" + } + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-plantuml": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-plantuml/-/node-plantuml-0.9.0.tgz", + "integrity": "sha512-bUnntTGjbpYu1pvXZI/GS6ctcXf3AOMqJxBMO8vFzTT5RwH8Cj/J5Ca6Dy+PEfMiMDdSBCFKSGnvYyBvYnucXg==", + "dev": true, + "requires": { + "commander": "^2.8.1", + "node-nailgun-client": "^0.1.0", + "node-nailgun-server": "^0.1.4", + "plantuml-encoder": "^1.2.5" + } + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-registry-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-registry-url/-/normalize-registry-url-1.0.0.tgz", + "integrity": "sha512-0v6T4851b72ykk5zEtFoN4QX/Fqyk7pouIj9xZyAvAe9jlDhAwT4z6FlwsoQCHjeuK2EGUoAwy/F4y4B1uZq9A==", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-font-open-sans": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/npm-font-open-sans/-/npm-font-open-sans-1.1.0.tgz", + "integrity": "sha512-t1y5ShWm6a8FSLwBdINT47XYMcuKY2rkTBsTdz/76YB2MtX0YD89RUkY2eSS2/XOmlZfBe1HFBAwD+b9+/UfmQ==", + "dev": true + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "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=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "nyc": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", + "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^3.0.1", + "convert-source-map": "^1.6.0", + "find-cache-dir": "^2.0.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.1", + "make-dir": "^1.3.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.1.0", + "uuid": "^3.3.2", + "yargs": "^12.0.5", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "caching-transform": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "hasha": "^3.0.0", + "make-dir": "^1.3.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.3.0" + } + }, + "camelcase": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commander": { + "version": "2.17.1", + "bundled": true, + "dev": true, + "optional": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "execa": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "find-cache-dir": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "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" + } + }, + "graceful-fs": { + "version": "4.1.15", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "hasha": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.1.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "bundled": true, + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "package-hash": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" + } + }, + "uglify-js": { + "version": "3.4.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "uuid": { + "version": "3.3.2", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.4.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "12.0.5", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", + "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "object.fromentries": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optimist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.5.2.tgz", + "integrity": "sha1-hcjBRUszFeSniUfoV7HfAzRQv7w=", + "dev": true, + "requires": { + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-2.0.0.tgz", + "integrity": "sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "own-or": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", + "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", + "dev": true + }, + "own-or-env": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", + "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", + "dev": true, + "requires": { + "own-or": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + } + }, + "parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + } + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "requires": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "requires": { + "pngjs": "^4.0.1" + }, + "dependencies": { + "pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true + } + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "plantuml-encoder": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==", + "dev": true + }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-cli": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-6.1.3.tgz", + "integrity": "sha512-eieqJU+OR1OFc/lQqMsDmROTJpoMZFvoAQ+82utBQ8/8qGMTfH9bBSPsTdsagYA8uvNzxHw2I2cNSSJkLAGhvw==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "chokidar": "^2.0.0", + "dependency-graph": "^0.8.0", + "fs-extra": "^7.0.0", + "get-stdin": "^6.0.0", + "globby": "^9.0.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "postcss-reporter": "^6.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "yargs": "^12.0.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-inline-svg": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-3.1.1.tgz", + "integrity": "sha512-G2BkarW6gGpGFGAiKzW7aiulUS0/6QuCgq1riZEiX4oMaUTpU1pdW7BU6UFRDrdKkwS0r4icK2pU0bg6sCSOjw==", + "dev": true, + "requires": { + "css-select": "^1.2.0", + "dom-serializer": "^0.1.0", + "htmlparser2": "^3.9.0", + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-jsx": { + "version": "0.36.4", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", + "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", + "dev": true, + "requires": { + "@babel/core": ">=7.2.2" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", + "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "dev": true, + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + }, + "dependencies": { + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", + "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "dev": true, + "requires": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", + "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", + "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", + "dev": true, + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "potpack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz", + "integrity": "sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==" + }, + "prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "printf": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/printf/-/printf-0.6.1.tgz", + "integrity": "sha512-is0ctgGdPJ5951KulgfzvHGwJtZ5ck8l042vRkV6jrkpBzTmb/lueTqguWHy2JfVA+RY6gFVlaZgUS0j7S/dsw==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "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==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-information": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", + "integrity": "sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==", + "dev": true, + "requires": { + "xtend": "^4.0.1" + } + }, + "protocol-buffers-schema": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.5.1.tgz", + "integrity": "sha512-YVCvdhxWNDP8/nJDyXLuM+UFsuPk4+1PB7WGPVDzm3HTHbzFLxQYeW2iZpS4mmnXrQJGBzt230t/BbEb7PrQaw==" + }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "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" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "registry-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-4.0.0.tgz", + "integrity": "sha512-WAfGLywivb8s2+Cfblq1UV+kOyzURHzWSJmciDvrmstr4bv/0lnVSB9jfoOfkxx5xNJ1OGlSFmZh9WYBLFJOPg==", + "dev": true, + "requires": { + "rc": "^1.2.7" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remark": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", + "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", + "dev": true, + "requires": { + "remark-parse": "^5.0.0", + "remark-stringify": "^5.0.0", + "unified": "^6.0.0" + } + }, + "remark-html": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-8.0.0.tgz", + "integrity": "sha512-3V2391GL3hxKhrkzYOyfPpxJ6taIKLCfuLVqumeWQOk3H9nTtSQ8St8kMYkBVIEAquXN1chT83qJ/2lAW+dpEg==", + "dev": true, + "requires": { + "hast-util-sanitize": "^1.0.0", + "hast-util-to-html": "^4.0.0", + "mdast-util-to-hast": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-parse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", + "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-reference-links": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/remark-reference-links/-/remark-reference-links-4.0.4.tgz", + "integrity": "sha512-+2X8hwSQqxG4tvjYZNrTcEC+bXp8shQvwRGG6J/rnFTvBoU4G0BBviZoqKGZizLh/DG+0gSYhiDDWCqyxXW1iQ==", + "dev": true, + "requires": { + "unist-util-visit": "^1.0.0" + } + }, + "remark-slug": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-5.1.2.tgz", + "integrity": "sha512-DWX+Kd9iKycqyD+/B+gEFO3jjnt7Yg1O05lygYSNTe5i5PIxxxPjp5qPBDxPIzp5wreF7+1ROCwRgjEcqmzr3A==", + "dev": true, + "requires": { + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^1.0.0", + "unist-util-visit": "^1.0.0" + } + }, + "remark-stringify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", + "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "remark-toc": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/remark-toc/-/remark-toc-5.1.1.tgz", + "integrity": "sha512-vCPW4YOsm2CfyuScdktM9KDnJXVHJsd/ZeRtst+dnBU3B3KKvt8bc+bs5syJjyptAHfqo7H+5Uhz+2blWBfwow==", + "dev": true, + "requires": { + "mdast-util-toc": "^3.0.0", + "remark-slug": "^5.0.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "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.3", + "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.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-buble": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.19.8.tgz", + "integrity": "sha512-8J4zPk2DQdk3rxeZvxgzhHh/rm5nJkjwgcsUYisCQg1QbT5yagW+hehYEW7ZNns/NVbDCTv4JQ7h4fC8qKGOKw==", + "dev": true, + "requires": { + "buble": "^0.19.8", + "rollup-pluginutils": "^2.3.3" + } + }, + "rollup-plugin-commonjs": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", + "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0", + "rollup-pluginutils": "^2.8.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "rollup-plugin-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", + "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.5.0" + } + }, + "rollup-plugin-node-resolve": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", + "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", + "dev": true, + "requires": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-replace": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", + "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", + "dev": true, + "requires": { + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.6.0" + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", + "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.0.1", + "source-map-resolve": "^0.5.0" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + } + }, + "rollup-plugin-unassert": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-unassert/-/rollup-plugin-unassert-0.3.0.tgz", + "integrity": "sha512-mdRJ8AinuNdtoS9L+CXVQcoaHLHV+eeEV5b9u76ai3yxOWp3t1oXQOuDjRmRiIjOYWYxCkSYiFQH72QoPdDfwQ==", + "dev": true, + "requires": { + "acorn": "^6.1.1", + "convert-source-map": "^1.6.0", + "escodegen": "^1.11.1", + "multi-stage-sourcemap": "^0.3.1", + "rollup-pluginutils": "^2.5.0", + "unassert": "^1.5.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "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==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "seedrandom": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.4.tgz", + "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==", + "dev": true + }, + "selenium-webdriver": { + "version": "4.0.0-beta.4", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.4.tgz", + "integrity": "sha512-+s/CIYkWzmnC9WASBxxVj7Lm0dcyl6OaFxwIJaFCT5WCuACiimEEr4lUnOOFP/QlKfkDQ56m+aRczaq2EvJEJg==", + "dev": true, + "requires": { + "jszip": "^3.6.0", + "rimraf": "^3.0.2", + "tmp": "^0.2.1", + "ws": ">=7.4.6" + }, + "dependencies": { + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "shuffle-seed": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/shuffle-seed/-/shuffle-seed-1.1.6.tgz", + "integrity": "sha1-UzwSaDurO0+j6HUfxOViFGdEJgs=", + "dev": true, + "requires": { + "seedrandom": "^2.4.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz", + "integrity": "sha512-tLkaY13RcO4nIRh1K2hT5iuotfTaIQw7cVIe0FUykN3SuQi0cm7ALxuyT5/CtDswOMWUzMGTibxYNx/gU7In+Q==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.10", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~5.1.1", + "socket.io-adapter": "~2.3.1", + "socket.io-parser": "~4.0.4" + } + }, + "socket.io-adapter": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", + "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==", + "dev": true + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-explorer": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.2.tgz", + "integrity": "sha512-gBwOyCcHPHcdLbgw6Y6kgoH1uLKL6hN3zz0xJcNI2lpnElZliIlmSYAjUVwAWnc7+HscoTyh1ScR7ITtFuEnxg==", + "dev": true, + "requires": { + "btoa": "^1.2.1", + "chalk": "^4.1.0", + "convert-source-map": "^1.7.0", + "ejs": "^3.1.5", + "escape-html": "^1.0.3", + "glob": "^7.1.6", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "open": "^7.3.1", + "source-map": "^0.7.3", + "temp": "^0.9.4", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, + "spawn-args": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", + "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "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" + } + }, + "st": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/st/-/st-1.2.2.tgz", + "integrity": "sha512-goKkumvz0BMLs6KjjPf5Fub/3T34tRVQxInUI5lqtbaKD+s4HcRlJYP2GPJ8RgAmrsnYOPGmOFEP6ho0KJ+E8g==", + "dev": true, + "requires": { + "async-cache": "~1.1.0", + "bl": "~1.2.1", + "fd": "~0.0.2", + "graceful-fs": "~4.1.11", + "mime": "~1.4.1", + "negotiator": "~0.6.1" + }, + "dependencies": { + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true, + "optional": true + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/stream-array/-/stream-array-1.1.2.tgz", + "integrity": "sha1-nl9zRfITfDDuO0mLkRToC1K7frU=", + "dev": true, + "requires": { + "readable-stream": "~2.1.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "dev": true, + "requires": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", + "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.padend": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "string.prototype.trim": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", + "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "styled_string": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/styled_string/-/styled_string-0.0.1.tgz", + "integrity": "sha1-0ieCvYEpVFm8Tx3xjEutjpTdEko=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylelint": { + "version": "9.10.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-9.10.1.tgz", + "integrity": "sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==", + "dev": true, + "requires": { + "autoprefixer": "^9.0.0", + "balanced-match": "^1.0.0", + "chalk": "^2.4.1", + "cosmiconfig": "^5.0.0", + "debug": "^4.0.0", + "execall": "^1.0.0", + "file-entry-cache": "^4.0.0", + "get-stdin": "^6.0.0", + "global-modules": "^2.0.0", + "globby": "^9.0.0", + "globjoin": "^0.1.4", + "html-tags": "^2.0.0", + "ignore": "^5.0.4", + "import-lazy": "^3.1.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.11.0", + "leven": "^2.1.0", + "lodash": "^4.17.4", + "log-symbols": "^2.0.0", + "mathml-tag-names": "^2.0.1", + "meow": "^5.0.0", + "micromatch": "^3.1.10", + "normalize-selector": "^0.2.0", + "pify": "^4.0.0", + "postcss": "^7.0.13", + "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.0", + "postcss-less": "^3.1.0", + "postcss-markdown": "^0.36.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.0", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.0", + "postcss-sass": "^0.3.5", + "postcss-scss": "^2.0.0", + "postcss-selector-parser": "^3.1.0", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^3.3.0", + "resolve-from": "^4.0.0", + "signal-exit": "^3.0.2", + "slash": "^2.0.0", + "specificity": "^0.4.1", + "string-width": "^3.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "file-entry-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-4.0.0.tgz", + "integrity": "sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha512-bZ+d4RiNEfmoR74KZtCKmsABdBJr4iXRiCso+6LtMJPw5rd/KnxUWTxht7TbafrTJK1YRjNgnN0iVZaJfc3xJA==", + "dev": true + }, + "stylelint-config-standard": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-18.3.0.tgz", + "integrity": "sha512-Tdc/TFeddjjy64LvjPau9SsfVRexmTFqUhnMBrzz07J4p2dVQtmpncRF/o8yZn8ugA3Ut43E6o1GtjX80TFytw==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^2.2.0" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "^1.1.0" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-7+bR4FbF5SYsmkHfDp61QiwCKtwNDyPsddk9TzfsDA5DQr5Goii5CVD2SXjglweFCxjrzVZf945ahqYfUIk8UA==", + "requires": { + "kdbush": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "requires": { + "acorn-node": "^1.2.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tap": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/tap/-/tap-12.4.1.tgz", + "integrity": "sha512-hWh6V5cIIHwvXwmNb3fL/3athC9NyZuL4ZoiyHUHXqRAJJ6/SBmGX7IOfzj/Pf7EzFy9JwDCw/64eOyKx8XikA==", + "dev": true, + "requires": { + "bind-obj-methods": "^2.0.0", + "browser-process-hrtime": "^1.0.0", + "capture-stack-trace": "^1.0.0", + "clean-yaml-object": "^0.1.0", + "color-support": "^1.1.0", + "coveralls": "^3.0.2", + "domain-browser": "^1.2.0", + "foreground-child": "^1.3.3", + "fs-exists-cached": "^1.0.0", + "function-loop": "^1.0.1", + "glob": "^7.1.3", + "isexe": "^2.0.0", + "js-yaml": "^3.12.1", + "minipass": "^2.3.5", + "mkdirp": "^0.5.1", + "nyc": "^13.1.0", + "opener": "^1.5.1", + "os-homedir": "^1.0.2", + "own-or": "^1.0.0", + "own-or-env": "^1.0.1", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.0", + "source-map-support": "^0.5.10", + "stack-utils": "^1.0.2", + "tap-mocha-reporter": "^3.0.7", + "tap-parser": "^7.0.0", + "tmatch": "^4.0.0", + "trivial-deferred": "^1.0.1", + "ts-node": "^8.0.1", + "tsame": "^2.0.1", + "typescript": "^3.2.4", + "write-file-atomic": "^2.3.0", + "yapool": "^1.0.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tap-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", + "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "js-yaml": "^3.2.7", + "minipass": "^2.2.0" + } + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "tap-mocha-reporter": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", + "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", + "dev": true, + "requires": { + "color-support": "^1.1.0", + "debug": "^2.1.3", + "diff": "^1.3.2", + "escape-string-regexp": "^1.0.3", + "glob": "^7.0.5", + "js-yaml": "^3.3.1", + "readable-stream": "^2.1.5", + "tap-parser": "^5.1.0", + "unicode-length": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "tap-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", + "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "js-yaml": "^3.2.7", + "readable-stream": "^2" + } + } + } + }, + "tap-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-10.1.0.tgz", + "integrity": "sha512-FujQeciDaOiOvaIVGS1Rpb0v4R6XkOjvWCWowlz5oKuhPkEJ8U6pxgqt38xuzYhPt8dWEnfHn2jqpZdJEkW7pA==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "minipass": "^3.0.0", + "tap-yaml": "^1.0.0" + } + }, + "tap-yaml": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", + "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", + "dev": true, + "requires": { + "yaml": "^1.5.0" + } + }, + "tape": { + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.3.tgz", + "integrity": "sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==", + "dev": true, + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.5", + "object-inspect": "~1.7.0", + "resolve": "~1.17.0", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "dependencies": { + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "tape-filter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tape-filter/-/tape-filter-1.0.4.tgz", + "integrity": "sha1-HWN6wGTVGSbzOa2I9kLrD4fKncc=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "testem": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/testem/-/testem-3.4.2.tgz", + "integrity": "sha512-5undkzAltqE9fuLHy7c6Co/+pQWt0+03tsLpE97bx6ufymV9lJ1VkSO/tEfvQXk6XpLFcKTmbN/EM0RoK8FIOg==", + "dev": true, + "requires": { + "backbone": "^1.1.2", + "bluebird": "^3.4.6", + "charm": "^1.0.0", + "commander": "^2.6.0", + "compression": "^1.7.4", + "consolidate": "^0.15.1", + "execa": "^1.0.0", + "express": "^4.10.7", + "fireworm": "^0.7.0", + "glob": "^7.0.4", + "http-proxy": "^1.13.1", + "js-yaml": "^3.2.5", + "lodash.assignin": "^4.1.0", + "lodash.castarray": "^4.4.0", + "lodash.clonedeep": "^4.4.1", + "lodash.find": "^4.5.1", + "lodash.uniqby": "^4.7.0", + "mkdirp": "^0.5.1", + "mustache": "^3.0.0", + "node-notifier": "^9.0.1", + "npmlog": "^4.0.0", + "printf": "^0.6.1", + "rimraf": "^2.4.4", + "socket.io": "^4.1.2", + "spawn-args": "^0.2.0", + "styled_string": "0.0.1", + "tap-parser": "^7.0.0", + "tmp": "0.0.33", + "xmldom": "^0.6.0" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tap-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", + "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "js-yaml": "^3.2.7", + "minipass": "^2.2.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "~0.11.0" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, + "tmatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", + "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", + "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true + }, + "trivial-deferred": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", + "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-node": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tsame": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", + "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", + "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", + "dev": true, + "requires": { + "json5": "^2.2.0", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "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=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true + }, + "unassert": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unassert/-/unassert-1.6.0.tgz", + "integrity": "sha512-GoMtWTwGSxSFuRD0NKmbjlx3VJkgvSogzDzMPpJXYmBZv6MIWButsyMqEYhMx3NI4osXACcZA9mXiBteXyJtRw==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "call-matcher": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^2.0.1", + "estraverse": "^4.1.0", + "esutils": "^2.0.2", + "object-assign": "^4.1.0" + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", + "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", + "dev": true, + "requires": { + "punycode": "^1.3.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "dev": true, + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unist-builder": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz", + "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", + "dev": true, + "requires": { + "object-assign": "^4.1.0" + } + }, + "unist-util-find-all-after": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "dev": true + }, + "unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + }, + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "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=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vfile-reporter": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-5.1.2.tgz", + "integrity": "sha512-b15sTuss1wOPWVlyWOvu+n6wGJ/eTYngz3uqMLimQvxZ+Q5oFQGYZZP1o3dR9sk58G5+wej0UPCZSwQBX/mzrQ==", + "dev": true, + "requires": { + "repeat-string": "^1.5.0", + "string-width": "^2.0.0", + "supports-color": "^5.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-sort": "^2.1.2", + "vfile-statistics": "^1.1.0" + } + }, + "vfile-sort": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", + "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==", + "dev": true + }, + "vfile-statistics": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", + "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==", + "dev": true + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "requires": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "dev": true, + "requires": { + "execa": "^1.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmldom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yapool": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", + "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index be31208002..0000000000 --- a/yarn.lock +++ /dev/null @@ -1,13065 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" - integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== - dependencies: - browserslist "^4.9.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@>=7.2.2", "@babel/core@^7.1.2", "@babel/core@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.1.3", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== - dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-builder-react-jsx-experimental@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" - integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-module-imports" "^7.8.3" - "@babel/types" "^7.9.0" - -"@babel/helper-builder-react-jsx@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" - integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/types" "^7.9.0" - -"@babel/helper-compilation-targets@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" - integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== - dependencies: - "@babel/compat-data" "^7.8.6" - browserslist "^4.9.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" - integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== - -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.10.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" - integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== - -"@babel/parser@^7.1.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" - integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== - -"@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== - -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@^7.1.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-decorators@^7.1.2": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-do-expressions@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.8.3.tgz#2ccf97061e93d5ffff986dda3f1b54efe9df7719" - integrity sha512-NoMcN+0+SS1DVswjDCfz+Jfm9ViOYuFtv1lm0QInEugbEXK2iH3jeSq38WmIiTP+2QKqo2zt8xku77gqHINZkw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-do-expressions" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz#4cb7c2fdeaed490b60d9bfd3dc8a20f81f9c2e7c" - integrity sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-export-default-from" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.8.3.tgz#63ad57265d0e3912afd666eb44ce26fa8cd2c774" - integrity sha512-WKK+9jz6TWUTX1uej9/EUVOmM1sK7aHv6bZyxbUV3NJjbiIZRqJITeXGMo7D631J72PEnIORh5VOlFCSlrLicg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-function-bind@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.8.3.tgz#e34a1e984771b84b6e5322745edeadca7e500ced" - integrity sha512-6q7VAHJQa9x4P6Lm6h6KHoJUEhx2r1buFKseHICe0ogb1LWxducO4tsQp3hd/7BVBo485YBsn6tJnpuwWm/9cA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-function-bind" "^7.8.3" - -"@babel/plugin-proposal-function-sent@^7.1.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.8.3.tgz#341fd532b7eadbbbdd8bcb715150f279a779f14f" - integrity sha512-lu9wQjLnXd6Zy6eBKr0gE175xfD+da1rv2wOWEnZlD5KIxl894Tg34ppZ7ANR0jzQJMn+7pGuzSdy6JK4zGtKg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/plugin-syntax-function-sent" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.0.0", "@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-logical-assignment-operators@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.8.3.tgz#e94810d96cb76f20524e66ba617171c21f3c0124" - integrity sha512-TLPLojGZYBeeoesO2NQIMLUJKD9N5oJlxG6iHLx7l7EvNQP5DfzeyxdI2lMPo5I7ih4Jv/vxrlwIPf6aJw422Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" - integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-pipeline-operator@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.8.3.tgz#c3569228e7466f91bfff7f1c1ae18fb5d36b3097" - integrity sha512-Z0qV3aUYoLUAnVLdfLTlz/GJYfcrbX7Mhrp897Twik29wQseAFAAXQ4TPvN1oswVBHdN74sLPIn9HVfTXtjuQA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-pipeline-operator" "^7.8.3" - -"@babel/plugin-proposal-throw-expressions@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.8.3.tgz#155f36ae40c2a88ae685c35e3220f8a0d426cf24" - integrity sha512-tH40s9JnoR+r45ZXKWW+PC5xzPQfVJix3pR1D8Ty5l9sn5NnrbZUzw8MtnNxu/Bz7p0imyeSYj9FQVccEymOEg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-throw-expressions" "^7.8.3" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" - integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-do-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.8.3.tgz#e54edb578dc2c05e3b0055fac5cc55a9767d22dd" - integrity sha512-puRiUTVDQ69iRX41eeVWqOftZK31waWqZfwKB/TGzPfgi7097twx/DpwfOfyqEGqYtvpQF3jpHwT6UBzvSyAjw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz#f1e55ce850091442af4ba9c2550106035b29d678" - integrity sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" - integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-function-bind@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.8.3.tgz#17d722cd8efc9bb9cf8bc59327f2b26295b352f7" - integrity sha512-gEYag4Q3CfqlQcJQQw/KSWdV2husGOnIsOsRlyzkoaNqj2V/V/CSdSJDCGSl67oJ1bdIYP6TjORWPH561dSJpA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-function-sent@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.8.3.tgz#5a4874bdfc271f0fa1c470bf508dc54af3041e19" - integrity sha512-NNEutF0x2PdWYij2bmf/i50dSq4SUdgFij4BZwj3I4qDZgql3dlFJRyvwGHAhwKYElUKHaP0wQ/yO1d/enpJaw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-meta@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.8.3.tgz#230afff79d3ccc215b5944b438e4e266daf3d84d" - integrity sha512-vYiGd4wQ9gx0Lngb7+bPCwQXGK/PR6FeTIJ+TIOlq+OfOKG/kCAOO2+IBac3oMM9qV7/fU76hfcqxUaLKZf1hQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-pipeline-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.8.3.tgz#945d9f13958408e2b1048f6ebe03f370d390aaca" - integrity sha512-GhiBvlXZLWeP+MjKaEv33KmiR/QMCv4iCwz1AuuAp7pHxBvOxxyQmIPukh+N/py6PRLYG10bvRCNeenG34QbDA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-throw-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.8.3.tgz#c763bcf26d202ddb65f1299a29d63aad312adb54" - integrity sha512-Mv3shY1i7ZssY4OY+eLZJAmNCwqTcpv2qOKO9x6irELSygfKWVSMXk0igJsA9UhU4hOdw0qMGkjj9TAk4MqzwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" - integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" - integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" - integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" - integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" - integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.8.7": - version "7.9.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" - integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-display-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" - integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" - integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" - integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" - integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== - dependencies: - "@babel/helper-builder-react-jsx" "^7.9.0" - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/preset-env@^7.1.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-flow@^7.0.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.9.0.tgz#fee847c3e090b0b2d9227c1949e4da1d1379280d" - integrity sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-flow-strip-types" "^7.9.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.0.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" - integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.4" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-stage-0@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz#b6a0eca1a3b72e07f9caf58f998e97568028f6f5" - integrity sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ== - -"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.4", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.3.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.1.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@mapbox/flow-remove-types@^1.3.0-await.upstream.2": - version "1.3.0-await.upstream.2" - resolved "https://registry.yarnpkg.com/@mapbox/flow-remove-types/-/flow-remove-types-1.3.0-await.upstream.2.tgz#bb8613e5cfd3f69d764658c5084d7f5d501097a2" - integrity sha512-OYVWXwkluP+9Jz2uenNSeum7U2Hp6RncPAS8iz3qnJ37kE/acae5dD1207BFqWsJ2JsBqULG8g2wB+hUQzPeYg== - dependencies: - babylon "^7.0.0-beta.41" - node-modules-regexp "^1.0.0" - pirates "^3.0.2" - vlq "^0.2.1" - -"@mapbox/gazetteer@^4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@mapbox/gazetteer/-/gazetteer-4.0.4.tgz#511b059d5f2a58e0b4d7ec6c1562c846a888fb82" - integrity sha512-XzOaDedR2EAfjlVApDn+cV6Upi8tsa8J6fBRWHxzmG0ekdC03jvqXkOKPS/P4BkUDyBD6bMLMJ8WH5A0iZNmwQ== - dependencies: - "@mapbox/geojsonhint" "^2.2.0" - -"@mapbox/geojson-rewind@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.0.tgz#91f0ad56008c120caa19414b644d741249f4f560" - integrity sha512-73l/qJQgj/T/zO1JXVfuVvvKDgikD/7D/rHAD28S9BG1OTstgmftrmqfCx4U+zQAmtsB6HcDA3a7ymdnJZAQgg== - dependencies: - concat-stream "~2.0.0" - minimist "^1.2.5" - -"@mapbox/geojson-types@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6" - integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw== - -"@mapbox/geojsonhint@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@mapbox/geojsonhint/-/geojsonhint-2.2.0.tgz#75ca94706e9a56e6debf4e1c78fabdc67978b883" - integrity sha512-8qQYRB+/2z2JsN5s6D0WAnpo69+3V3nvJsSFLwMB1dsaWz1V4oZeuoje9srbYAxxL8PXCwIywfhYa3GxOkBv5Q== - dependencies: - concat-stream "^1.6.1" - jsonlint-lines "1.7.1" - minimist "1.2.0" - vfile "^4.0.0" - vfile-reporter "^5.1.1" - -"@mapbox/jsonlint-lines-primitives@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" - integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ= - -"@mapbox/mapbox-gl-rtl-text@^0.2.1": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-rtl-text/-/mapbox-gl-rtl-text-0.2.3.tgz#a26ecfb3f0061456d93ee8570dd9587d226ea8bd" - integrity sha512-RaCYfnxULUUUxNwcUimV9C/o2295ktTyLEUzD/+VWkqXqvaVfFcZ5slytGzb2Sd/Jj4MlbxD0DCZbfa6CzcmMw== - -"@mapbox/mapbox-gl-supported@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" - integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== - -"@mapbox/mvt-fixtures@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@mapbox/mvt-fixtures/-/mvt-fixtures-3.6.0.tgz#0d359c1eca9499db8b5b57292b1f986921ef0fbd" - integrity sha512-YgaODBQdutOcCnOiRJzbJO3lRejuaeuwfYk0XxfVlAi6L+UDXVHzi7NlpAa6GAYGzQm1V1KLk+2Io8+aSv8I+w== - dependencies: - "@mapbox/sphericalmercator" "^1.0.5" - "@mapbox/vector-tile" "^1.3.0" - d3-queue "^3.0.7" - pbf "^3.0.5" - protocol-buffers-schema "^3.3.2" - -"@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" - integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= - -"@mapbox/sphericalmercator@^1.0.5": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/sphericalmercator/-/sphericalmercator-1.1.0.tgz#f3b1af042620716a1289fc41e1e97f610823aefe" - integrity sha512-pEsfZyG4OMThlfFQbCte4gegvHUjxXCjz0KZ4Xk8NdOYTQBLflj6U8PL05RPAiuRAMAQNUUKJuL6qYZ5Y4kAWA== - -"@mapbox/tiny-sdf@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz#16a20c470741bfe9191deb336f46e194da4a91ff" - integrity sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg== - -"@mapbox/unitbezier@^0.0.0": - version "0.0.0" - resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" - integrity sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4= - -"@mapbox/vector-tile@^1.3.0", "@mapbox/vector-tile@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666" - integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw== - dependencies: - "@mapbox/point-geometry" "~0.1.0" - -"@mapbox/whoots-js@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" - integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@octokit/auth-token@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" - integrity sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg== - dependencies: - "@octokit/types" "^2.0.0" - -"@octokit/endpoint@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b" - integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A== - dependencies: - "@octokit/types" "^2.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" - -"@octokit/plugin-paginate-rest@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" - integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== - dependencies: - "@octokit/types" "^2.0.1" - -"@octokit/plugin-request-log@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" - integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== - -"@octokit/plugin-rest-endpoint-methods@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" - integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== - dependencies: - "@octokit/types" "^2.0.1" - deprecation "^2.3.1" - -"@octokit/request-error@^1.0.2": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" - integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request-error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b" - integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.2.0": - version "5.3.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.4.tgz#fbc950bf785d59da3b0399fc6d042c8cf52e2905" - integrity sha512-qyj8G8BxQyXjt9Xu6NvfvOr1E0l35lsXtwm3SopsYg/JWXjlsnwqLc8rsD2OLguEL/JjLfBvrXr4az7z8Lch2A== - dependencies: - "@octokit/endpoint" "^6.0.0" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^5.0.0" - -"@octokit/rest@^16.30.1": - version "16.43.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b" - integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw== - dependencies: - "@octokit/auth-token" "^2.4.0" - "@octokit/plugin-paginate-rest" "^1.1.1" - "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "2.4.0" - "@octokit/request" "^5.2.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.5.0.tgz#f1bbd147e662ae2c79717d518aac686e58257773" - integrity sha512-KEnLwOfdXzxPNL34fj508bhi9Z9cStyN7qY1kOfVahmqtAfrWw6Oq3P4R+dtsg0lYtZdWBpUrS/Ixmd5YILSww== - dependencies: - "@types/node" ">= 8" - -"@rollup/plugin-strip@^1.3.1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-strip/-/plugin-strip-1.3.2.tgz#9f52e99add99b835a4a3c14e02385f3726514923" - integrity sha512-dByULCvYdklJRJ50XqmA/ntyvVuVnnxOrgZ6cIIMBLLzQrsm9Ui15VD+6I8a11w8Ob9R7ySwYjFck9YCMzseKA== - dependencies: - "@rollup/pluginutils" "^3.0.4" - estree-walker "^1.0.1" - magic-string "^0.25.5" - -"@rollup/pluginutils@^3.0.4": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.8.tgz#4e94d128d94b90699e517ef045422960d18c8fde" - integrity sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw== - dependencies: - estree-walker "^1.0.1" - -"@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.4.0", "@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/formatio@^3.2.1": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.2.tgz#771c60dfa75ea7f2d68e3b94c7e888a78781372c" - integrity sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ== - dependencies: - "@sinonjs/commons" "^1" - "@sinonjs/samsam" "^3.1.0" - -"@sinonjs/samsam@^3.1.0", "@sinonjs/samsam@^3.3.3": - version "3.3.3" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.3.tgz#46682efd9967b259b81136b9f120fd54585feb4a" - integrity sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ== - dependencies: - "@sinonjs/commons" "^1.3.0" - array-from "^2.1.1" - lodash "^4.17.15" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== - -"@types/babel-core@*": - version "6.25.7" - resolved "https://registry.yarnpkg.com/@types/babel-core/-/babel-core-6.25.7.tgz#f9c22d5c085686da2f6ffbdae778edb3e6017671" - integrity sha512-WPnyzNFVRo6bxpr7bcL27qXtNKNQ3iToziNBpibaXHyKGWQA0+tTLt73QQxC/5zzbM544ih6Ni5L5xrck6rGwg== - dependencies: - "@types/babel-generator" "*" - "@types/babel-template" "*" - "@types/babel-traverse" "*" - "@types/babel-types" "*" - "@types/babylon" "*" - -"@types/babel-generator@*": - version "6.25.4" - resolved "https://registry.yarnpkg.com/@types/babel-generator/-/babel-generator-6.25.4.tgz#74eacdaa4822c4c6923e68c541144a04415ad8a1" - integrity sha512-Rnsen+ckop5mbl9d43bempS7i9wdTN1vytiTlmQla/YiNm6kH8kEVABVSXmp1UbnpkUV44nUCPeDQoa+Mu7ALA== - dependencies: - "@types/babel-types" "*" - -"@types/babel-template@*": - version "6.25.2" - resolved "https://registry.yarnpkg.com/@types/babel-template/-/babel-template-6.25.2.tgz#3c4cde02dbcbbf461a58d095a9f69f35eabd5f06" - integrity sha512-QKtDQRJmAz3Y1HSxfMl0syIHebMc/NnOeH/8qeD0zjgU2juD0uyC922biMxCy5xjTNvHinigML2l8kxE8eEBmw== - dependencies: - "@types/babel-types" "*" - "@types/babylon" "*" - -"@types/babel-traverse@*": - version "6.25.6" - resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.6.tgz#f6f6d2727d3d9fa7e116fdc0d5e03a762301112f" - integrity sha512-kPGq7V3SP3sipa2ddQBKa0cIA5ji4vInn15rYRt9c0FRT+4Mo6TcbfRZTF/7TnPC8RgTJT0FE+LftqK1iV+0SA== - dependencies: - "@types/babel-types" "*" - -"@types/babel-types@*": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.10.tgz#c12a182ecf326c26acc7b18a301827594bab6df9" - integrity sha512-g7zrcqL4MiRu3jZzdZZYk0g0KcKk2fddXazSdP1PacEpmjihRsNGU50aaEKnPFuKzfN7WkRktUiCXvs4zU9XXQ== - -"@types/babel__core@^7.1.12": - version "7.1.15" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" - integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babelify@^7.3.6": - version "7.3.7" - resolved "https://registry.yarnpkg.com/@types/babelify/-/babelify-7.3.7.tgz#dca7c01c6f2675fe7251af4cfa05137923a36978" - integrity sha512-OjGe1SBi3M7I/uk5+x4mNhVNymJNyK4RqeStCL5U/H2pB+K1FhC0PYbLJiPTyZpWs/8eVmQJKWoF4hGgqIdYhA== - dependencies: - "@types/babel-core" "*" - "@types/node" "*" - -"@types/babylon@*": - version "6.16.6" - resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.6.tgz#a1e7e01567b26a5ebad321a74d10299189d8d932" - integrity sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w== - dependencies: - "@types/babel-types" "*" - -"@types/benchmark@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/benchmark/-/benchmark-2.1.1.tgz#d763df29717d93aa333eb11f421ef383a5df5673" - integrity sha512-XmdNOarpSSxnb3DE2rRFOFsEyoqXLUL+7H8nSGS25vs+JS0018bd+cW5Ma9vdlkPmoTHSQ6e8EUFMFMxeE4l+g== - -"@types/browserify@^12.0.36": - version "12.0.37" - resolved "https://registry.yarnpkg.com/@types/browserify/-/browserify-12.0.37.tgz#f08312f17b4a7411441cce3a45434a0ce81c4da3" - integrity sha512-rGVZQhqlBMdnU0Wcq/RDO6+I1tppM42SqVq5ZEXiw2ft/A55Ro+dz4aKTy28gniwOIxZhRFqb5N+qnbg7J040g== - dependencies: - "@types/insert-module-globals" "*" - "@types/node" "*" - -"@types/buble@*": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.20.1.tgz#cba009801fd417b0d2eb8fa6824b537842e05803" - integrity sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ== - dependencies: - magic-string "^0.25.0" - -"@types/caseless@*": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" - integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/cssnano@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/cssnano/-/cssnano-4.0.1.tgz#67fa912753d80973a016e7684a47fedf338aacff" - integrity sha512-hGOroxRTBkYl5gSBRJOffhV4+io+Y2bFX1VP7LgKEVHJt/LPPJaWUIuDAz74Vlp7l7hCDZfaDi7iPxwNwuVA4Q== - dependencies: - postcss "5 - 7" - -"@types/d3-array@^1": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.9.tgz#c7dc78992cd8ca5c850243a265fd257ea56df1fa" - integrity sha512-E/7RgPr2ylT5dWG0CswMi9NpFcjIEDqLcUSBgNHe/EMahfqYaTx4zhcggG3khqoEB/leY4Vl6nTSbwLUPjXceA== - -"@types/d3-axis@^1": - version "1.0.16" - resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.16.tgz#93d7a28795c2f8b0e2fd550fcc4d29b7f174e693" - integrity sha512-p7085weOmo4W+DzlRRVC/7OI/jugaKbVa6WMQGCQscaMylcbuaVEGk7abJLNyGVFLeCBNrHTdDiqRGnzvL0nXQ== - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-brush@^1": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.1.5.tgz#c7cfb58decbfd53ad3e47f0376345e3640a68186" - integrity sha512-4zGkBafJf5zCsBtLtvDj/pNMo5X9+Ii/1hUz0GvQ+wEwelUBm2AbIDAzJnp2hLDFF307o0fhxmmocHclhXC+tw== - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-chord@^1": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.11.tgz#5760765db1b1a4b936c0d9355a821dde9dd25da2" - integrity sha512-0DdfJ//bxyW3G9Nefwq/LDgazSKNN8NU0lBT3Cza6uVuInC2awMNsAcv1oKyRFLn9z7kXClH5XjwpveZjuz2eg== - -"@types/d3-collection@*": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.10.tgz#bca161e336156968f267c077f7f2bfa8ff224e58" - integrity sha512-54Fdv8u5JbuXymtmXm2SYzi1x/Svt+jfWBU5junkhrCewL92VjqtCBDn97coBRVwVFmYNnVTNDyV8gQyPYfm+A== - -"@types/d3-color@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784" - integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA== - -"@types/d3-dispatch@^1": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.9.tgz#c5a180f1e251de853b399cfbfbb6dd7f8bf842ae" - integrity sha512-zJ44YgjqALmyps+II7b1mZLhrtfV/FOxw9owT87mrweGWcg+WK5oiJX2M3SYJ0XUAExBduarysfgbR11YxzojQ== - -"@types/d3-drag@^1": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.5.tgz#0b1b852cb41577075aa625ae6149379ea6c34dfd" - integrity sha512-7NeTnfolst1Js3Vs7myctBkmJWu6DMI3k597AaHUX98saHjHWJ6vouT83UrpE+xfbSceHV+8A0JgxuwgqgmqWw== - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-dsv@^1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.2.1.tgz#1524fee9f19d689c2f76aa0e24e230762bf96994" - integrity sha512-LLmJmjiqp/fTNEdij5bIwUJ6P6TVNk5hKM9/uk5RPO2YNgEu9XvKO0dJ7Iqd3psEdmZN1m7gB1bOsjr4HmO2BA== - -"@types/d3-ease@^1": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.10.tgz#09910e8558439b6038a7ed620650e510394ffa6d" - integrity sha512-fMFTCzd8DOwruE9zlu2O8ci5ct+U5jkGcDS+cH+HCidnJlDs0MZ+TuSVCFtEzh4E5MasItwy+HvgoFtxPHa5Cw== - -"@types/d3-force@^1": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.2.4.tgz#6e274c72288c2db08fbdb8f5b87b9aa83e55a9e8" - integrity sha512-fkorLTKvt6AQbFBQwn4aq7h9rJ4c7ZVcPMGB8X6eFFveAyMZcv7t7m6wgF4Eg93rkPgPORU7sAho1QSHNcZu6w== - -"@types/d3-format@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.4.2.tgz#ea17bf559b71d9afd569ae9bfe4c544dab863baa" - integrity sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ== - -"@types/d3-geo@^1": - version "1.12.3" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.12.3.tgz#512ebe735cb1cdf5f87ad59608416e2e9e868c5a" - integrity sha512-yZbPb7/5DyL/pXkeOmZ7L5ySpuGr4H48t1cuALjnJy5sXQqmSSAYBiwa6Ya/XpWKX2rJqGDDubmh3nOaopOpeA== - dependencies: - "@types/geojson" "*" - -"@types/d3-hierarchy@^1": - version "1.1.8" - resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz#50657f420d565a06c0b950a4b82eee0a369f2dea" - integrity sha512-AbStKxNyWiMDQPGDguG2Kuhlq1Sv539pZSxYbx4UZeYkutpPwXCcgyiRrlV4YH64nIOsKx7XVnOMy9O7rJsXkg== - -"@types/d3-interpolate@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b" - integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg== - dependencies: - "@types/d3-color" "^1" - -"@types/d3-path@^1": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.9.tgz#73526b150d14cd96e701597cbf346cfd1fd4a58c" - integrity sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ== - -"@types/d3-polygon@^1": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.8.tgz#127ee83fccda5bf57384011da90f31367fea1530" - integrity sha512-1TOJPXCBJC9V3+K3tGbTqD/CsqLyv/YkTXAcwdsZzxqw5cvpdnCuDl42M4Dvi8XzMxZNCT9pL4ibrK2n4VmAcw== - -"@types/d3-quadtree@^1": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.9.tgz#c7c3b795b5af06e5b043d1d34e754a434b3bae59" - integrity sha512-5E0OJJn2QVavITFEc1AQlI8gLcIoDZcTKOD3feKFckQVmFV4CXhqRFt83tYNVNIN4ZzRkjlAMavJa1ldMhf5rA== - -"@types/d3-queue@*": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-queue/-/d3-queue-3.0.8.tgz#fad6212f14f34a549fc67144e354f032fb25a447" - integrity sha512-1FWOiI/MYwS5Z1Sa9EvS1Xet3isiVIIX5ozD6iGnwHonGcqL+RcC1eThXN5VfDmAiYt9Me9EWNEv/9J9k9RIKQ== - -"@types/d3-random@^1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.3.tgz#8f7fdc23f92d1561e0694eb49567e8ab50537a19" - integrity sha512-XXR+ZbFCoOd4peXSMYJzwk0/elP37WWAzS/DG+90eilzVbUSsgKhBcWqylGWe+lA2ubgr7afWAOBaBxRgMUrBQ== - -"@types/d3-request@*": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-request/-/d3-request-1.0.6.tgz#7f7e3b7138040756e73a023ef31020b2324c42c8" - integrity sha512-4nRKDUBg3EBx8VowpMvM3NAVMiMMI1qFUOYv3OJsclGjHX6xjtu09nsWhRQ0fvSUla3MEjb5Ch4IeaYarMEi1w== - dependencies: - "@types/d3-dsv" "^1" - -"@types/d3-scale@^1": - version "1.0.17" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-1.0.17.tgz#f54f6104c5e94fa327212398c1a164d695eefe90" - integrity sha512-baIP5/gw+PS8Axs1lfZCeIjcOXen/jxQmgFEjbYThwaj2drvivOIrJMh2Ig4MeenrogCH6zkhiOxCPRkvN1scA== - dependencies: - "@types/d3-time" "^1" - -"@types/d3-selection@^1": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.3.tgz#36928bbe64eb8e0bbcbaa01fb05c21ff6c71fa93" - integrity sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA== - -"@types/d3-shape@^1": - version "1.3.8" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" - integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== - dependencies: - "@types/d3-path" "^1" - -"@types/d3-time-format@^2": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.3.1.tgz#87a30e4513b9d1d53b920327a361f87255bf3372" - integrity sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA== - -"@types/d3-time@^1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.1.1.tgz#6cf3a4242c3bbac00440dfb8ba7884f16bedfcbf" - integrity sha512-ULX7LoqXTCYtM+tLYOaeAJK7IwCT+4Gxlm2MaH0ErKLi07R5lh8NHCAyWcDkCCmx1AfRcBEV6H9QE9R25uP7jw== - -"@types/d3-timer@^1": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.10.tgz#329c51c2c931f44ed0acff78b8c84571acf0ed21" - integrity sha512-ZnAbquVqy+4ZjdW0cY6URp+qF/AzTVNda2jYyOzpR2cPT35FTXl78s15Bomph9+ckOiI1TtkljnWkwbIGAb6rg== - -"@types/d3-transition@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.3.2.tgz#ed59beca7b4d679cfa52f88a6a50e5bbeb7e0a3c" - integrity sha512-J+a3SuF/E7wXbOSN19p8ZieQSFIm5hU2Egqtndbc54LXaAEOpLfDx4sBu/PKAKzHOdgKK1wkMhINKqNh4aoZAg== - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-voronoi@*": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz#7bbc210818a3a5c5e0bafb051420df206617c9e5" - integrity sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ== - -"@types/d3-zoom@^1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.8.3.tgz#00237900c6fdc2bb4fe82679ee4d74eb8fbe7b3c" - integrity sha512-3kHkL6sPiDdbfGhzlp5gIHyu3kULhtnHTTAl3UBZVtWB1PzcLL8vdmz5mTx7plLiUqOA2Y+yT2GKjt/TdA2p7Q== - dependencies: - "@types/d3-interpolate" "^1" - "@types/d3-selection" "^1" - -"@types/d3@^4.13.12": - version "4.13.12" - resolved "https://registry.yarnpkg.com/@types/d3/-/d3-4.13.12.tgz#1403037b8b7704939a5c74f13bb5d4fd220fec28" - integrity sha512-/bbFtkOBc04gGGN8N9rMG5ps3T0eIj5I8bnYe9iIyeM5qoOrydPCbFYlEPUnj2h9ibc2i+QZfDam9jY5XTrTxQ== - dependencies: - "@types/d3-array" "^1" - "@types/d3-axis" "^1" - "@types/d3-brush" "^1" - "@types/d3-chord" "^1" - "@types/d3-collection" "*" - "@types/d3-color" "^1" - "@types/d3-dispatch" "^1" - "@types/d3-drag" "^1" - "@types/d3-dsv" "^1" - "@types/d3-ease" "^1" - "@types/d3-force" "^1" - "@types/d3-format" "^1" - "@types/d3-geo" "^1" - "@types/d3-hierarchy" "^1" - "@types/d3-interpolate" "^1" - "@types/d3-path" "^1" - "@types/d3-polygon" "^1" - "@types/d3-quadtree" "^1" - "@types/d3-queue" "*" - "@types/d3-random" "^1" - "@types/d3-request" "*" - "@types/d3-scale" "^1" - "@types/d3-selection" "^1" - "@types/d3-shape" "^1" - "@types/d3-time" "^1" - "@types/d3-time-format" "^2" - "@types/d3-timer" "^1" - "@types/d3-transition" "^1" - "@types/d3-voronoi" "*" - "@types/d3-zoom" "^1" - -"@types/diff@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/diff/-/diff-4.0.2.tgz#2e9bb89f9acc3ab0108f0f3dc4dbdcf2fff8a99c" - integrity sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ== - -"@types/earcut@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/earcut/-/earcut-2.1.1.tgz#573a0af609f17005c751f6f4ffec49cfe358ea51" - integrity sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ== - -"@types/ejs@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-2.7.0.tgz#bc84e083eae38f64a287a6dab9012bbe1d96e295" - integrity sha512-kM2g9Fdk/du24fKuuQhA/LBleFR4Z4JP2MVKpLxQQSzofF1uJ06D+c05zfLDAkkDO55aEeNwJih0gHrE/Ci20A== - -"@types/eslint@^7.2.6": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" - integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/esm@~3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/esm/-/esm-3.2.0.tgz#f53dbded33cc1cef95645ebbf287aa3b3742e103" - integrity sha512-aXemgVPnF1s0PQin04Ei8zTWaNwUdc4pmhZDg8LBW6QEl9kBWVItAUOLGUY5H5xduAmbL1pLGH1X/PN0+4R9tg== - dependencies: - "@types/node" "*" - -"@types/estree@*": - version "0.0.44" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" - integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/geojson@*": - version "7946.0.8" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" - integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== - -"@types/geojson@^7946.0.7": - version "7946.0.7" - resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" - integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== - -"@types/gl@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@types/gl/-/gl-4.1.0.tgz#44d48283f1ffb5e6698de145b805fa1bf80ca4aa" - integrity sha512-XdyM2/Q+XAsdw69t23YD812fY3KDw9dYmULZTOGMFM2tLaweBtcVzUnOwsMzF7i0dvFDL0GnawYwEq/+hvUZtw== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/glob@^7.1.3": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/insert-module-globals@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/insert-module-globals/-/insert-module-globals-7.0.2.tgz#0d44216a6489829897d7c8a97dbf8250444c95f8" - integrity sha512-b+XCUBUioZoveg4e8+D/wGVIvQcuV6TNHPy53aeY0YBydOOZhAtX2Sdr4x97uWKKy9Xrt0SUKsPxbT9e0u/x9Q== - dependencies: - "@types/node" "*" - -"@types/jsdom@^16.2.5": - version "16.2.13" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.13.tgz#126c8b7441b159d6234610a48de77b6066f1823f" - integrity sha512-8JQCjdeAidptSsOcRWk2iTm9wCcwn9l+kRG6k5bzUacrnm1ezV4forq0kWjUih/tumAeoG+OspOvQEbbRucBTw== - dependencies: - "@types/node" "*" - "@types/parse5" "*" - "@types/tough-cookie" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.7": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" - integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== - -"@types/jsonwebtoken@^8.5.0": - version "8.5.4" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz#50ccaf0aa6f5d7b9956e70fe323b76e582991913" - integrity sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg== - dependencies: - "@types/node" "*" - -"@types/lodash.template@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@types/lodash.template/-/lodash.template-4.5.0.tgz#277654af717ed37ce2687c69f8f221c550276b7a" - integrity sha512-4LgHxK16IPbGR7TmXpPvNT7iNGsLCdQY6Rc0mi1a/JECt8et/D4hx6NMVAJej/d932sj1mJsg0QYHKL189O0Qw== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": - version "4.14.171" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.171.tgz#f01b3a5fe3499e34b622c362a46a609fdb23573b" - integrity sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg== - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimist@^1.2.1": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/murmurhash-js@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/murmurhash-js/-/murmurhash-js-1.0.3.tgz#0e8c0a1db692c062ea4f7e1093fc1ba1d1839298" - integrity sha512-PxJwTlcFOBRPqv9pSoC3O1FpKN8GnM5hMJIkG6U3omH8b4GAh28fO1c+TMR4oxj0BG43/ICbrIK3KBfzad2heg== - -"@types/node-notifier@^8.0.0": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@types/node-notifier/-/node-notifier-8.0.1.tgz#5cf3fb1c67732bfc487e051492de688dd362edbc" - integrity sha512-oEaec3j6vw1u0xT/rEniM0yarkV5dZsZvjgTX3IlgekpjDGlv8EGD+Pnpbt3D9IMkoosprPeRtvYc/1t9XBduw== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>= 8": - version "12.12.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.31.tgz#d6b4f9645fee17f11319b508fb1001797425da51" - integrity sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg== - -"@types/npm-packlist@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/npm-packlist/-/npm-packlist-1.1.2.tgz#285978c9023ce68fa0641ca606c7c3b7b0e851c5" - integrity sha512-9NYoEH87t90e6dkaQOuUTY/R1xUE0a67sXzJBuAB+b+/z4FysHFD19g/O154ToGjyWqKYkezVUtuBdtfd4hyfw== - -"@types/parse5@*": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" - integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== - -"@types/pbf@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" - integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== - -"@types/pixelmatch@^5.2.2": - version "5.2.4" - resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" - integrity sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ== - dependencies: - "@types/node" "*" - -"@types/pngjs@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@types/pngjs/-/pngjs-3.4.2.tgz#8dc49b45fbcf18a5873179e3664f049388e39ecf" - integrity sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw== - dependencies: - "@types/node" "*" - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/puppeteer@^1.20.7": - version "1.20.8" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-1.20.8.tgz#fadbf64f7ac497e9248297beb6ed6a01705c0918" - integrity sha512-yJZzz9NeEmTxRGaZzUxUtBIEAoVXTtAx40mG8K0eDPwEeWyuxXKC7Lredxs6uNcgbvMDc8xzYy4v54jbbpoqrg== - dependencies: - "@types/node" "*" - -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== - -"@types/react-dom@^16.9.10": - version "16.9.14" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.14.tgz#674b8f116645fe5266b40b525777fc6bb8eb3bcd" - integrity sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A== - dependencies: - "@types/react" "^16" - -"@types/react@^16", "@types/react@^16.14.2": - version "16.14.11" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.11.tgz#992a0cd4b66b9f27315042b5d96e976717368f04" - integrity sha512-Don0MtsZZ3fjwTJ2BsoqkyOy7e176KplEAKOpr/4XDdzinlyJBn9yfsKn5mcSgn4kh1B22+3tBnzBC1z63ybtQ== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/request@^2.48.5": - version "2.48.6" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.6.tgz#2300e7fc443108f79efa90e3bdf34c6d60fa89d8" - integrity sha512-vrZaV3Ij7j/l/3hz6OttZFtpRCu7zlq7XgkYHJP6FwVEAZkGQ095WqyJV08/GlW9eyXKVcp/xmtruHm8eHpw1g== - dependencies: - "@types/caseless" "*" - "@types/node" "*" - "@types/tough-cookie" "*" - form-data "^2.5.0" - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/rollup-plugin-buble@^0.19.1": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@types/rollup-plugin-buble/-/rollup-plugin-buble-0.19.2.tgz#5b8e5b25068ff8f75357db9758a61cc12555b388" - integrity sha512-GcWqRXqQrBRlyR4u6/xrGjwTpmVLd8Qt91Cf/7hoOtYiU49FLeQoaiACLozKdClYVz7xs/6USIIFFk9zuzsUbw== - dependencies: - "@types/buble" "*" - "@types/node" "*" - rollup "^0.63.4" - -"@types/rollup-plugin-json@^3.0.2": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/rollup-plugin-json/-/rollup-plugin-json-3.0.3.tgz#a3dbf32e3c9e0e7bc34a8bce2be6210ed331cf49" - integrity sha512-5Y5fTYRCXS1llyLzQ3X1XhDRpw/31jkfWOMpDRgz000d9ABOsdLWDg/f6mqwT8BKGYV/+6tje4uGQnuebuk7dg== - dependencies: - "@types/node" "*" - rollup "^0.63.4" - -"@types/rollup-plugin-sourcemaps@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@types/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#ce3752116834aeb8b798da77a180612fb6ff617a" - integrity sha512-dqF1rMFy4O8yNlQYwYPos5Cfav0f6M7PLH8B33gsslQ0zA9MX1jMGokwNuJ3Z3EXAzsKF/xAWNHpFmELcgYJww== - dependencies: - "@types/node" "*" - rollup "^0.63.4" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/selenium-webdriver@^4.0.10": - version "4.0.15" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-4.0.15.tgz#03012b84155cf6bbae2f64aa9dccf2a84c78c7c8" - integrity sha512-5760PIZkzhPejy3hsKAdCKe5LJygGdxLKOLxmZL9GEUcFlO5OgzM6G2EbdbvOnaw4xvUSa9Uip6Ipwkih12BPA== - -"@types/shuffle-seed@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/shuffle-seed/-/shuffle-seed-1.1.0.tgz#b301d4b1dc88f603b8187329bee9cdb9e814f12d" - integrity sha512-h6UW72XuE07bSDVTkNjMMapFj6ERJmvf+RajssOoEIVhuU53/+zyCSBjBrSpDJSzVYjGr4CYxW3ABrY0C6s8qA== - -"@types/sinon@^7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.2.tgz#5e2f1d120f07b9cda07e5dedd4f3bf8888fccdb9" - integrity sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg== - -"@types/stylelint@^9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@types/stylelint/-/stylelint-9.10.1.tgz#211832381e43fd0774217b59f02ab389d82643ea" - integrity sha512-au+n/CjGixNopJmh51GeZSkqf/ahwOBkzcvizHPe3flfwWag0T+/L7uHD0Hjx7ZhmXGFSEwOCqEybD4domcyRw== - dependencies: - postcss "7.x.x" - -"@types/supercluster@^5.0.2": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/supercluster/-/supercluster-5.0.3.tgz#aa03a77c6545265e63b50fa267ab12afe0c27658" - integrity sha512-XMSqQEr7YDuNtFwSgaHHOjsbi0ZGL62V9Js4CW45RBuRYlNWSW/KDqN+RFFE7HdHcGhJPtN0klKvw06r9Kg7rg== - dependencies: - "@types/geojson" "*" - -"@types/tape@^4.13.0": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@types/tape/-/tape-4.13.1.tgz#b789e28d0e7c558a08da8b8986298d46b71f6cf1" - integrity sha512-p6eHt3Yi7C9o7lpjchpVnfKb3ldFjHR/1sBaQdpuZnjAFtsc2UgsFlu+XKQH2l5pgt98oFcINYNTRAwWbrZjnw== - dependencies: - "@types/node" "*" - -"@types/tough-cookie@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" - integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== - -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" - integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== - -"@types/vfile-message@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" - integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== - dependencies: - vfile-message "*" - -"@types/vfile@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" - integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== - dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message" "*" - -"@typescript-eslint/eslint-plugin@^4.10.0": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz#36cdcd9ca6f9e5cb49b9f61b970b1976708d084b" - integrity sha512-jW8sEFu1ZeaV8xzwsfi6Vgtty2jf7/lJmQmDkDruBjYAbx5DA8JtbcMnP0rNPUG+oH5GoQBTSp+9613BzuIpYg== - dependencies: - "@typescript-eslint/experimental-utils" "4.28.3" - "@typescript-eslint/scope-manager" "4.28.3" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.3.tgz#976f8c1191b37105fd06658ed57ddfee4be361ca" - integrity sha512-zZYl9TnrxwEPi3FbyeX0ZnE8Hp7j3OCR+ELoUfbwGHGxWnHg9+OqSmkw2MoCVpZksPCZYpQzC559Ee9pJNHTQw== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.28.3" - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/typescript-estree" "4.28.3" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.10.0": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44" - integrity sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ== - dependencies: - "@typescript-eslint/scope-manager" "4.28.3" - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/typescript-estree" "4.28.3" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371" - integrity sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ== - dependencies: - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/visitor-keys" "4.28.3" - -"@typescript-eslint/types@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7" - integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA== - -"@typescript-eslint/typescript-estree@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb" - integrity sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w== - dependencies: - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/visitor-keys" "4.28.3" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4" - integrity sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg== - dependencies: - "@typescript-eslint/types" "4.28.3" - eslint-visitor-keys "^2.0.0" - -JSONStream@^1.0.3: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -"JSV@>= 4.0.x": - version "4.0.2" - resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" - integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - -acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^5.0.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^5.2.1: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.1.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.0.0, acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.10.2, ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== - dependencies: - default-require-extensions "^2.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-from@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" - integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= - -array-includes@^3.1.2, array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-cache@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/async-cache/-/async-cache-1.1.0.tgz#4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a" - integrity sha1-SppaidBl7F2OUlS9nulrp2xTK1o= - dependencies: - lru-cache "^4.0.0" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@0.9.x: - version "0.9.2" - resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -async@~0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.0.0: - version "9.7.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.5.tgz#8df10b9ff9b5814a8d411a5cfbab9c793c392376" - integrity sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg== - dependencies: - browserslist "^4.11.0" - caniuse-lite "^1.0.30001036" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.27" - postcss-value-parser "^4.0.3" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -babel-eslint@^10.0.1: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== - dependencies: - object.assign "^4.1.0" - -babelify@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" - integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== - -babylon@^7.0.0-beta.41: - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ== - -backbone@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.4.0.tgz#54db4de9df7c3811c3f032f34749a4cd27f3bd12" - integrity sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ== - dependencies: - underscore ">=1.8.3" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base64id@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -before-after-hook@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - -benchmark@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" - integrity sha1-CfPeMckWQl1JjMLuVloOvzwqVik= - dependencies: - lodash "^4.17.4" - platform "^1.3.3" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bind-obj-methods@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz#0178140dbe7b7bb67dc74892ace59bc0247f06f0" - integrity sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bit-twiddle@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bit-twiddle/-/bit-twiddle-1.0.2.tgz#0c6c1fabe2b23d17173d9a61b7b7093eb9e1769e" - integrity sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4= - -bl@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" - integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -body@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" - integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= - dependencies: - continuable-cache "^0.3.1" - error "^7.0.0" - raw-body "~1.1.0" - safe-json-parse "~1.0.1" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-pack@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.8.0" - defined "^1.0.0" - safe-buffer "^5.1.1" - through2 "^2.0.0" - umd "^3.0.0" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.0, browser-resolve@^1.7.0: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserify@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.0.tgz#a1c2bc0431bec11fd29151941582e3f645ede881" - integrity sha512-6bfI3cl76YLAnCZ75AGu/XPOsqUhRyc0F/olGIJeCxtfxF2HvPKEcmjU9M8oAPxl4uBY1U7Nry33Q6koV3f2iw== - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "^1.6.0" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "^1.2.0" - duplexer2 "~0.1.2" - events "^2.0.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - mkdirp "^0.5.0" - module-deps "^6.0.0" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^3.0.0" - string_decoder "^1.1.1" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "0.0.1" - url "~0.11.0" - util "~0.10.1" - vm-browserify "^1.0.0" - xtend "^4.0.0" - -browserslist@^4.0.0, browserslist@^4.11.0, browserslist@^4.8.3, browserslist@^4.9.1: - version "4.11.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad" - integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.380" - node-releases "^1.1.52" - pkg-up "^3.1.0" - -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buble@^0.19.8: - version "0.19.8" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.8.tgz#d642f0081afab66dccd897d7b6360d94030b9d3d" - integrity sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA== - dependencies: - acorn "^6.1.1" - acorn-dynamic-import "^4.0.0" - acorn-jsx "^5.0.1" - chalk "^2.4.2" - magic-string "^0.25.3" - minimist "^1.2.0" - os-homedir "^2.0.0" - regexpu-core "^4.5.4" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= - -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^5.0.2, buffer@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" - integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -builtin-modules@^3.0.0, builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" - integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" - integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== - -caching-transform@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" - integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== - dependencies: - hasha "^3.0.0" - make-dir "^2.0.0" - package-hash "^3.0.0" - write-file-atomic "^2.4.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-matcher@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-2.0.0.tgz#a38bee4e9ddbeec76aa31cc20311085a34dd395b" - integrity sha512-CIDC5wZZfZ2VjZu849WQckS58Z3pJXFfRaSjNjgo/q3in5zxkhTwVL83vttgtmvyLG7TuDlLlBya7SKP6CjDIA== - dependencies: - deep-equal "^1.0.0" - espurify "^2.0.0" - estraverse "^4.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036: - version "1.0.30001243" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz" - integrity sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA== - -canvas@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.6.1.tgz#0d087dd4d60f5a5a9efa202757270abea8bef89e" - integrity sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA== - dependencies: - nan "^2.14.0" - node-pre-gyp "^0.11.0" - simple-get "^3.0.3" - -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -ccount@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" - integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -charm@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" - integrity sha1-it02cVOm2aWBMxBSxAkJkdqZXjU= - dependencies: - inherits "^2.0.1" - -chokidar@^2.0.0, chokidar@^2.0.4: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.3.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-regexp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" - integrity sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== - dependencies: - is-regexp "^1.0.0" - is-supported-regexp-flag "^1.0.0" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -colors@~0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" - integrity sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w= - -combine-source-map@^0.8.0, combine-source-map@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" - integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comma-separated-tokens@^1.0.1: - version "1.0.8" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" - integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== - -commander@2, commander@^2.20.0, commander@^2.6.0, commander@^2.8.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -comment-parser@^0.7.6: - version "0.7.6" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" - integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@~1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" - integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY= - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -concat-stream@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -continuable-cache@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" - integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= - -convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== - dependencies: - browserslist "^4.8.3" - semver "7.0.0" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -coveralls@^3.0.2: - version "3.0.11" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.11.tgz#e141da0922b632fcc66620f334460c3f0026a4ce" - integrity sha512-LZPWPR2NyGKyaABnc49dR0fpeP6UqhvGq4B5nUrTQ1UBy55z96+ga7r+/ChMdMJUwBgyJDXBi88UBgz2rs9IiQ== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.5" - request "^2.88.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.1, cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.0.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== - -csscolorparser@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs= - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - -cssom@0.3.x, cssom@^0.3.4: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -d3-array@1, d3-array@^1.2.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - -d3-array@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" - integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw== - -d3-axis@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa" - integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo= - -d3-brush@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4" - integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q= - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3-chord@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.4.tgz#7dec4f0ba886f713fe111c45f763414f6f74ca2c" - integrity sha1-fexPC6iG9xP+ERxF92NBT290yiw= - dependencies: - d3-array "1" - d3-path "1" - -d3-collection@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -d3-collection@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2" - integrity sha1-NC39EoN8kJdPM/HMCnha6lcNzcI= - -d3-color@1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf" - integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg== - -d3-color@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b" - integrity sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs= - -d3-dispatch@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== - -d3-dispatch@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8" - integrity sha1-RuFJHqqbWMNY/OW+TovtYm54cfg= - -d3-drag@1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" - integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== - dependencies: - d3-dispatch "1" - d3-selection "1" - -d3-drag@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.1.tgz#df8dd4c502fb490fc7462046a8ad98a5c479282d" - integrity sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ== - dependencies: - d3-dispatch "1" - d3-selection "1" - -d3-dsv@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-dsv@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.0.8.tgz#907e240d57b386618dc56468bacfe76bf19764ae" - integrity sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A== - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-ease@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" - integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== - -d3-ease@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" - integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4= - -d3-force@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.1.0.tgz#cebf3c694f1078fcc3d4daf8e567b2fbd70d4ea3" - integrity sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - -d3-format@1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" - integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== - -d3-format@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.2.tgz#1a39c479c8a57fe5051b2e67a3bee27061a74e7a" - integrity sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw== - -d3-geo@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.9.1.tgz#157e3b0f917379d0f73bebfff3be537f49fa7356" - integrity sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA== - dependencies: - d3-array "1" - -d3-hierarchy@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26" - integrity sha1-ochFxC+Eoga88cAcAQmOpN2qeiY= - -d3-interpolate@1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" - integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== - dependencies: - d3-color "1" - -d3-interpolate@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" - integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== - dependencies: - d3-color "1" - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-path@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.5.tgz#241eb1849bd9e9e8021c0d0a799f8a0e8e441764" - integrity sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q= - -d3-polygon@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.3.tgz#16888e9026460933f2b179652ad378224d382c62" - integrity sha1-FoiOkCZGCTPysXllKtN4Ik04LGI= - -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== - -d3-quadtree@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.3.tgz#ac7987e3e23fe805a990f28e1b50d38fcb822438" - integrity sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg= - -d3-queue@3.0.7, d3-queue@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/d3-queue/-/d3-queue-3.0.7.tgz#c93a2e54b417c0959129d7d73f6cf7d4292e7618" - integrity sha1-yTouVLQXwJWRKdfXP2z31Ckudhg= - -d3-random@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.0.tgz#6642e506c6fa3a648595d2b2469788a8d12529d3" - integrity sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM= - -d3-request@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-request/-/d3-request-1.0.6.tgz#a1044a9ef4ec28c824171c9379fae6d79474b19f" - integrity sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-dsv "1" - xmlhttprequest "1" - -d3-scale@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" - integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-color "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-selection@1, d3-selection@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" - integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== - -d3-selection@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d" - integrity sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA== - -d3-shape@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777" - integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c= - dependencies: - d3-path "1" - -d3-time-format@2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" - integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== - dependencies: - d3-time "1" - -d3-time-format@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31" - integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw== - dependencies: - d3-time "1" - -d3-time@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - -d3-time@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84" - integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ== - -d3-timer@1: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - -d3-timer@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531" - integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA== - -d3-transition@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" - integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -d3-transition@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039" - integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -d3-voronoi@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz#1687667e8f13a2d158c80c1480c5a29cb0d8973c" - integrity sha1-Fodmfo8TotFYyAwUgMWinLDYlzw= - -d3-zoom@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.7.1.tgz#02f43b3c3e2db54f364582d7e4a236ccc5506b63" - integrity sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3@^4.12.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/d3/-/d3-4.13.0.tgz#ab236ff8cf0cfc27a81e69bf2fb7518bc9b4f33d" - integrity sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ== - dependencies: - d3-array "1.2.1" - d3-axis "1.0.8" - d3-brush "1.0.4" - d3-chord "1.0.4" - d3-collection "1.0.4" - d3-color "1.0.3" - d3-dispatch "1.0.3" - d3-drag "1.2.1" - d3-dsv "1.0.8" - d3-ease "1.0.3" - d3-force "1.1.0" - d3-format "1.2.2" - d3-geo "1.9.1" - d3-hierarchy "1.1.5" - d3-interpolate "1.1.6" - d3-path "1.0.5" - d3-polygon "1.0.3" - d3-quadtree "1.0.3" - d3-queue "3.0.7" - d3-random "1.1.0" - d3-request "1.0.6" - d3-scale "1.0.7" - d3-selection "1.3.0" - d3-shape "1.2.0" - d3-time "1.0.8" - d3-time-format "2.1.1" - d3-timer "1.0.7" - d3-transition "1.1.1" - d3-voronoi "1.1.2" - d3-zoom "1.7.1" - -dash-ast@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" - integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.0.0, debug@^3.1.0, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -deep-equal@^1.0.0, deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= - dependencies: - strip-bom "^3.0.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0, defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -dependency-graph@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.8.1.tgz#9b8cae3aa2c7bd95ccb3347a09a2d1047a6c3c5a" - integrity sha512-g213uqF8fyk40W8SBjm079n3CZB4qSpCrA2ye1fLGzH/4HEgB6tzuW2CbLE7leb4t45/6h44Ud59Su1/ROTfqw== - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -deps-sort@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" - integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== - dependencies: - JSONStream "^1.0.3" - shasum-object "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" - integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== - dependencies: - repeat-string "^1.5.4" - -detect-libc@^1.0.2, detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -detective@^4.0.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" - integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig== - dependencies: - acorn "^5.2.1" - defined "^1.0.0" - -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - -diff@^1.3.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8= - -diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine-temporary-fork@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz#36f2154f556ee4f1e60311d391cd23de5187ed57" - integrity sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA== - dependencies: - esutils "^2.0.2" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -documentation@~12.1.1: - version "12.1.4" - resolved "https://registry.yarnpkg.com/documentation/-/documentation-12.1.4.tgz#ec0aafbd9d3879a44189d2d4434953ae3a258598" - integrity sha512-GGS635tR8bBR/m/AuUZ6MCZmFXZA25Wk9S/TTHNe+EMkTCoDdlcft56dZCjF7voCmfnMqKRo8sXAukf/ciA5IA== - dependencies: - "@babel/core" "^7.1.2" - "@babel/generator" "^7.1.3" - "@babel/parser" "7.1.3" - "@babel/plugin-proposal-class-properties" "^7.1.0" - "@babel/plugin-proposal-decorators" "^7.1.2" - "@babel/plugin-proposal-do-expressions" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-export-namespace-from" "^7.0.0" - "@babel/plugin-proposal-function-bind" "^7.0.0" - "@babel/plugin-proposal-function-sent" "^7.1.0" - "@babel/plugin-proposal-json-strings" "^7.0.0" - "@babel/plugin-proposal-logical-assignment-operators" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-proposal-pipeline-operator" "^7.0.0" - "@babel/plugin-proposal-throw-expressions" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-import-meta" "^7.0.0" - "@babel/preset-env" "^7.1.0" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-react" "^7.0.0" - "@babel/preset-stage-0" "^7.0.0" - "@babel/traverse" "^7.1.4" - "@babel/types" "^7.1.3" - ansi-html "^0.0.7" - babelify "^10.0.0" - chalk "^2.3.0" - chokidar "^2.0.4" - concat-stream "^1.6.0" - diff "^4.0.1" - doctrine-temporary-fork "2.1.0" - get-port "^4.0.0" - git-url-parse "^11.1.2" - github-slugger "1.2.0" - glob "^7.1.2" - globals-docs "^2.4.0" - highlight.js "^9.15.5" - ini "^1.3.5" - js-yaml "^3.10.0" - lodash "^4.17.10" - mdast-util-inject "^1.1.0" - micromatch "^3.1.5" - mime "^2.2.0" - module-deps-sortable "5.0.0" - parse-filepath "^1.0.2" - pify "^4.0.0" - read-pkg-up "^4.0.0" - remark "^9.0.0" - remark-html "^8.0.0" - remark-reference-links "^4.0.1" - remark-toc "^5.0.0" - resolve "^1.8.1" - stream-array "^1.1.2" - strip-json-comments "^2.0.1" - tiny-lr "^1.1.0" - unist-builder "^1.0.2" - unist-util-visit "^1.3.0" - vfile "^4.0.0" - vfile-reporter "^6.0.0" - vfile-sort "^2.1.0" - vinyl "^2.1.0" - vinyl-fs "^3.0.2" - vue-template-compiler "^2.5.16" - yargs "^12.0.2" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domain-browser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -earcut@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11" - integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.5.7: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -ejs@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" - integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== - dependencies: - jake "^10.6.1" - -electron-to-chromium@^1.3.380: - version "1.3.384" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.384.tgz#ca1d5710a4c53168431f1cbef39c8a971b646bf8" - integrity sha512-9jGNF78o450ymPf63n7/j1HrRAD4xGTsDkKY2X6jtCAWaYgph2A9xQjwfwRpj+AovkARMO+JfZuVCFTdandD6w== - -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -"emoji-regex@>=6.0.0 <=6.1.1": - version "6.1.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" - integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -engine.io-client@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" - integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~4.1.0" - engine.io-parser "~2.2.0" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~6.1.0" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" - integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.0.tgz#3a962cc4535928c252759a00f98519cb46c53ff3" - integrity sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w== - dependencies: - accepts "~1.3.4" - base64id "2.0.0" - cookie "0.3.1" - debug "~4.1.0" - engine.io-parser "~2.2.0" - ws "^7.1.2" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== - -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" - integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== - dependencies: - string-template "~0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" - integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^1.11.0, escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-mourner@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-mourner/-/eslint-config-mourner-3.0.0.tgz#2cb7df3a14889e70409bbc3250ef0373285e7430" - integrity sha512-QWMt3Cbqkhg/73fZ2UrTNa/p27nF3JhI1Ej2Jg7qSBri88Y0bg4LFzz0/6I5IrvFR10c6UPwDS+DsV9Ec42aVQ== - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" - integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@^3.9.1: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== - dependencies: - lodash "^4.17.15" - -eslint-plugin-html@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz#e2388f813f75b2287cde884811eab287de8e0f56" - integrity sha512-v/33i3OD0fuXcRXexVyXXBOe4mLBLBQoF1UO1Uy9D+XLq4MC8K45GcQKfqjC/FnHAHp3pYUjpHHktYNCtShGmg== - dependencies: - htmlparser2 "^3.10.0" - -eslint-plugin-import@^2.22.1: - version "2.23.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" - integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jsdoc@^30.7.8: - version "30.7.13" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.13.tgz#52e5c74fb806d3bbeb51d04a0c829508c3c6b563" - integrity sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ== - dependencies: - comment-parser "^0.7.6" - debug "^4.3.1" - jsdoctypeparser "^9.0.0" - lodash "^4.17.20" - regextras "^0.7.1" - semver "^7.3.4" - spdx-expression-parse "^3.0.1" - -eslint-plugin-react@^7.21.5: - version "7.24.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz#eadedfa351a6f36b490aa17f4fa9b14e842b9eb4" - integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.4" - object.fromentries "^2.0.4" - object.values "^1.1.4" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - string.prototype.matchall "^4.0.5" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.15.0: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8" - integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -esm@~3.0.84: - version "3.0.84" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" - integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -espurify@^2.0.0, espurify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.0.1.tgz#c25b3bb613863daa142edcca052370a1a459f41d" - integrity sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== - -events-to-array@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" - integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y= - -events@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" - integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.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" - -execall@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" - integrity sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M= - dependencies: - clone-regexp "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -express@^4.10.7: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-safe-stringify@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== - -fastq@^1.6.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== - dependencies: - reusify "^1.0.4" - -faye-websocket@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fd@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c" - integrity sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA== - -file-entry-cache@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" - integrity sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA== - dependencies: - flat-cache "^2.0.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" - integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== - dependencies: - minimatch "^3.0.4" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -fireworm@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/fireworm/-/fireworm-0.7.1.tgz#ccf20f7941f108883fcddb99383dbe6e1861c758" - integrity sha1-zPIPeUHxCIg/zduZOD2+bhhhx1g= - dependencies: - async "~0.2.9" - is-type "0.0.1" - lodash.debounce "^3.1.1" - lodash.flatten "^3.0.2" - minimatch "^3.0.2" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" - integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== - -flatted@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" - integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg== - -flow-bin@^0.100.0: - version "0.100.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.100.0.tgz#729902726658cfa0a81425d6401f9625cf9f5534" - integrity sha512-jcethhgrslBJukH7Z7883ohFFpzLrdsOEwHxvn5NwuTWbNaE71GAl55/PEBRJwYpDvYkRlqgcNkANTv0x5XjqA== - -flush-write-stream@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" - integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== - dependencies: - debug "^3.0.0" - -for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreground-child@^1.3.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-exists-cached@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" - integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1, function-bind@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-loop@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-1.0.2.tgz#16b93dd757845eacfeca1a8061a6a65c106e0cb2" - integrity sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -geojson-vt@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" - integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== - -get-assigned-identifiers@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" - integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-npm-tarball-url@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.1.tgz#43c15223c35096e3e4068d8a6c6747bbdfc23462" - integrity sha512-POrVRGyS9X5w+855/H46JGVYBGuVgJXyIkbsTCzW+sv5x2qH+rfQjc7652DzkgOskF+cqLevA2En7V0hu0gZCg== - dependencies: - normalize-registry-url "^1.0.0" - -get-port@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -git-up@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== - dependencies: - is-ssh "^1.3.0" - parse-url "^5.0.0" - -git-url-parse@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" - integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== - dependencies: - git-up "^4.0.0" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= - -github-slugger@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.0.tgz#8ada3286fd046d8951c3c952a8d7854cfd90fd9a" - integrity sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q== - dependencies: - emoji-regex ">=6.0.0 <=6.1.1" - -github-slugger@^1.0.0, github-slugger@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" - integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== - dependencies: - emoji-regex ">=6.0.0 <=6.1.1" - -gl-matrix@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.2.1.tgz#2d8e35125bf854f49abded8a0c8350b1a4907a26" - integrity sha512-YYVO8jUSf6+SakL4AJmx9Jc7zAZhkJQ+WhdtX3VQe5PJdCOX6/ybY4x1vk+h94ePnjRn6uml68+QxTAJneUpvA== - -gl@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/gl/-/gl-4.5.3.tgz#230c96ce59755a986eb343c371239c67ae511d79" - integrity sha512-W1Dfdx5DHAiRBAXxDW7nVT8N+gqcZ14+s8yKeNAqLiXZI+3ohb5/4J+EJrABgtug0tPlaYmRp1y0n3k91CYQ6w== - dependencies: - bindings "^1.5.0" - bit-twiddle "^1.0.2" - glsl-tokenizer "^2.0.2" - nan "^2.14.1" - node-abi "^2.16.0" - node-gyp "^6.1.0" - prebuild-install "^5.1.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^5.0.14: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.4, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - 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-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals-docs@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/globals-docs/-/globals-docs-2.4.1.tgz#d16887709f4a15eb22d97e96343591f87a2ee3db" - integrity sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg== - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.10.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" - integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -globjoin@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" - integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= - -glsl-tokenizer@^2.0.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a" - integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA== - dependencies: - through2 "^0.6.3" - -gonzales-pe@^4.2.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" - integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ== - dependencies: - minimist "1.1.x" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -graceful-fs@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -graceful-fs@~4.1.11: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -grid-index@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" - integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" - integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= - dependencies: - is-stream "^1.0.1" - -hast-util-is-element@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.4.tgz#059090a05cc02e275df1ad02caf8cb422fcd2e02" - integrity sha512-NFR6ljJRvDcyPP5SbV7MyPBgF47X3BsskLnmw1U34yL+X6YC0MoBx9EyMg8Jtx4FzGH95jw8+c1VPLHaRA0wDQ== - -hast-util-sanitize@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-1.3.1.tgz#4e60d66336bd67e52354d581967467029a933f2e" - integrity sha512-AIeKHuHx0Wk45nSkGVa2/ujQYTksnDl8gmmKo/mwQi7ag7IBZ8cM3nJ2G86SajbjGP/HRpud6kMkPtcM2i0Tlw== - dependencies: - xtend "^4.0.1" - -hast-util-to-html@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a" - integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg== - dependencies: - ccount "^1.0.0" - comma-separated-tokens "^1.0.1" - hast-util-is-element "^1.0.0" - hast-util-whitespace "^1.0.0" - html-void-elements "^1.0.0" - property-information "^4.0.0" - space-separated-tokens "^1.0.0" - stringify-entities "^1.0.1" - unist-util-is "^2.0.0" - xtend "^4.0.1" - -hast-util-whitespace@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" - integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== - -he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^9.15.5: - version "9.18.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" - integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" - integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-void-elements@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" - integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== - -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= - -htmlparser2@^3.10.0, htmlparser2@^3.9.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy@^1.13.1: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" - integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.12, ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ignore-walk@^3.0.1, ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.0.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-lazy@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" - integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= - dependencies: - source-map "~0.5.3" - -insert-module-globals@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" - integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== - dependencies: - JSONStream "^1.0.3" - acorn-node "^1.5.2" - combine-source-map "^0.8.0" - concat-stream "^1.6.1" - is-buffer "^1.1.0" - path-is-absolute "^1.0.1" - process "~0.11.0" - through2 "^2.0.0" - undeclared-identifiers "^1.1.2" - xtend "^4.0.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-builtin-module@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" - integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== - dependencies: - builtin-modules "^3.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0, is-core-module@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - -is-reference@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== - dependencies: - "@types/estree" "0.0.39" - -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-ssh@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== - dependencies: - protocols "^1.1.0" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-supported-regexp-flag@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" - integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-type@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/is-type/-/is-type-0.0.1.tgz#f651d85c365d44955d14a51d8d7061f3f6b4779c" - integrity sha1-9lHYXDZdRJVdFKUdjXBh8/a0d5w= - dependencies: - core-util-is "~1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-url@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.3, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-hook@^2.0.3: - version "2.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" - integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== - dependencies: - append-transform "^1.0.0" - -istanbul-lib-instrument@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.2: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-reports@^2.1.1: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.10.0, js-yaml@^3.12.1, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdoctypeparser@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" - integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== - -jsdom@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" - integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.0.9" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.5" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= - dependencies: - jsonify "~0.0.0" - -json-stringify-pretty-compact@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" - integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" - -json5@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsonlint-lines@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/jsonlint-lines/-/jsonlint-lines-1.7.1.tgz#507de680d3fb8c4be1641cc57d6f679f29f178ff" - integrity sha1-UH3mgNP7jEvhZBzFfW9nnynxeP8= - dependencies: - JSV ">= 4.0.x" - nomnom ">= 1.5.x" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsonwebtoken@^8.3.0: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -jszip@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" - integrity sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - -just-extend@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" - integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -kdbush@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" - integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -known-css-properties@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" - integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== - -labeled-stream-splicer@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" - integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== - dependencies: - inherits "^2.0.1" - stream-splicer "^2.0.0" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= - -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - -list-npm-contents@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/list-npm-contents/-/list-npm-contents-1.0.2.tgz#4fadf7a0e2c894fad92fcfc0092b0cec69444683" - integrity sha512-cpAkA9+ioEqHnxTuh3UDRewX+obC3mTr9dlYRVnTt0riggK+0IdKIed7BPn1BgkBQP+TVHiso4Rj0ZxGaXzh1Q== - dependencies: - bluebird "^3.5.0" - get-npm-tarball-url "^2.0.0" - got "^6.7.1" - is-url "^1.2.2" - ls-archive "^1.2.3" - meow "^3.3.0" - registry-url "^4.0.0" - tmp "0.0.31" - -livereload-js@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" - integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash._baseflatten@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz#0770ff80131af6e34f3b511796a7ba5214e65ff7" - integrity sha1-B3D/gBMa9uNPO1EXlqe6UhTmX/c= - dependencies: - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.assignin@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.castarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" - integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= - -lodash.clonedeep@^4.4.1, lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.debounce@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-3.1.1.tgz#812211c378a94cc29d5aa4e3346cf0bfce3a7df5" - integrity sha1-gSIRw3ipTMKdWqTjNGzwv846ffU= - dependencies: - lodash._getnative "^3.0.0" - -lodash.find@^4.5.1: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= - -lodash.flatten@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-3.0.2.tgz#de1cf57758f8f4479319d35c3e9cc60c4501938c" - integrity sha1-3hz1d1j49EeTGdNcPpzGDEUBk4w= - dependencies: - lodash._baseflatten "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= - -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.19: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lodash@^4.17.20: - version "4.17.20" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - -log-symbols@^2.0.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -lolex@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7" - integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg== - -lolex@^5.0.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - -longest-streak@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" - integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lru-cache@^4.0.0, lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -ls-archive@^1.2.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ls-archive/-/ls-archive-1.3.4.tgz#52150919dab1acb094cdcef9dde9c66934a4650f" - integrity sha512-7GmjZOckV+gzm4PM1/LcWIsZIRsSkAVmIchoEf5xjquNKU0Ti5KUvGQ3dl/7VsbZIduMOPwRDXrvpo3LVJ0Pmg== - dependencies: - async "~0.2.9" - colors "~0.6.2" - optimist "~0.5.2" - rimraf "~2.2.6" - tar "^2.2.1" - yauzl "^2.9.1" - -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - -magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.0, map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -mapbox-gl-styles@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mapbox-gl-styles/-/mapbox-gl-styles-2.0.2.tgz#bb525b77ea0dc2b041bb8051645176f3783e294a" - integrity sha1-u1Jbd+oNwrBBu4BRZFF283g+KUo= - dependencies: - glob "^5.0.14" - -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -markdown-table@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - -mathml-tag-names@^2.0.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" - integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdast-util-compact@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" - integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== - dependencies: - unist-util-visit "^1.1.0" - -mdast-util-definitions@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" - integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== - dependencies: - unist-util-visit "^1.0.0" - -mdast-util-inject@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz#db06b8b585be959a2dcd2f87f472ba9b756f3675" - integrity sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU= - dependencies: - mdast-util-to-string "^1.0.0" - -mdast-util-to-hast@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40" - integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA== - dependencies: - collapse-white-space "^1.0.0" - detab "^2.0.0" - mdast-util-definitions "^1.2.0" - mdurl "^1.0.1" - trim "0.0.1" - trim-lines "^1.0.0" - unist-builder "^1.0.1" - unist-util-generated "^1.1.0" - unist-util-position "^3.0.0" - unist-util-visit "^1.1.0" - xtend "^4.0.1" - -mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" - integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== - -mdast-util-toc@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz#395eeb877f067f9d2165d990d77c7eea6f740934" - integrity sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w== - dependencies: - github-slugger "^1.2.1" - mdast-util-to-string "^1.0.5" - unist-util-is "^2.1.2" - unist-util-visit "^1.1.0" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.2.0: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mime@~1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - -minimist@1.1.x: - version "1.1.3" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^2.2.0, minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" - integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== - dependencies: - yallist "^4.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-classic@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" - integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== - -"mkdirp@>=0.5 0": - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@~0.5.1: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" - integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== - dependencies: - minimist "^1.2.5" - -mock-geolocation@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/mock-geolocation/-/mock-geolocation-1.0.11.tgz#2c7b99242a2c70dbecd317b392b30311722992c8" - integrity sha1-LHuZJCoscNvs0xezkrMDEXIpksg= - -module-deps-sortable@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz#99db5bb08f7eab55e4c31f6b7c722c6a2144ba74" - integrity sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg== - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.5.0" - defined "^1.0.0" - detective "^4.0.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - readable-stream "^2.0.2" - resolve "^1.1.3" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - -module-deps@^6.0.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.2.tgz#d8a15c2265dfc119153c29bb47386987d0ee423b" - integrity sha512-a9y6yDv5u5I4A+IPHTnqFxcaKr4p50/zxTjcQJaX2ws9tN/W6J6YXnEKhqRyPhl494dkcxx951onSKVezmI+3w== - dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.2" - concat-stream "~1.6.0" - defined "^1.0.0" - detective "^5.2.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.4.0" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multi-stage-sourcemap@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/multi-stage-sourcemap/-/multi-stage-sourcemap-0.3.1.tgz#35bb1e0655cb022516e9f92d738c07a2aacfeec0" - integrity sha512-UiTLYjqeIoVnJHyWGskwMKIhtZKK9uXUjSTWuwatarrc0d2H/6MAVFdwvEA/aKOHamIn7z4tfvxjz+FYucFpNQ== - dependencies: - source-map "^0.1.34" - -murmurhash-js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" - integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E= - -mustache@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.1.tgz#89e78a9d207d78f2799b1e95764a25bf71a28322" - integrity sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA== - -nan@^2.12.1, nan@^2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nan@^2.14.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.2, negotiator@~0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nise@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.3.tgz#9d2cfe37d44f57317766c6e9408a359c5d3ac1f7" - integrity sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ== - dependencies: - "@sinonjs/formatio" "^3.2.1" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - lolex "^5.0.1" - path-to-regexp "^1.7.0" - -node-abi@^2.16.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.18.0.tgz#1f5486cfd7d38bd4f5392fa44a4ad4d9a0dffbf4" - integrity sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw== - dependencies: - semver "^5.4.1" - -node-abi@^2.7.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.15.0.tgz#51d55cc711bd9e4a24a572ace13b9231945ccb10" - integrity sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg== - dependencies: - semver "^5.4.1" - -node-fetch@^2.3.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-gyp@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-6.1.0.tgz#64e31c61a4695ad304c1d5b82cf6b7c79cc79f3f" - integrity sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-nailgun-client@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/node-nailgun-client/-/node-nailgun-client-0.1.2.tgz#c8ee2f8226664020192e4936cacaadf9aa13ae29" - integrity sha512-OC611lR0fsDUSptwnhBf8d3sj4DZ5fiRKfS2QaGPe0kR3Dt9YoZr1MY7utK0scFPTbXuQdSBBbeoKYVbME1q5g== - dependencies: - commander "^2.8.1" - -node-nailgun-server@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/node-nailgun-server/-/node-nailgun-server-0.1.4.tgz#80cbf1af37611030c60aa88be72d657994df50d4" - integrity sha512-e0Hbh6XPb/7GqATJ45BePaUEO5AwR7InRW/pGeMKHH1cqPMBFCeqdBNfvi+bkVLnsbYOOQE+pAek9nmNoD8sYw== - dependencies: - commander "^2.8.1" - -node-notifier@^5.0.1, node-notifier@^5.4.3: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-plantuml@^0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/node-plantuml/-/node-plantuml-0.9.0.tgz#7a6cd34c7c26fbdd3124b1f792974ed6446addcb" - integrity sha512-bUnntTGjbpYu1pvXZI/GS6ctcXf3AOMqJxBMO8vFzTT5RwH8Cj/J5Ca6Dy+PEfMiMDdSBCFKSGnvYyBvYnucXg== - dependencies: - commander "^2.8.1" - node-nailgun-client "^0.1.0" - node-nailgun-server "^0.1.4" - plantuml-encoder "^1.2.5" - -node-pre-gyp@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.52: - version "1.1.52" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" - integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== - dependencies: - semver "^6.3.0" - -"nomnom@>= 1.5.x": - version "1.8.1" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-registry-url@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-registry-url/-/normalize-registry-url-1.0.0.tgz#f75d2c48373da780c76f1f0eeb6382c06e784d13" - integrity sha512-0v6T4851b72ykk5zEtFoN4QX/Fqyk7pouIj9xZyAvAe9jlDhAwT4z6FlwsoQCHjeuK2EGUoAwy/F4y4B1uZq9A== - -normalize-selector@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" - integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= - -normalize-url@^3.0.0, normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - -npm-bundled@^1.0.1, npm-bundled@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-font-open-sans@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/npm-font-open-sans/-/npm-font-open-sans-1.1.0.tgz#8c27a56e43872747b8448dcc30653a649866c6ef" - integrity sha512-t1y5ShWm6a8FSLwBdINT47XYMcuKY2rkTBsTdz/76YB2MtX0YD89RUkY2eSS2/XOmlZfBe1HFBAwD+b9+/UfmQ== - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-packlist@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.1.tgz#08806a1df79acdc43d02d20c83a3d5472d96c90c" - integrity sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ== - dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-run-all@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.0.9: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -nyc@^13.1.0, nyc@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-13.3.0.tgz#da4dbe91a9c8b9ead3f4f3344c76f353e3c78c75" - integrity sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w== - dependencies: - archy "^1.0.0" - arrify "^1.0.1" - caching-transform "^3.0.1" - convert-source-map "^1.6.0" - find-cache-dir "^2.0.0" - find-up "^3.0.0" - foreground-child "^1.5.6" - glob "^7.1.3" - istanbul-lib-coverage "^2.0.3" - istanbul-lib-hook "^2.0.3" - istanbul-lib-instrument "^3.1.0" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.2" - istanbul-reports "^2.1.1" - make-dir "^1.3.0" - merge-source-map "^1.1.0" - resolve-from "^4.0.0" - rimraf "^2.6.3" - signal-exit "^3.0.2" - spawn-wrap "^1.4.2" - test-exclude "^5.1.0" - uuid "^3.3.2" - yargs "^12.0.5" - yargs-parser "^11.1.1" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.10.3, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-inspect@^1.7.0, object-inspect@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.0.4, object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.values@^1.1.3, object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -open@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" - integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - -optimist@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.5.2.tgz#85c8c1454b3315e4a78947e857b1df033450bfbc" - integrity sha1-hcjBRUszFeSniUfoV7HfAzRQv7w= - dependencies: - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - -os-browserify@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0, os-homedir@^1.0.1, os-homedir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-homedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" - integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -own-or-env@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.1.tgz#54ce601d3bf78236c5c65633aa1c8ec03f8007e4" - integrity sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw== - dependencies: - own-or "^1.0.0" - -own-or@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc" - integrity sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw= - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" - integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== - dependencies: - graceful-fs "^4.1.15" - hasha "^3.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -pako@~1.0.2, pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= - dependencies: - path-platform "~0.11.15" - -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-entities@^1.0.2, parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-filepath@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - -parse-url@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== - dependencies: - is-ssh "^1.3.0" - normalize-url "^3.3.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbf@^3.0.5, pbf@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" - integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== - dependencies: - ieee754 "^1.1.12" - resolve-protobuf-schema "^2.1.0" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.7: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pidtree@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" - integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.0, pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-3.0.2.tgz#7e6f85413fd9161ab4e12b539b06010d85954bb9" - integrity sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q== - dependencies: - node-modules-regexp "^1.0.0" - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pixelmatch@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.1.0.tgz#b640f0e5a03a09f235a4b818ef3b9b98d9d0b911" - integrity sha512-HqtgvuWN12tBzKJf7jYsc38Ha28Q2NYpmBL9WostEGgDHJqbTLkjydZXL1ZHM02ZnB+Dkwlxo87HBY38kMiD6A== - dependencies: - pngjs "^3.4.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -plantuml-encoder@^1.2.5: - version "1.4.0" - resolved "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz#7899302cf785de956bf1a167e15420feee5975f7" - integrity sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g== - -platform@^1.3.3: - version "1.3.5" - resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" - integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q== - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pngjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-cli@^6.1.2: - version "6.1.3" - resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-6.1.3.tgz#a9eec3e9cde4aaa90170546baf706f8af6f8ecec" - integrity sha512-eieqJU+OR1OFc/lQqMsDmROTJpoMZFvoAQ+82utBQ8/8qGMTfH9bBSPsTdsagYA8uvNzxHw2I2cNSSJkLAGhvw== - dependencies: - chalk "^2.1.0" - chokidar "^2.0.0" - dependency-graph "^0.8.0" - fs-extra "^7.0.0" - get-stdin "^6.0.0" - globby "^9.0.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - postcss-reporter "^6.0.0" - pretty-hrtime "^1.0.3" - read-cache "^1.0.0" - yargs "^12.0.1" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-html@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" - integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== - dependencies: - htmlparser2 "^3.10.0" - -postcss-inline-svg@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-inline-svg/-/postcss-inline-svg-3.1.1.tgz#b4215f4b2bee605889d2ae9e6007d5c70cdec34a" - integrity sha512-G2BkarW6gGpGFGAiKzW7aiulUS0/6QuCgq1riZEiX4oMaUTpU1pdW7BU6UFRDrdKkwS0r4icK2pU0bg6sCSOjw== - dependencies: - css-select "^1.2.0" - dom-serializer "^0.1.0" - htmlparser2 "^3.9.0" - postcss "^6.0.1" - postcss-value-parser "^3.2.3" - -postcss-jsx@^0.36.0: - version "0.36.4" - resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" - integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== - dependencies: - "@babel/core" ">=7.2.2" - -postcss-less@^3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" - integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== - dependencies: - postcss "^7.0.14" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-markdown@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" - integrity sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== - dependencies: - remark "^10.0.1" - unist-util-find-all-after "^1.0.2" - -postcss-media-query-parser@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" - integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reporter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" - integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== - dependencies: - chalk "^2.4.1" - lodash "^4.17.11" - log-symbols "^2.2.0" - postcss "^7.0.7" - -postcss-resolve-nested-selector@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" - integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= - -postcss-safe-parser@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" - integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== - dependencies: - postcss "^7.0.26" - -postcss-sass@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.5.tgz#6d3e39f101a53d2efa091f953493116d32beb68c" - integrity sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A== - dependencies: - gonzales-pe "^4.2.3" - postcss "^7.0.1" - -postcss-scss@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1" - integrity sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug== - dependencies: - postcss "^7.0.0" - -postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-syntax@^0.36.2: - version "0.36.2" - resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" - integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== - -"postcss@5 - 7", postcss@7.x.x: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.7: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -potpack@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf" - integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw== - -prebuild-install@^5.1.0: - version "5.3.3" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e" - integrity sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.0" - mkdirp "^0.5.1" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-bytes@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" - integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -printf@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/printf/-/printf-0.5.3.tgz#8b7eec278d886833312238b2bf42b2b6f250880a" - integrity sha512-t3lYN6vPU5PZXDiEZZqoyXvN8wCsBfi8gPoxTKo2e5hhV673t/KUh+mfO8P8lCOCDC/BWcOGIxKyebxc5FuqLA== - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -process@~0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0, progress@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -property-information@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e" - integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ== - dependencies: - xtend "^4.0.1" - -protocol-buffers-schema@^3.3.1, protocol-buffers-schema@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz#2f0ea31ca96627d680bf2fefae7ebfa2b6453eae" - integrity sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA== - -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer@^1.18.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.20.0.tgz#e3d267786f74e1d87cf2d15acc59177f471bbe38" - integrity sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ== - dependencies: - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^2.2.1" - mime "^2.0.3" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.4.0: - version "6.9.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" - integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring-es3@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - -quickselect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" - integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" - integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= - dependencies: - bytes "1" - string_decoder "0.10" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-dom@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= - dependencies: - pify "^2.3.0" - -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= - dependencies: - readable-stream "^2.0.2" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - 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" - -readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readable-stream@~2.1.0: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== - dependencies: - picomatch "^2.0.7" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== - dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.5.4, regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regextras@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" - integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== - -registry-url@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-4.0.0.tgz#7dc344ef0f1496fc95a6ad04ccb9a491df11c025" - integrity sha512-WAfGLywivb8s2+Cfblq1UV+kOyzURHzWSJmciDvrmstr4bv/0lnVSB9jfoOfkxx5xNJ1OGlSFmZh9WYBLFJOPg== - dependencies: - rc "^1.2.7" - -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= - dependencies: - es6-error "^4.0.1" - -remark-html@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-8.0.0.tgz#9fcb859a6f3cb40f3ef15402950f1a62ec301b3a" - integrity sha512-3V2391GL3hxKhrkzYOyfPpxJ6taIKLCfuLVqumeWQOk3H9nTtSQ8St8kMYkBVIEAquXN1chT83qJ/2lAW+dpEg== - dependencies: - hast-util-sanitize "^1.0.0" - hast-util-to-html "^4.0.0" - mdast-util-to-hast "^3.0.0" - xtend "^4.0.1" - -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - -remark-parse@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" - integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - -remark-reference-links@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/remark-reference-links/-/remark-reference-links-4.0.4.tgz#190579a0d6b002859d6cdbdc5aeb8bbdae4e06ab" - integrity sha512-+2X8hwSQqxG4tvjYZNrTcEC+bXp8shQvwRGG6J/rnFTvBoU4G0BBviZoqKGZizLh/DG+0gSYhiDDWCqyxXW1iQ== - dependencies: - unist-util-visit "^1.0.0" - -remark-slug@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-5.1.2.tgz#715ecdef8df1226786204b1887d31ab16aa24609" - integrity sha512-DWX+Kd9iKycqyD+/B+gEFO3jjnt7Yg1O05lygYSNTe5i5PIxxxPjp5qPBDxPIzp5wreF7+1ROCwRgjEcqmzr3A== - dependencies: - github-slugger "^1.0.0" - mdast-util-to-string "^1.0.0" - unist-util-visit "^1.0.0" - -remark-stringify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-5.0.0.tgz#336d3a4d4a6a3390d933eeba62e8de4bd280afba" - integrity sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w== - dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^1.1.0" - mdast-util-compact "^1.0.0" - parse-entities "^1.0.2" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^1.0.1" - unherit "^1.0.4" - xtend "^4.0.1" - -remark-stringify@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" - integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== - dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^1.1.0" - mdast-util-compact "^1.0.0" - parse-entities "^1.0.2" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^1.0.1" - unherit "^1.0.4" - xtend "^4.0.1" - -remark-toc@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/remark-toc/-/remark-toc-5.1.1.tgz#8c229d6f834cdb43fde6685e2d43248d3fc82d78" - integrity sha512-vCPW4YOsm2CfyuScdktM9KDnJXVHJsd/ZeRtst+dnBU3B3KKvt8bc+bs5syJjyptAHfqo7H+5Uhz+2blWBfwow== - dependencies: - mdast-util-toc "^3.0.0" - remark-slug "^5.0.0" - -remark@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" - integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== - dependencies: - remark-parse "^6.0.0" - remark-stringify "^6.0.0" - unified "^7.0.0" - -remark@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark/-/remark-9.0.0.tgz#c5cfa8ec535c73a67c4b0f12bfdbd3a67d8b2f60" - integrity sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A== - dependencies: - remark-parse "^5.0.0" - remark-stringify "^5.0.0" - unified "^6.0.0" - -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.5.0, repeat-string@^1.5.4, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -replace-ext@1.0.0, replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - 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.3" - 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.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - -resolve-protobuf-schema@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" - integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== - dependencies: - protocol-buffers-schema "^3.3.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.1.3, resolve@^1.1.4, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1, resolve@~1.15.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2, rimraf@^2.4.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@2.6.3, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-buble@^0.19.8: - version "0.19.8" - resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.19.8.tgz#f9232e2bb62a7573d04f9705c1bd6f02c2a02c6a" - integrity sha512-8J4zPk2DQdk3rxeZvxgzhHh/rm5nJkjwgcsUYisCQg1QbT5yagW+hehYEW7ZNns/NVbDCTv4JQ7h4fC8qKGOKw== - dependencies: - buble "^0.19.8" - rollup-pluginutils "^2.3.3" - -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" - integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== - dependencies: - rollup-pluginutils "^2.5.0" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-plugin-replace@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" - integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== - dependencies: - magic-string "^0.25.2" - rollup-pluginutils "^2.6.0" - -rollup-plugin-sourcemaps@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#62125aa94087aadf7b83ef4dfaf629b473135e87" - integrity sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - dependencies: - rollup-pluginutils "^2.0.1" - source-map-resolve "^0.5.0" - -rollup-plugin-terser@^5.1.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" - integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^2.1.2" - terser "^4.6.2" - -rollup-plugin-unassert@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-unassert/-/rollup-plugin-unassert-0.3.0.tgz#a6d5e52e6354d1a3f223077811b4040bd7cfc763" - integrity sha512-mdRJ8AinuNdtoS9L+CXVQcoaHLHV+eeEV5b9u76ai3yxOWp3t1oXQOuDjRmRiIjOYWYxCkSYiFQH72QoPdDfwQ== - dependencies: - acorn "^6.1.1" - convert-source-map "^1.6.0" - escodegen "^1.11.1" - multi-stage-sourcemap "^0.3.1" - rollup-pluginutils "^2.5.0" - unassert "^1.5.1" - -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^0.63.4: - version "0.63.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.63.5.tgz#5543eecac9a1b83b7e1be598b5be84c9c0a089db" - integrity sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "*" - -rollup@^1.23.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rw@1, rw@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-json-parse@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" - integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.5: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -seedrandom@^2.4.2: - version "2.4.4" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" - integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== - -selenium-webdriver@^4.0.0-alpha.5: - version "4.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.7.tgz#e3879d8457fd7ad8e4424094b7dc0540d99e6797" - integrity sha512-D4qnTsyTr91jT8f7MfN+OwY0IlU5+5FmlO5xlgRUV6hDEV8JyYx2NerdTEqDDkNq7RZDYc4VoPALk8l578RBHw== - dependencies: - jszip "^3.2.2" - rimraf "^2.7.1" - tmp "0.0.30" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shasum-object@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" - integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== - dependencies: - fast-safe-stringify "^2.0.7" - -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -shuffle-seed@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/shuffle-seed/-/shuffle-seed-1.1.6.tgz#533c12683bab3b4fa3e8751fc4e562146744260b" - integrity sha1-UzwSaDurO0+j6HUfxOViFGdEJgs= - dependencies: - seedrandom "^2.4.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" - integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= - -simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== - dependencies: - decompress-response "^4.2.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sinon@^7.3.2: - version "7.5.0" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" - integrity sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q== - dependencies: - "@sinonjs/commons" "^1.4.0" - "@sinonjs/formatio" "^3.2.1" - "@sinonjs/samsam" "^3.3.3" - diff "^3.5.0" - lolex "^4.2.0" - nise "^1.5.2" - supports-color "^5.5.0" - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - -socket.io-client@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" - integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~4.1.0" - engine.io-client "~3.4.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" - integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io-parser@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.0.tgz#370bb4a151df2f77ce3345ff55a7072cc6e9565a" - integrity sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ== - dependencies: - component-emitter "1.2.1" - debug "~4.1.0" - isarray "2.0.1" - -socket.io@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" - integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== - dependencies: - debug "~4.1.0" - engine.io "~3.4.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.3.0" - socket.io-parser "~3.4.0" - -source-map-explorer@^2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.1.tgz#35ca7ba3574f0002ac347343f1894e04860c827f" - integrity sha512-sg60PIva7pOkvTqbLRGOB3Cp84I1pial0J6tUNs/bNGIz+0+WNw37oLXEDFHTDJhFh24rto8rESv4wCB7w9HVQ== - dependencies: - btoa "^1.2.1" - chalk "^4.1.0" - convert-source-map "^1.7.0" - ejs "^3.1.5" - escape-html "^1.0.3" - glob "^7.1.6" - gzip-size "^6.0.0" - lodash "^4.17.20" - open "^7.3.0" - source-map "^0.7.3" - temp "^0.9.4" - yargs "^16.1.1" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.10, source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.1.34: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - -spawn-args@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.2.0.tgz#fb7d0bd1d70fd4316bd9e3dec389e65f9d6361bb" - integrity sha1-+30L0dcP1DFr2ePew4nmX51jYbs= - -spawn-wrap@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" - integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.6.2" - signal-exit "^3.0.2" - which "^1.3.0" - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-expression-parse@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -specificity@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" - integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - 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" - -st@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/st/-/st-1.2.2.tgz#b95554f41b457bf0ed1c48f2bad8fccff894b14f" - integrity sha512-goKkumvz0BMLs6KjjPf5Fub/3T34tRVQxInUI5lqtbaKD+s4HcRlJYP2GPJ8RgAmrsnYOPGmOFEP6ho0KJ+E8g== - dependencies: - async-cache "~1.1.0" - bl "~1.2.1" - fd "~0.0.2" - mime "~1.4.1" - negotiator "~0.6.1" - optionalDependencies: - graceful-fs "~4.1.11" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/stream-array/-/stream-array-1.1.2.tgz#9e5f7345f2137c30ee3b498b9114e80b52bb7eb5" - integrity sha1-nl9zRfITfDDuO0mLkRToC1K7frU= - dependencies: - readable-stream "~2.1.0" - -stream-browserify@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-http@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.0.tgz#22fb33fe9b4056b4eccf58bd8f400c4b993ffe57" - integrity sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^3.0.6" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -stream-splicer@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" - integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" - integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.padend@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" - integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -string.prototype.trim@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@0.10, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-entities@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" - integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-hexadecimal "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-search@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" - integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= - -styled_string@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a" - integrity sha1-0ieCvYEpVFm8Tx3xjEutjpTdEko= - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylelint-config-recommended@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz#46ab139db4a0e7151fd5f94af155512886c96d3f" - integrity sha512-bZ+d4RiNEfmoR74KZtCKmsABdBJr4iXRiCso+6LtMJPw5rd/KnxUWTxht7TbafrTJK1YRjNgnN0iVZaJfc3xJA== - -stylelint-config-standard@^18.2.0: - version "18.3.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-18.3.0.tgz#a2a1b788d2cf876c013feaff8ae276117a1befa7" - integrity sha512-Tdc/TFeddjjy64LvjPau9SsfVRexmTFqUhnMBrzz07J4p2dVQtmpncRF/o8yZn8ugA3Ut43E6o1GtjX80TFytw== - dependencies: - stylelint-config-recommended "^2.2.0" - -stylelint@^9.10.1: - version "9.10.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-9.10.1.tgz#5f0ee3701461dff1d68284e1386efe8f0677a75d" - integrity sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ== - dependencies: - autoprefixer "^9.0.0" - balanced-match "^1.0.0" - chalk "^2.4.1" - cosmiconfig "^5.0.0" - debug "^4.0.0" - execall "^1.0.0" - file-entry-cache "^4.0.0" - get-stdin "^6.0.0" - global-modules "^2.0.0" - globby "^9.0.0" - globjoin "^0.1.4" - html-tags "^2.0.0" - ignore "^5.0.4" - import-lazy "^3.1.0" - imurmurhash "^0.1.4" - known-css-properties "^0.11.0" - leven "^2.1.0" - lodash "^4.17.4" - log-symbols "^2.0.0" - mathml-tag-names "^2.0.1" - meow "^5.0.0" - micromatch "^3.1.10" - normalize-selector "^0.2.0" - pify "^4.0.0" - postcss "^7.0.13" - postcss-html "^0.36.0" - postcss-jsx "^0.36.0" - postcss-less "^3.1.0" - postcss-markdown "^0.36.0" - postcss-media-query-parser "^0.2.3" - postcss-reporter "^6.0.0" - postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^4.0.0" - postcss-sass "^0.3.5" - postcss-scss "^2.0.0" - postcss-selector-parser "^3.1.0" - postcss-syntax "^0.36.2" - postcss-value-parser "^3.3.0" - resolve-from "^4.0.0" - signal-exit "^3.0.2" - slash "^2.0.0" - specificity "^0.4.1" - string-width "^3.0.0" - style-search "^0.1.0" - sugarss "^2.0.0" - svg-tags "^1.0.0" - table "^5.0.0" - -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= - dependencies: - minimist "^1.1.0" - -sugarss@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" - integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== - dependencies: - postcss "^7.0.2" - -supercluster@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.0.tgz#f0a457426ec0ab95d69c5f03b51e049774b94479" - integrity sha512-LDasImUAFMhTqhK+cUXfy9C2KTUqJ3gucLjmNLNFmKWOnDUBxLFLH9oKuXOTCLveecmxh8fbk8kgh6Q0gsfe2w== - dependencies: - kdbush "^3.0.0" - -supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.0.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -syntax-error@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" - integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== - dependencies: - acorn-node "^1.2.0" - -table@^5.0.0: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tap-mocha-reporter@^3.0.7: - version "3.0.9" - resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz#ea41e741149a94c278d106cbcccc37fec2dfeeaa" - integrity sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ== - dependencies: - color-support "^1.1.0" - debug "^2.1.3" - diff "^1.3.2" - escape-string-regexp "^1.0.3" - glob "^7.0.5" - js-yaml "^3.3.1" - tap-parser "^5.1.0" - unicode-length "^1.0.0" - optionalDependencies: - readable-stream "^2.1.5" - -tap-parser@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-10.0.1.tgz#b63c2500eeef2be8fbf09d512914196d1f12ebec" - integrity sha512-qdT15H0DoJIi7zOqVXDn9X0gSM68JjNy1w3VemwTJlDnETjbi6SutnqmBfjDJAwkFS79NJ97gZKqie00ZCGmzg== - dependencies: - events-to-array "^1.0.1" - minipass "^3.0.0" - tap-yaml "^1.0.0" - -tap-parser@^5.1.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-5.4.0.tgz#6907e89725d7b7fa6ae41ee2c464c3db43188aec" - integrity sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA== - dependencies: - events-to-array "^1.0.1" - js-yaml "^3.2.7" - optionalDependencies: - readable-stream "^2" - -tap-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721" - integrity sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA== - dependencies: - events-to-array "^1.0.1" - js-yaml "^3.2.7" - minipass "^2.2.0" - -tap-yaml@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/tap-yaml/-/tap-yaml-1.0.0.tgz#4e31443a5489e05ca8bbb3e36cef71b5dec69635" - integrity sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ== - dependencies: - yaml "^1.5.0" - -tap@~12.4.1: - version "12.4.1" - resolved "https://registry.yarnpkg.com/tap/-/tap-12.4.1.tgz#0c50480291c8bfffe889e448a847b66a8f2fd809" - integrity sha512-hWh6V5cIIHwvXwmNb3fL/3athC9NyZuL4ZoiyHUHXqRAJJ6/SBmGX7IOfzj/Pf7EzFy9JwDCw/64eOyKx8XikA== - dependencies: - bind-obj-methods "^2.0.0" - browser-process-hrtime "^1.0.0" - capture-stack-trace "^1.0.0" - clean-yaml-object "^0.1.0" - color-support "^1.1.0" - coveralls "^3.0.2" - domain-browser "^1.2.0" - foreground-child "^1.3.3" - fs-exists-cached "^1.0.0" - function-loop "^1.0.1" - glob "^7.1.3" - isexe "^2.0.0" - js-yaml "^3.12.1" - minipass "^2.3.5" - mkdirp "^0.5.1" - nyc "^13.1.0" - opener "^1.5.1" - os-homedir "^1.0.2" - own-or "^1.0.0" - own-or-env "^1.0.1" - rimraf "^2.6.3" - signal-exit "^3.0.0" - source-map-support "^0.5.10" - stack-utils "^1.0.2" - tap-mocha-reporter "^3.0.7" - tap-parser "^7.0.0" - tmatch "^4.0.0" - trivial-deferred "^1.0.1" - ts-node "^8.0.1" - tsame "^2.0.1" - typescript "^3.2.4" - write-file-atomic "^2.3.0" - yapool "^1.0.0" - -tape-filter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tape-filter/-/tape-filter-1.0.4.tgz#1d637ac064d51926f339ad88f642eb0f87ca9dc7" - integrity sha1-HWN6wGTVGSbzOa2I9kLrD4fKncc= - dependencies: - minimist "^1.2.0" - -tape@^4.13.2: - version "4.13.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.2.tgz#eb419b9d9bc004025b1a81a5b63093e07f425629" - integrity sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ== - dependencies: - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - function-bind "~1.1.1" - glob "~7.1.6" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.0.5" - minimist "~1.2.0" - object-inspect "~1.7.0" - resolve "~1.15.1" - resumer "~0.0.0" - string.prototype.trim "~1.2.1" - through "~2.3.8" - -tar-fs@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.1.tgz#e44086c1c60d31a4f0cf893b1c4e155dabfae9e2" - integrity sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.0.0" - -tar-stream@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" - integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== - dependencies: - bl "^4.0.1" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - -tar@^4, tar@^4.4.12: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -temp@^0.9.4: - version "0.9.4" - resolved "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620" - integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== - dependencies: - mkdirp "^0.5.1" - rimraf "~2.6.2" - -terser@^4.6.2: - version "4.6.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" - integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^5.1.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -testem@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/testem/-/testem-3.0.3.tgz#d59f1ffbcf497909aca5580b0496e6506350d7b8" - integrity sha512-mdBCCn8LlTmgFDpexemyGP4cjO1V0VASs/qbPGZk8Qo05EBnmch29LIqxvWUDih/nA6eau3reXp0rNEef7qpCw== - dependencies: - backbone "^1.1.2" - bluebird "^3.4.6" - charm "^1.0.0" - commander "^2.6.0" - compression "^1.7.4" - consolidate "^0.15.1" - execa "^1.0.0" - express "^4.10.7" - fireworm "^0.7.0" - glob "^7.0.4" - http-proxy "^1.13.1" - js-yaml "^3.2.5" - lodash.assignin "^4.1.0" - lodash.castarray "^4.4.0" - lodash.clonedeep "^4.4.1" - lodash.find "^4.5.1" - lodash.uniqby "^4.7.0" - mkdirp "^0.5.1" - mustache "^3.0.0" - node-notifier "^5.0.1" - npmlog "^4.0.0" - printf "^0.5.1" - rimraf "^2.4.4" - socket.io "^2.1.0" - spawn-args "^0.2.0" - styled_string "0.0.1" - tap-parser "^7.0.0" - tmp "0.0.33" - xmldom "^0.1.19" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^0.6.3: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -"through@>=2.2.7 <3", through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= - dependencies: - process "~0.11.0" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-lr@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" - integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== - dependencies: - body "^5.1.0" - debug "^3.1.0" - faye-websocket "~0.10.0" - livereload-js "^2.3.0" - object-assign "^4.1.0" - qs "^6.4.0" - -tinyqueue@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" - integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== - -tmatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-4.0.0.tgz#ba178007f30bf6a70f37c643fca5045fb2f8c448" - integrity sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg== - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -trim-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" - integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - -trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= - -trivial-deferred@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3" - integrity sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM= - -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - -ts-node@^8.0.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" - integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== - dependencies: - arg "^4.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.6" - yn "3.1.1" - -tsame@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tsame/-/tsame-2.0.1.tgz#70410ddbefcd29c61e2d68549b3347b0444d613f" - integrity sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw== - -tsconfig-paths@^3.9.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz#79ae67a68c15289fdf5c51cb74f397522d795ed7" - integrity sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q== - dependencies: - json5 "^2.2.0" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.2.4: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== - -typescript@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== - -umd@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" - integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== - -unassert@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unassert/-/unassert-1.6.0.tgz#ceb6d39ce47c6d2bfa9cb3cab407352cbfb60a19" - integrity sha512-GoMtWTwGSxSFuRD0NKmbjlx3VJkgvSogzDzMPpJXYmBZv6MIWButsyMqEYhMx3NI4osXACcZA9mXiBteXyJtRw== - dependencies: - acorn "^7.0.0" - call-matcher "^2.0.0" - deep-equal "^1.0.0" - espurify "^2.0.1" - estraverse "^4.1.0" - esutils "^2.0.2" - object-assign "^4.1.0" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -undeclared-identifiers@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" - integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== - dependencies: - acorn-node "^1.3.0" - dash-ast "^1.0.0" - get-assigned-identifiers "^1.2.0" - simple-concat "^1.0.0" - xtend "^4.0.1" - -underscore@>=1.8.3: - version "1.9.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" - integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== - -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= - -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-length@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/unicode-length/-/unicode-length-1.0.3.tgz#5ada7a7fed51841a418a328cf149478ac8358abb" - integrity sha1-Wtp6f+1RhBpBijKM8UlHisg1irs= - dependencies: - punycode "^1.3.2" - strip-ansi "^3.0.1" - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -unified@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" - -unified@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" - integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== - dependencies: - "@types/unist" "^2.0.0" - "@types/vfile" "^3.0.0" - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^3.0.0" - x-is-string "^0.1.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - -unist-builder@^1.0.1, unist-builder@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" - integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg== - dependencies: - object-assign "^4.1.0" - -unist-util-find-all-after@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" - integrity sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw== - dependencies: - unist-util-is "^3.0.0" - -unist-util-generated@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" - integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== - -unist-util-is@^2.0.0, unist-util-is@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" - integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== - -unist-util-is@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" - integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== - -unist-util-position@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" - integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== - -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== - dependencies: - "@types/unist" "^2.0.2" - -unist-util-visit-parents@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" - integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== - dependencies: - unist-util-is "^3.0.0" - -unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== - dependencies: - unist-util-visit-parents "^2.0.0" - -universal-user-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" - integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== - dependencies: - os-name "^3.1.0" - -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@~0.10.1: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@*, vfile-message@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.3.tgz#0dd4f6879fb240a8099b22bd3755536c92e59ba5" - integrity sha512-qQg/2z8qnnBHL0psXyF72kCjb9YioIynvyltuNKFaUhRtqTIcIMP3xnBaPzirVZNuBrUe1qwFciSx2yApa4byw== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -vfile-reporter@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-5.1.2.tgz#80f1db5cbe8f9c12f2f30cce3e2cd18353a48519" - integrity sha512-b15sTuss1wOPWVlyWOvu+n6wGJ/eTYngz3uqMLimQvxZ+Q5oFQGYZZP1o3dR9sk58G5+wej0UPCZSwQBX/mzrQ== - dependencies: - repeat-string "^1.5.0" - string-width "^2.0.0" - supports-color "^5.0.0" - unist-util-stringify-position "^2.0.0" - vfile-sort "^2.1.2" - vfile-statistics "^1.1.0" - -vfile-reporter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-6.0.1.tgz#45d4dc11df2e312196ea2ceb95e42a67fc8ce814" - integrity sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g== - dependencies: - repeat-string "^1.5.0" - string-width "^4.0.0" - supports-color "^6.0.0" - unist-util-stringify-position "^2.0.0" - vfile-sort "^2.1.2" - vfile-statistics "^1.1.0" - -vfile-sort@^2.1.0, vfile-sort@^2.1.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-2.2.2.tgz#720fe067ce156aba0b411a01bb0dc65596aa1190" - integrity sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA== - -vfile-statistics@^1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.4.tgz#b99fd15ecf0f44ba088cc973425d666cb7a9f245" - integrity sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA== - -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" - integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== - dependencies: - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vfile@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.3.tgz#1e50b824fb5e5affd718e225c7bb1af6d97d4408" - integrity sha512-lREgT5sF05TQk68LO6APy0In+TkFGnFEgKChK2+PHIaTrFQ9oHCKXznZ7VILwgYVBcl0gv4lGATFZBLhi2kVQg== - dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" - -vinyl-fs@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0, vinyl@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -vlq@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== - -vm-browserify@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vt-pbf@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.1.tgz#b0f627e39a10ce91d943b898ed2363d21899fb82" - integrity sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA== - dependencies: - "@mapbox/point-geometry" "0.1.0" - "@mapbox/vector-tile" "^1.3.1" - pbf "^3.0.5" - -vue-template-compiler@^2.5.16: - version "2.6.11" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" - integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - -which@^1.2.9, which@^1.3.0, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^6.1.0, ws@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.1.2: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== - -ws@~6.1.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" - integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== - dependencies: - async-limiter "~1.0.0" - -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmldom@^0.1.19: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - -xmlhttprequest@1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.5.0: - version "1.8.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" - integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== - dependencies: - "@babel/runtime" "^7.8.7" - -yapool@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yapool/-/yapool-1.0.0.tgz#f693f29a315b50d9a9da2646a7a6645c96985b6a" - integrity sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o= - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^16.1.1: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yauzl@^2.10.0, yauzl@^2.9.1: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From ecfef62285e075ae0d5e963dcd91b6373f9cbc43 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 17:31:21 +0200 Subject: [PATCH 008/142] Fix hasOwnProperty lint errors See https://eslint.org/docs/rules/no-prototype-builtins * I used this command for the conversions: * sed -i -E "s/([\(\!])([]/[a-zA-Z_.-]*).hasOwnProperty\(/ \1Object.prototype.hasOwnProperty.call(\2, /g" --- src/data/bucket/line_bucket.ts | 2 +- src/style-spec/diff.ts | 24 ++++++++++++------------ src/style/properties.ts | 4 ++-- src/util/ajax.ts | 2 +- src/util/window.ts | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index c61fdb20fe..0e38ff50cc 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -241,7 +241,7 @@ class LineBucket implements Bucket { } lineFeatureClips(feature: BucketFeature): LineClips | undefined | null { - if (!!feature.properties && feature.properties.hasOwnProperty('mapbox_clip_start') && feature.properties.hasOwnProperty('mapbox_clip_end')) { + if (!!feature.properties && Object.prototype.hasOwnProperty.call(feature.properties, 'mapbox_clip_start') && Object.prototype.hasOwnProperty.call(feature.properties, 'mapbox_clip_end')) { const start = +feature.properties['mapbox_clip_start']; const end = +feature.properties['mapbox_clip_end']; return {start, end}; diff --git a/src/style-spec/diff.ts b/src/style-spec/diff.ts index 264a857ca8..989c9bc4a2 100644 --- a/src/style-spec/diff.ts +++ b/src/style-spec/diff.ts @@ -117,13 +117,13 @@ function updateSource(sourceId, after, commands, sourcesRemoved) { function canUpdateGeoJSON(before, after, sourceId) { let prop; for (prop in before[sourceId]) { - if (!before[sourceId].hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(before[sourceId], prop)) continue; if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) { return false; } } for (prop in after[sourceId]) { - if (!after[sourceId].hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(after[sourceId], prop)) continue; if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) { return false; } @@ -139,16 +139,16 @@ function diffSources(before, after, commands, sourcesRemoved) { // look for sources to remove for (sourceId in before) { - if (!before.hasOwnProperty(sourceId)) continue; - if (!after.hasOwnProperty(sourceId)) { + if (!Object.prototype.hasOwnProperty.call(before, sourceId)) continue; + if (!Object.prototype.hasOwnProperty.call(after, sourceId)) { removeSource(sourceId, commands, sourcesRemoved); } } // look for sources to add/update for (sourceId in after) { - if (!after.hasOwnProperty(sourceId)) continue; - if (!before.hasOwnProperty(sourceId)) { + if (!Object.prototype.hasOwnProperty.call(after, sourceId)) continue; + if (!Object.prototype.hasOwnProperty.call(before, sourceId)) { addSource(sourceId, after, commands); } else if (!isEqual(before[sourceId], after[sourceId])) { if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) { @@ -168,13 +168,13 @@ function diffLayerPropertyChanges(before, after, commands, layerId, klass, comma let prop; for (prop in before) { - if (!before.hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(before, prop)) continue; if (!isEqual(before[prop], after[prop])) { commands.push({command, args: [layerId, prop, after[prop], klass]}); } } for (prop in after) { - if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(after, prop) || Object.prototype.hasOwnProperty.call(before, prop)) continue; if (!isEqual(before[prop], after[prop])) { commands.push({command, args: [layerId, prop, after[prop], klass]}); } @@ -212,7 +212,7 @@ function diffLayers(before, after, commands) { // remove layers for (i = 0, d = 0; i < beforeOrder.length; i++) { layerId = beforeOrder[i]; - if (!afterIndex.hasOwnProperty(layerId)) { + if (!Object.prototype.hasOwnProperty.call(afterIndex, layerId)) { commands.push({command: operations.removeLayer, args: [layerId]}); tracker.splice(tracker.indexOf(layerId, d), 1); } else { @@ -228,7 +228,7 @@ function diffLayers(before, after, commands) { if (tracker[tracker.length - 1 - i] === layerId) continue; - if (beforeIndex.hasOwnProperty(layerId)) { + if (Object.prototype.hasOwnProperty.call(beforeIndex, layerId)) { // remove the layer before we insert at the correct position commands.push({command: operations.removeLayer, args: [layerId]}); tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1); @@ -276,7 +276,7 @@ function diffLayers(before, after, commands) { // handle all other layer props, including paint.* for (prop in beforeLayer) { - if (!beforeLayer.hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(beforeLayer, prop)) continue; if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue; if (prop.indexOf('paint.') === 0) { @@ -286,7 +286,7 @@ function diffLayers(before, after, commands) { } } for (prop in afterLayer) { - if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue; + if (!Object.prototype.hasOwnProperty.call(afterLayer, prop) || Object.prototype.hasOwnProperty.call(beforeLayer, prop)) continue; if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue; if (prop.indexOf('paint.') === 0) { diff --git a/src/style/properties.ts b/src/style/properties.ts index 7b23c66544..95dd16dcfd 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -189,7 +189,7 @@ export class Transitionable { } setValue(name: S, value: PropertyValueSpecification | void) { - if (!this._values.hasOwnProperty(name)) { + if (!Object.prototype.hasOwnProperty.call(this._values, name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } // Note that we do not _remove_ an own property in the case where a value is being reset @@ -202,7 +202,7 @@ export class Transitionable { } setTransition(name: S, value: TransitionSpecification | void) { - if (!this._values.hasOwnProperty(name)) { + if (!Object.prototype.hasOwnProperty.call(this._values, name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } this._values[name].transition = clone(value) || undefined; diff --git a/src/util/ajax.ts b/src/util/ajax.ts index f0fe50770d..8ced6a85c8 100644 --- a/src/util/ajax.ts +++ b/src/util/ajax.ts @@ -256,7 +256,7 @@ export const makeRequest = function(requestParameters: RequestParameters, callba } } if (!isFileURL(requestParameters.url)) { - if (window.fetch && window.Request && window.AbortController && window.Request.prototype.hasOwnProperty('signal')) { + if (window.fetch && window.Request && window.AbortController && Object.prototype.hasOwnProperty.call(window.Request.prototype, 'signal')) { return makeFetchRequest(requestParameters, callback); } if (isWorker() && self.worker && self.worker.actor) { diff --git a/src/util/window.ts b/src/util/window.ts index 8ffcc56d2c..a6b6b9187b 100644 --- a/src/util/window.ts +++ b/src/util/window.ts @@ -24,7 +24,7 @@ function restore(): Window { const previousWindow = _window; if (previousWindow.close) previousWindow.close(); for (const key in previousWindow) { - if (previousWindow.hasOwnProperty(key)) { + if (Object.prototype.hasOwnProperty.call(previousWindow, key)) { delete previousWindow[key]; } } From 0959b0416e33a84773dc4468ac3882c76cb13f9b Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 17:38:09 +0200 Subject: [PATCH 009/142] Fix extension from .js to .ts --- src/style-spec/format.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/style-spec/format.ts b/src/style-spec/format.ts index 8212194af9..9b1f693aed 100644 --- a/src/style-spec/format.ts +++ b/src/style-spec/format.ts @@ -1,5 +1,5 @@ -import reference from './reference/latest.js'; +import reference from './reference/latest.ts'; import stringifyPretty from 'json-stringify-pretty-compact'; function sortKeysBy(obj, reference) { From 33bb386fb11639ae1ec0eb751017f1004975efd1 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 17:39:10 +0200 Subject: [PATCH 010/142] Remove types file --- src/index.d.ts | 2381 ------------------------------------------------ 1 file changed, 2381 deletions(-) delete mode 100644 src/index.d.ts diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index e6adda22f4..0000000000 --- a/src/index.d.ts +++ /dev/null @@ -1,2381 +0,0 @@ -// Type definitions for MapLibre GL JS 1.14.0 -// Project: https://github.com/maplibre/maplibre-gl-js -// Definitions by: Dominik Bruderer -// Patrick Reames -// Karl-Aksel Puulmann -// Dmytro Gokun -// Liam Clarke -// Vladimir Dashukevich -// Marko Klopets -// André Fonseca -// Folke Lemaitre -// Harel Mazor -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 3.0 - -/// - -export = maplibregl; -export as namespace maplibregl; - -declare namespace maplibregl { - let accessToken: string; - let version: string; - let baseApiUrl: string; - - /** - * Number of web workers instantiated on a page with GL JS maps. - * By default, it is set to half the number of CPU cores (capped at 6). - */ - let workerCount: number; - - /** - * Maximum number of images (raster tiles, sprites, icons) to load in parallel, which affects performance in raster-heavy maps. - * 16 by default. - */ - let maxParallelImageRequests: number; - - export function supported(options?: { failIfMajorPerformanceCaveat?: boolean }): boolean; - - /** - * Clears browser storage used by this library. Using this method flushes the Mapbox tile cache that is managed by this library. - * Tiles may still be cached by the browser in some cases. - */ - export function clearStorage(callback?: (err?: Error) => void): void; - /** - * Sets a custom load tile function that will be called when using a source that starts with a custom url schema. - * The example below will be triggered for custom:// urls defined in the sources list in the style definitions. - * The function passed will receive the request parameters and should call the callback with the resulting request, - * for example a pbf vector tile, non-compressed, represented as ArrayBuffer. - * @param {string} customProtocol - the protocol to hook, for example 'custom' - * @param {Function} loadFn - the function to use when trying to fetch a tile specified by the customProtocol - * @example - * // this will fetch a file using the fetch API (this is obviously a non iteresting example...) - * maplibre.addProtocol('custom', (params, callback) => { - fetch(`https://${params.url.split("://")[1]}`) - .then(t => { - if (t.status == 200) { - t.arrayBuffer().then(arr => { - callback(null, arr, null, null); - }); - } else { - callback(new Error(`Tile fetch error: ${t.statusText}`)); - } - }) - .catch(e => { - callback(new Error(e)); - }); - return { cancel: () => { } }; - }); - * // the following is an example of a way to return an error when trying to load a tile - * maplibre.addProtocol('custom2', (params, callback) => { - * callback(new Error('someErrorMessage')); - * return { cancel: () => { } }; - * }); - */ - export function addProtocol(customProtocol: string, loadFn: (requestParameters: RequestParameters, callback: ResponseCallback) => Cancelable): void; - /** - * Removes a previusly added protocol - * @param {string} customProtocol - the custom protocol to remove registration for - * @example - * maplibregl.removeProtocol('custom'); - */ - export function removeProtocol(customProtocol: string): void; - - export function setRTLTextPlugin(pluginURL: string, callback: (error: Error) => void, deferred?: boolean): void; - export function getRTLTextPluginStatus(): PluginStatus; - - /** - * Initializes resources like WebWorkers that can be shared across maps to lower load - * times in some situations. `maplibregl.workerUrl` and `maplibregl.workerCount`, if being - * used, must be set before `prewarm()` is called to have an effect. - * - * By default, the lifecycle of these resources is managed automatically, and they are - * lazily initialized when a Map is first created. By invoking `prewarm()`, these - * resources will be created ahead of time, and will not be cleared when the last Map - * is removed from the page. This allows them to be re-used by new Map instances that - * are created later. They can be manually cleared by calling - * `maplibregl.clearPrewarmedResources()`. This is only necessary if your web page remains - * active but stops using maps altogether. - * - * This is primarily useful when using GL-JS maps in a single page app, wherein a user - * would navigate between various views that can cause Map instances to constantly be - * created and destroyed. - */ - export function prewarm(): void; - - /** - * Clears up resources that have previously been created by `maplibregl.prewarm()`. - * Note that this is typically not necessary. You should only call this function - * if you expect the user of your app to not return to a Map view at any point - * in your application. - */ - export function clearPrewarmedResources(): void; - - type PluginStatus = 'unavailable' | 'loading' | 'loaded' | 'error'; - - type LngLatLike = - | [number, number] - | LngLat - | { lng: number; lat: number } - | { lon: number; lat: number } - | [number, number]; - - type LngLatBoundsLike = LngLatBounds | [LngLatLike, LngLatLike] | [number, number, number, number] | LngLatLike; - type PointLike = Point | [number, number]; - type Offset = number | PointLike | { [_: string]: PointLike }; - - type ExpressionName = - // Types - | 'array' - | 'boolean' - | 'collator' - | 'format' - | 'literal' - | 'number' - | 'object' - | 'string' - | 'image' - | 'to-boolean' - | 'to-color' - | 'to-number' - | 'to-string' - | 'typeof' - // Feature data - | 'feature-state' - | 'geometry-type' - | 'id' - | 'line-progress' - | 'properties' - // Lookup - | 'at' - | 'get' - | 'has' - | 'in' - | 'index-of' - | 'length' - | 'slice' - // Decision - | '!' - | '!=' - | '<' - | '<=' - | '==' - | '>' - | '>=' - | 'all' - | 'any' - | 'case' - | 'match' - | 'coalesce' - // Ramps, scales, curves - | 'interpolate' - | 'interpolate-hcl' - | 'interpolate-lab' - | 'step' - // Variable binding - | 'let' - | 'var' - // String - | 'concat' - | 'downcase' - | 'is-supported-script' - | 'resolved-locale' - | 'upcase' - // Color - | 'rgb' - | 'rgba' - // Math - | '-' - | '*' - | '/' - | '%' - | '^' - | '+' - | 'abs' - | 'acos' - | 'asin' - | 'atan' - | 'ceil' - | 'cos' - | 'e' - | 'floor' - | 'ln' - | 'ln2' - | 'log10' - | 'log2' - | 'max' - | 'min' - | 'pi' - | 'round' - | 'sin' - | 'sqrt' - | 'tan' - // Zoom, Heatmap - | 'zoom' - | 'heatmap-density'; - - type Expression = [ExpressionName, ...any[]]; - - type Anchor = - | 'center' - | 'left' - | 'right' - | 'top' - | 'bottom' - | 'top-left' - | 'top-right' - | 'bottom-left' - | 'bottom-right'; - - /** - * Map - */ - export class Map extends Evented { - constructor(options?: MapboxOptions); - - addControl( - control: Control | IControl, - position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left', - ): this; - - removeControl(control: Control | IControl): this; - - /** - * Checks if a control exists on the map. - * - * @param {IControl} control The {@link IControl} to check. - * @returns {boolean} True if map contains control. - * @example - */ - hasControl(control: IControl): boolean; - - resize(eventData?: EventData): this; - - getBounds(): LngLatBounds; - - getMaxBounds(): LngLatBounds | null; - - setMaxBounds(lnglatbounds?: LngLatBoundsLike): this; - - setMinZoom(minZoom?: number | null): this; - - getMinZoom(): number; - - setMaxZoom(maxZoom?: number | null): this; - - getMaxZoom(): number; - - setMinPitch(minPitch?: number | null): this; - - getMinPitch(): number; - - setMaxPitch(maxPitch?: number | null): this; - - getMaxPitch(): number; - - getRenderWorldCopies(): boolean; - - setRenderWorldCopies(renderWorldCopies?: boolean): this; - - project(lnglat: LngLatLike): maplibregl.Point; - - unproject(point: PointLike): maplibregl.LngLat; - - isMoving(): boolean; - - isZooming(): boolean; - - isRotating(): boolean; - - /** - * Returns an array of GeoJSON Feature objects representing visible features that satisfy the query parameters. - * - * The properties value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only string and numeric property values are supported (i.e. null, Array, and Object values are not supported). - * - * Each feature includes top-level layer, source, and sourceLayer properties. The layer property is an object representing the style layer to which the feature belongs. Layout and paint properties in this object contain values which are fully evaluated for the given zoom level and feature. - * - * Only features that are currently rendered are included. Some features will not be included, like: - * - * - Features from layers whose visibility property is "none". - * - Features from layers whose zoom range excludes the current zoom level. - * - Symbol features that have been hidden due to text or icon collision. - * - * Features from all other layers are included, including features that may have no visible contribution to the rendered result; for example, because the layer's opacity or color alpha component is set to 0. - * - * The topmost rendered feature appears first in the returned array, and subsequent features are sorted by descending z-order. Features that are rendered multiple times (due to wrapping across the antimeridian at low zoom levels) are returned only once (though subject to the following caveat). - * - * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple times in query results. For example, suppose there is a highway running through the bounding rectangle of a query. The results of the query will be those parts of the highway that lie within the map tiles covering the bounding rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple tiles due to tile buffering. - * - * @param pointOrBox The geometry of the query region: either a single point or southwest and northeast points describing a bounding box. Omitting this parameter (i.e. calling Map#queryRenderedFeatures with zero arguments, or with only a options argument) is equivalent to passing a bounding box encompassing the entire map viewport. - * @param options - */ - queryRenderedFeatures( - pointOrBox?: PointLike | [PointLike, PointLike], - options?: { layers?: string[]; filter?: any[] } & FilterOptions, - ): MapboxGeoJSONFeature[]; - - /** - * Returns an array of GeoJSON Feature objects representing features within the specified vector tile or GeoJSON source that satisfy the query parameters. - * - * In contrast to Map#queryRenderedFeatures, this function returns all features matching the query parameters, whether or not they are rendered by the current style (i.e. visible). The domain of the query includes all currently-loaded vector tiles and GeoJSON source tiles: this function does not check tiles outside the currently visible viewport. - * - * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple times in query results. For example, suppose there is a highway running through the bounding rectangle of a query. The results of the query will be those parts of the highway that lie within the map tiles covering the bounding rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple tiles due to tile buffering. - * - * @param sourceID The ID of the vector tile or GeoJSON source to query. - * @param parameters - */ - querySourceFeatures( - sourceID: string, - parameters?: { - sourceLayer?: string; - filter?: any[]; - } & FilterOptions, - ): MapboxGeoJSONFeature[]; - - setStyle(style: maplibregl.Style | string, options?: { diff?: boolean; localIdeographFontFamily?: string }): this; - - setTransformRequest(transformRequest: TransformRequestFunction): void; - - getStyle(): maplibregl.Style; - - isStyleLoaded(): boolean; - - addSource(id: string, source: AnySourceData): this; - - isSourceLoaded(id: string): boolean; - - areTilesLoaded(): boolean; - - removeSource(id: string): this; - - getSource(id: string): AnySourceImpl; - - addImage( - name: string, - image: - | HTMLImageElement - | ArrayBufferView - | { width: number; height: number; data: Uint8Array | Uint8ClampedArray } - | ImageData - | ImageBitmap, - options?: { pixelRatio?: number; sdf?: boolean }, - ): this; - - hasImage(name: string): boolean; - - removeImage(name: string): this; - - loadImage(url: string, callback: Function): this; - - listImages(): string[]; - - addLayer(layer: maplibregl.AnyLayer, before?: string): this; - - moveLayer(id: string, beforeId?: string): this; - - removeLayer(id: string): this; - - getLayer(id: string): maplibregl.AnyLayer; - - setFilter(layer: string, filter?: any[] | boolean | null, options?: FilterOptions | null): this; - - setLayerZoomRange(layerId: string, minzoom: number, maxzoom: number): this; - - getFilter(layer: string): any[]; - - setPaintProperty(layer: string, name: string, value: any, klass?: string): this; - - getPaintProperty(layer: string, name: string): any; - - setLayoutProperty(layer: string, name: string, value: any): this; - - getLayoutProperty(layer: string, name: string): any; - - setLight(options: maplibregl.Light, lightOptions?: any): this; - - getLight(): maplibregl.Light; - - setFeatureState( - feature: FeatureIdentifier | maplibregl.MapboxGeoJSONFeature, - state: { [key: string]: any }, - ): void; - - getFeatureState(feature: FeatureIdentifier | maplibregl.MapboxGeoJSONFeature): { [key: string]: any }; - - removeFeatureState(target: FeatureIdentifier | maplibregl.MapboxGeoJSONFeature, key?: string): void; - - getContainer(): HTMLElement; - - getCanvasContainer(): HTMLElement; - - getCanvas(): HTMLCanvasElement; - - loaded(): boolean; - - remove(): void; - - triggerRepaint(): void; - - showTileBoundaries: boolean; - - showCollisionBoxes: boolean; - - /** - * Gets and sets a Boolean indicating whether the map will visualize - * the padding offsets. - * - * @name showPadding - * @type {boolean} - * @instance - * @memberof Map - */ - showPadding: boolean; - - repaint: boolean; - - getCenter(): maplibregl.LngLat; - - setCenter(center: LngLatLike, eventData?: maplibregl.EventData): this; - - panBy(offset: PointLike, options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - panTo(lnglat: LngLatLike, options?: maplibregl.AnimationOptions, eventdata?: maplibregl.EventData): this; - - getZoom(): number; - - setZoom(zoom: number, eventData?: maplibregl.EventData): this; - - zoomTo(zoom: number, options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - zoomIn(options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - zoomOut(options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - getBearing(): number; - - setBearing(bearing: number, eventData?: maplibregl.EventData): this; - - /** - * Returns the current padding applied around the map viewport. - * - * @memberof Map# - * @returns The current padding around the map viewport. - */ - getPadding(): PaddingOptions; - - /** - * Sets the padding in pixels around the viewport. - * - * Equivalent to `jumpTo({padding: padding})`. - * - * @memberof Map# - * @param padding The desired padding. Format: { left: number, right: number, top: number, bottom: number } - * @param eventData Additional properties to be added to event objects of events triggered by this method. - * @fires movestart - * @fires moveend - * @returns {Map} `this` - * @example - * // Sets a left padding of 300px, and a top padding of 50px - * map.setPadding({ left: 300, top: 50 }); - */ - setPadding(padding: RequireAtLeastOne, eventData?: EventData): this; - - rotateTo(bearing: number, options?: maplibregl.AnimationOptions, eventData?: EventData): this; - - resetNorth(options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - resetNorthPitch(options?: maplibregl.AnimationOptions | null, eventData?: maplibregl.EventData | null): this; - - snapToNorth(options?: maplibregl.AnimationOptions, eventData?: maplibregl.EventData): this; - - getPitch(): number; - - setPitch(pitch: number, eventData?: EventData): this; - - cameraForBounds(bounds: LngLatBoundsLike, options?: CameraForBoundsOptions): CameraForBoundsResult | undefined; - - fitBounds(bounds: LngLatBoundsLike, options?: maplibregl.FitBoundsOptions, eventData?: maplibregl.EventData): this; - - fitScreenCoordinates( - p0: PointLike, - p1: PointLike, - bearing: number, - options?: AnimationOptions & CameraOptions, - eventData?: EventData, - ): this; - - jumpTo(options: maplibregl.CameraOptions, eventData?: maplibregl.EventData): this; - - easeTo(options: maplibregl.EaseToOptions, eventData?: maplibregl.EventData): this; - - flyTo(options: maplibregl.FlyToOptions, eventData?: maplibregl.EventData): this; - - isEasing(): boolean; - - stop(): this; - - on( - type: T, - layer: string, - listener: (ev: MapLayerEventType[T] & EventData) => void, - ): this; - on(type: T, listener: (ev: MapEventType[T] & EventData) => void): this; - on(type: string, listener: (ev: any) => void): this; - - once( - type: T, - layer: string, - listener: (ev: MapLayerEventType[T] & EventData) => void, - ): this; - once(type: T, listener: (ev: MapEventType[T] & EventData) => void): this; - once(type: string, listener: (ev: any) => void): this; - - off( - type: T, - layer: string, - listener: (ev: MapLayerEventType[T] & EventData) => void, - ): this; - off(type: T, listener: (ev: MapEventType[T] & EventData) => void): this; - off(type: string, listener: (ev: any) => void): this; - - scrollZoom: ScrollZoomHandler; - - boxZoom: BoxZoomHandler; - - dragRotate: DragRotateHandler; - - dragPan: DragPanHandler; - - keyboard: KeyboardHandler; - - doubleClickZoom: DoubleClickZoomHandler; - - touchZoomRotate: TouchZoomRotateHandler; - - touchPitch: TouchPitchHandler; - } - - export interface MapboxOptions { - /** - * If true, the gl context will be created with MSA antialiasing, which can be useful for antialiasing custom layers. - * This is false by default as a performance optimization. - */ - antialias?: boolean; - - /** If true, an attribution control will be added to the map. */ - attributionControl?: boolean; - - bearing?: number; - - /** Snap to north threshold in degrees. */ - bearingSnap?: number; - - /** The initial bounds of the map. If bounds is specified, it overrides center and zoom constructor options. */ - bounds?: LngLatBoundsLike; - - /** If true, enable the "box zoom" interaction (see BoxZoomHandler) */ - boxZoom?: boolean; - - /** initial map center */ - center?: LngLatLike; - - /** - * The max number of pixels a user can shift the mouse pointer during a click for it to be - * considered a valid click (as opposed to a mouse drag). - * - * @default 3 - */ - clickTolerance?: number; - - /** - * If `true`, Resource Timing API information will be collected for requests made by GeoJSON - * and Vector Tile web workers (this information is normally inaccessible from the main - * Javascript thread). Information will be returned in a `resourceTiming` property of - * relevant `data` events. - * - * @default false - */ - collectResourceTiming?: boolean; - - /** - * If `true`, symbols from multiple sources can collide with each other during collision - * detection. If `false`, collision detection is run separately for the symbols in each source. - * - * @default true - */ - crossSourceCollisions?: boolean; - - /** ID of the container element */ - container: string | HTMLElement; - - /** String or strings to show in an AttributionControl. - * Only applicable if options.attributionControl is `true`. */ - customAttribution?: string | string[]; - - /** If true, enable the "drag to pan" interaction (see DragPanHandler). */ - dragPan?: boolean; - - /** If true, enable the "drag to rotate" interaction (see DragRotateHandler). */ - dragRotate?: boolean; - - /** If true, enable the "double click to zoom" interaction (see DoubleClickZoomHandler). */ - doubleClickZoom?: boolean; - - /** If `true`, the map's position (zoom, center latitude, center longitude, bearing, and pitch) will be synced with the hash fragment of the page's URL. - * For example, `http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60`. - * An additional string may optionally be provided to indicate a parameter-styled hash, - * e.g. http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar, where foo - * is a custom parameter and bar is an arbitrary hash distinct from the map hash. - * */ - hash?: boolean | string; - - /** - * Controls the duration of the fade-in/fade-out animation for label collisions, in milliseconds. - * This setting affects all symbol layers. This setting does not affect the duration of runtime - * styling transitions or raster tile cross-fading. - * - * @default 300 - */ - fadeDuration?: number; - - /** If true, map creation will fail if the implementation determines that the performance of the created WebGL context would be dramatically lower than expected. */ - failIfMajorPerformanceCaveat?: boolean; - - /** A fitBounds options object to use only when setting the bounds option. */ - fitBoundsOptions?: FitBoundsOptions; - - /** If false, no mouse, touch, or keyboard listeners are attached to the map, so it will not respond to input */ - interactive?: boolean; - - /** If true, enable keyboard shortcuts (see KeyboardHandler). */ - keyboard?: boolean; - - /** A patch to apply to the default localization table for UI strings, e.g. control tooltips. - * The `locale` object maps namespaced UI string IDs to translated strings in the target language; - * see `src/ui/default_locale.js` for an example with all supported string IDs. - * The object may specify all UI strings (thereby adding support for a new translation) or - * only a subset of strings (thereby patching the default translation table). - */ - locale?: { [key: string]: string }; - - /** - * If specified, defines a CSS font-family for locally overriding generation of glyphs in the - * 'CJK Unified Ideographs' and 'Hangul Syllables' ranges. In these ranges, font settings from - * the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold). - * The purpose of this option is to avoid bandwidth-intensive glyph server requests. - * - * @default null - */ - localIdeographFontFamily?: string; - - /** - * A string representing the position of the Mapbox wordmark on the map. - * - * @default "bottom-left" - */ - logoPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; - - /** If set, the map is constrained to the given bounds. */ - maxBounds?: LngLatBoundsLike; - - /** Maximum pitch of the map. */ - maxPitch?: number; - - /** Maximum zoom of the map. */ - maxZoom?: number; - - /** Minimum pitch of the map. */ - minPitch?: number; - - /** Minimum zoom of the map. */ - minZoom?: number; - - /** If true, The maps canvas can be exported to a PNG using map.getCanvas().toDataURL();. This is false by default as a performance optimization. */ - preserveDrawingBuffer?: boolean; - - /** - * The initial pitch (tilt) of the map, measured in degrees away from the plane of the - * screen (0-60). - * - * @default 0 - */ - pitch?: number; - - /** - * If `false`, the map's pitch (tilt) control with "drag to rotate" interaction will be disabled. - * - * @default true - */ - pitchWithRotate?: boolean; - - /** - * If `false`, the map won't attempt to re-request tiles once they expire per their HTTP - * `cacheControl`/`expires` headers. - * - * @default true - */ - refreshExpiredTiles?: boolean; - - /** - * If `true`, multiple copies of the world will be rendered, when zoomed out. - * - * @default true - */ - renderWorldCopies?: boolean; - - /** If true, enable the "scroll to zoom" interaction */ - scrollZoom?: boolean; - - /** stylesheet location */ - style?: maplibregl.Style | string; - - /** If true, the map will automatically resize when the browser window resizes */ - trackResize?: boolean; - - /** - * A callback run before the Map makes a request for an external URL. The callback can be - * used to modify the url, set headers, or set the credentials property for cross-origin requests. - * - * @default null - */ - transformRequest?: TransformRequestFunction; - - /** If true, enable the "pinch to rotate and zoom" interaction (see TouchZoomRotateHandler). */ - touchZoomRotate?: boolean; - - /** If true, the "drag to pitch" interaction is enabled */ - touchPitch?: boolean; - - /** Initial zoom level */ - zoom?: number; - - /** - * The maximum number of tiles stored in the tile cache for a given source. If omitted, the - * cache will be dynamically sized based on the current viewport. - * - * @default null - */ - maxTileCacheSize?: number; - - /** - * If specified, map will use this token instead of the one defined in maplibregl.accessToken. - * - * @default null - */ - accessToken?: string; - } - - export type RequireAtLeastOne = { [K in keyof T]-?: Required> & Partial>>; }[keyof T]; - - export type ResourceType = - | 'Unknown' - | 'Style' - | 'Source' - | 'Tile' - | 'Glyphs' - | 'SpriteImage' - | 'SpriteJSON' - | 'Image'; - - export interface RequestParameters { - /** - * The URL to be requested. - */ - url: string; - - /** - * Use `'include'` to send cookies with cross-origin requests. - */ - credentials?: 'same-origin' | 'include'; - - /** - * The headers to be sent with the request. - */ - headers?: { [header: string]: any }; - - method?: 'GET' | 'POST' | 'PUT'; - - collectResourceTiming?: boolean; - } - - export type TransformRequestFunction = (url: string, resourceType: ResourceType) => RequestParameters; - - export type ResponseCallback = (error?: Error, data?: T, cacheControl?: string, expires?: string) => void; - - export type Cancelable = { cancel: () => void }; - - export interface PaddingOptions { - top: number; - bottom: number; - left: number; - right: number; - } - - export interface FeatureIdentifier { - id?: string | number; - source: string; - sourceLayer?: string; - } - - /** - * BoxZoomHandler - */ - export class BoxZoomHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - isActive(): boolean; - - enable(): void; - - disable(): void; - } - - /** - * ScrollZoomHandler - */ - export class ScrollZoomHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - enable(): void; - - disable(): void; - - setZoomRate(zoomRate: number): void; - - setWheelZoomRate(wheelZoomRate: number): void; - } - - /** - * DragPenHandler - */ - export class DragPanHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - isActive(): boolean; - - enable(): void; - - disable(): void; - } - - /** - * DragRotateHandler - */ - export class DragRotateHandler { - constructor(map: maplibregl.Map, options?: { bearingSnap?: number; pitchWithRotate?: boolean }); - - isEnabled(): boolean; - - isActive(): boolean; - - enable(): void; - - disable(): void; - } - - /** - * KeyboardHandler - */ - export class KeyboardHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - enable(): void; - - disable(): void; - - /** - * Returns true if the handler is enabled and has detected the start of a - * zoom/rotate gesture. - * - * @returns {boolean} `true` if the handler is enabled and has detected the - * start of a zoom/rotate gesture. - */ - isActive(): boolean; - - /** - * Disables the "keyboard pan/rotate" interaction, leaving the - * "keyboard zoom" interaction enabled. - * - * @example - * map.keyboard.disableRotation(); - */ - disableRotation(): void; - - /** - * Enables the "keyboard pan/rotate" interaction. - * - * @example - * map.keyboard.enable(); - * map.keyboard.enableRotation(); - */ - enableRotation(): void; - } - - /** - * DoubleClickZoomHandler - */ - export class DoubleClickZoomHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - enable(): void; - - disable(): void; - } - - /** - * TouchZoomRotateHandler - */ - export class TouchZoomRotateHandler { - constructor(map: maplibregl.Map); - - isEnabled(): boolean; - - enable(): void; - - disable(): void; - - disableRotation(): void; - - enableRotation(): void; - } - - export class TouchPitchHandler { - constructor(map: maplibregl.Map); - - enable(): void; - - isActive(): boolean; - - isEnabled(): boolean; - - disable(): void; - } - - export interface IControl { - onAdd(map: Map): HTMLElement; - - onRemove(map: Map): void; - - getDefaultPosition?: () => string; - } - - /** - * Control - */ - export class Control extends Evented implements IControl { - onAdd(map: Map): HTMLElement; - onRemove(map: Map): void; - getDefaultPosition?: () => string; - } - - /** - * Navigation - */ - export class NavigationControl extends Control { - constructor(options?: { showCompass?: boolean; showZoom?: boolean; visualizePitch?: boolean }); - } - - export class PositionOptions { - enableHighAccuracy?: boolean; - timeout?: number; - maximumAge?: number; - } - - /** - * Geolocate - */ - export class GeolocateControl extends Control { - constructor(options?: { - positionOptions?: PositionOptions; - fitBoundsOptions?: FitBoundsOptions; - trackUserLocation?: boolean; - showAccuracyCircle?: boolean; - showUserLocation?: boolean; - }); - trigger(): boolean; - } - - /** - * Attribution - */ - export class AttributionControl extends Control { - constructor(options?: { compact?: boolean; customAttribution?: string | string[] }); - } - - /** - * Scale - */ - export class ScaleControl extends Control { - constructor(options?: { maxWidth?: number; unit?: string }); - - setUnit(unit: 'imperial' | 'metric' | 'nautical'): void; - } - - /** - * FullscreenControl - */ - export class FullscreenControl extends Control { - constructor(options?: FullscreenControlOptions | null); - } - - export interface FullscreenControlOptions { - /** - * A compatible DOM element which should be made full screen. - * By default, the map container element will be made full screen. - */ - container?: HTMLElement | null; - } - - /** - * Popup - */ - export class Popup extends Evented { - constructor(options?: maplibregl.PopupOptions); - - addTo(map: maplibregl.Map): this; - - isOpen(): boolean; - - remove(): this; - - getLngLat(): maplibregl.LngLat; - - /** - * Sets the geographical location of the popup's anchor, and moves the popup to it. Replaces trackPointer() behavior. - * - * @param lnglat The geographical location to set as the popup's anchor. - */ - setLngLat(lnglat: LngLatLike): this; - - /** - * Tracks the popup anchor to the cursor position, on screens with a pointer device (will be hidden on touchscreens). Replaces the setLngLat behavior. - * For most use cases, `closeOnClick` and `closeButton` should also be set to `false` here. - */ - trackPointer(): this; - - /** Returns the `Popup`'s HTML element. */ - getElement(): HTMLElement; - - setText(text: string): this; - - setHTML(html: string): this; - - setDOMContent(htmlNode: Node): this; - - getMaxWidth(): string; - - setMaxWidth(maxWidth: string): this; - - /** - * Adds a CSS class to the popup container element. - * - * @param {string} className Non-empty string with CSS class name to add to popup container - * - * @example - * let popup = new maplibregl.Popup() - * popup.addClassName('some-class') - */ - addClassName(className: string): void; - - /** - * Removes a CSS class from the popup container element. - * - * @param {string} className Non-empty string with CSS class name to remove from popup container - * - * @example - * let popup = new maplibregl.Popup() - * popup.removeClassName('some-class') - */ - removeClassName(className: string): void; - - /** - * Sets the popup's offset. - * - * @param offset Sets the popup's offset. - * @returns {Popup} `this` - */ - setOffset(offset?: Offset | null): this; - - /** - * Add or remove the given CSS class on the popup container, depending on whether the container currently has that class. - * - * @param {string} className Non-empty string with CSS class name to add/remove - * - * @returns {boolean} if the class was removed return false, if class was added, then return true - * - * @example - * let popup = new maplibregl.Popup() - * popup.toggleClassName('toggleClass') - */ - toggleClassName(className: string): boolean; - } - - export interface PopupOptions { - closeButton?: boolean; - - closeOnClick?: boolean; - - /** - * @param {boolean} [options.closeOnMove=false] If `true`, the popup will closed when the map moves. - */ - closeOnMove?: boolean; - - /** - * @param {boolean} [options.focusAfterOpen=true] If `true`, the popup will try to focus the - * first focusable element inside the popup. - */ - focusAfterOpen?: boolean | null; - - anchor?: Anchor; - - offset?: Offset | null; - - className?: string; - - maxWidth?: string; - } - - export interface Style { - bearing?: number; - center?: number[]; - glyphs?: string; - layers?: AnyLayer[]; - metadata?: any; - name?: string; - pitch?: number; - light?: Light; - sources?: Sources; - sprite?: string; - transition?: Transition; - version: number; - zoom?: number; - } - - export interface Transition { - delay?: number; - duration?: number; - } - - export interface Light { - anchor?: 'map' | 'viewport'; - position?: number[]; - 'position-transition'?: Transition; - color?: string; - 'color-transition'?: Transition; - intensity?: number; - 'intensity-transition'?: Transition; - } - - export interface Sources { - [sourceName: string]: AnySourceData; - } - - export type PromoteIdSpecification = { [key: string]: string } | string; - - export type AnySourceData = - | GeoJSONSourceRaw - | VideoSourceRaw - | ImageSourceRaw - | CanvasSourceRaw - | VectorSource - | RasterSource - | RasterDemSource; - - interface VectorSourceImpl extends VectorSource { - /** - * Sets the source `tiles` property and re-renders the map. - * - * @param {string[]} tiles An array of one or more tile source URLs, as in the TileJSON spec. - * @returns {VectorTileSource} this - */ - setTiles(tiles: ReadonlyArray): VectorSourceImpl; - - /** - * Sets the source `url` property and re-renders the map. - * - * @param {string} url A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`. - * @returns {VectorTileSource} this - */ - setUrl(url: string): VectorSourceImpl; - } - - export type AnySourceImpl = - | GeoJSONSource - | VideoSource - | ImageSource - | CanvasSource - | VectorSourceImpl - | RasterSource - | RasterDemSource; - - export interface Source { - type: 'vector' | 'raster' | 'raster-dem' | 'geojson' | 'image' | 'video' | 'canvas'; - } - - /** - * GeoJSONSource - */ - - export interface GeoJSONSourceRaw extends Source, GeoJSONSourceOptions { - type: 'geojson'; - } - - export interface GeoJSONSource extends GeoJSONSourceRaw { - type: 'geojson'; - - setData(data: GeoJSON.Feature | GeoJSON.FeatureCollection | String): this; - - getClusterExpansionZoom(clusterId: number, callback: (error: any, zoom: number) => void): this; - - getClusterChildren( - clusterId: number, - callback: (error: any, features: GeoJSON.Feature[]) => void, - ): this; - - getClusterLeaves( - cluserId: number, - limit: number, - offset: number, - callback: (error: any, features: GeoJSON.Feature[]) => void, - ): this; - } - - export interface GeoJSONSourceOptions { - data?: GeoJSON.Feature | GeoJSON.FeatureCollection | string; - - maxzoom?: number; - - attribution?: string; - - buffer?: number; - - tolerance?: number; - - cluster?: number | boolean; - - clusterRadius?: number; - - clusterMaxZoom?: number; - - /** - * Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`. - */ - clusterMinPoints?: number; - - clusterProperties?: object; - - lineMetrics?: boolean; - - generateId?: boolean; - - promoteId?: PromoteIdSpecification; - - filter?: any; - } - - /** - * VideoSource - */ - export interface VideoSourceRaw extends Source, VideoSourceOptions { - type: 'video'; - } - - export class VideoSource implements VideoSourceRaw { - type: 'video'; - - constructor(options?: maplibregl.VideoSourceOptions); - - getVideo(): HTMLVideoElement; - - setCoordinates(coordinates: number[][]): this; - } - - export interface VideoSourceOptions { - urls?: string[]; - - coordinates?: number[][]; - } - - /** - * ImageSource - */ - export interface ImageSourceRaw extends Source, ImageSourceOptions { - type: 'image'; - } - - export class ImageSource implements ImageSourceRaw { - type: 'image'; - - constructor(options?: maplibregl.ImageSourceOptions); - - updateImage(options: ImageSourceOptions): this; - - setCoordinates(coordinates: number[][]): this; - } - - export interface ImageSourceOptions { - url?: string; - - coordinates?: number[][]; - } - - /** - * CanvasSource - */ - export interface CanvasSourceRaw extends Source, CanvasSourceOptions { - type: 'canvas'; - } - - export class CanvasSource implements CanvasSourceRaw { - type: 'canvas'; - - coordinates: number[][]; - - canvas: string | HTMLCanvasElement; - - play(): void; - - pause(): void; - - getCanvas(): HTMLCanvasElement; - - setCoordinates(coordinates: number[][]): this; - } - - export interface CanvasSourceOptions { - coordinates: number[][]; - - animate?: boolean; - - canvas: string | HTMLCanvasElement; - } - - interface VectorSource extends Source { - type: 'vector'; - url?: string; - tiles?: string[]; - bounds?: number[]; - scheme?: 'xyz' | 'tms'; - minzoom?: number; - maxzoom?: number; - attribution?: string; - promoteId?: PromoteIdSpecification; - } - - interface RasterSource extends Source { - type: 'raster'; - url?: string; - tiles?: string[]; - bounds?: number[]; - minzoom?: number; - maxzoom?: number; - tileSize?: number; - scheme?: 'xyz' | 'tms'; - attribution?: string; - } - - interface RasterDemSource extends Source { - type: 'raster-dem'; - url?: string; - tiles?: string[]; - bounds?: number[]; - minzoom?: number; - maxzoom?: number; - tileSize?: number; - attribution?: string; - encoding?: 'terrarium' | 'mapbox'; - } - - /** - * LngLat - */ - export class LngLat { - lng: number; - lat: number; - - constructor(lng: number, lat: number); - - /** Return a new LngLat object whose longitude is wrapped to the range (-180, 180). */ - wrap(): maplibregl.LngLat; - - /** Return a LngLat as an array */ - toArray(): number[]; - - /** Return a LngLat as a string */ - toString(): string; - - /** Returns the approximate distance between a pair of coordinates in meters - * Uses the Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159) */ - distanceTo(lngLat: LngLat): number; - - toBounds(radius: number): LngLatBounds; - - static convert(input: LngLatLike): maplibregl.LngLat; - } - - /** - * LngLatBounds - */ - export class LngLatBounds { - sw: LngLatLike; - ne: LngLatLike; - - constructor(boundsLike?: [LngLatLike, LngLatLike] | [number, number, number, number]); - constructor(sw: LngLatLike, ne: LngLatLike); - - setNorthEast(ne: LngLatLike): this; - - setSouthWest(sw: LngLatLike): this; - - /** Check if the point is within the bounding box. */ - contains(lnglat: LngLatLike): boolean; - - /** Extend the bounds to include a given LngLat or LngLatBounds. */ - extend(obj: maplibregl.LngLatLike | maplibregl.LngLatBoundsLike): this; - - /** Get the point equidistant from this box's corners */ - getCenter(): maplibregl.LngLat; - - /** Get southwest corner */ - getSouthWest(): maplibregl.LngLat; - - /** Get northeast corner */ - getNorthEast(): maplibregl.LngLat; - - /** Get northwest corner */ - getNorthWest(): maplibregl.LngLat; - - /** Get southeast corner */ - getSouthEast(): maplibregl.LngLat; - - /** Get west edge longitude */ - getWest(): number; - - /** Get south edge latitude */ - getSouth(): number; - - /** Get east edge longitude */ - getEast(): number; - - /** Get north edge latitude */ - getNorth(): number; - - /** Returns a LngLatBounds as an array */ - toArray(): number[][]; - - /** Return a LngLatBounds as a string */ - toString(): string; - - /** Returns a boolean */ - isEmpty(): boolean; - - /** Convert an array to a LngLatBounds object, or return an existing LngLatBounds object unchanged. */ - static convert(input: LngLatBoundsLike): maplibregl.LngLatBounds; - } - - /** - * Point - */ - // Todo: Pull out class to seperate definition for Module "point-geometry" - export class Point { - x: number; - y: number; - - constructor(x: number, y: number); - - clone(): Point; - - add(p: Point): Point; - - sub(p: Point): Point; - - mult(k: number): Point; - - div(k: number): Point; - - rotate(a: number): Point; - - matMult(m: number): Point; - - unit(): Point; - - perp(): Point; - - round(): Point; - - mag(): number; - - equals(p: Point): boolean; - - dist(p: Point): number; - - distSqr(p: Point): number; - - angle(): number; - - angleTo(p: Point): number; - - angleWidth(p: Point): number; - - angleWithSep(x: number, y: number): number; - - static convert(a: PointLike): Point; - } - - /** - * MercatorCoordinate - */ - export class MercatorCoordinate { - /** The x component of the position. */ - x: number; - - /** The y component of the position. */ - y: number; - - /** - * The z component of the position. - * - * @default 0 - */ - z?: number; - - constructor(x: number, y: number, z?: number); - - /** Returns the altitude in meters of the coordinate. */ - toAltitude(): number; - - /** Returns the LngLat for the coordinate. */ - toLngLat(): LngLat; - - /** - * Returns the distance of 1 meter in MercatorCoordinate units at this latitude. - * - * For coordinates in real world units using meters, this naturally provides the - * scale to transform into MercatorCoordinates. - */ - meterInMercatorCoordinateUnits(): number; - - /** Project a LngLat to a MercatorCoordinate. */ - static fromLngLat(lngLatLike: LngLatLike, altitude?: number): MercatorCoordinate; - } - - /** - * Marker - */ - export class Marker extends Evented { - constructor(options?: maplibregl.MarkerOptions); - - constructor(element?: HTMLElement, options?: maplibregl.MarkerOptions); - - addTo(map: Map): this; - - remove(): this; - - getLngLat(): LngLat; - - setLngLat(lngLat: LngLatLike): this; - - getElement(): HTMLElement; - - setPopup(popup?: Popup): this; - - getPopup(): Popup; - - togglePopup(): this; - - getOffset(): PointLike; - - setOffset(offset: PointLike): this; - - setDraggable(shouldBeDraggable: boolean): this; - - isDraggable(): boolean; - - getRotationAlignment(): Alignment; - - setRotationAlignment(alignment: Alignment): this; - - getPitchAlignment(): Alignment; - - setPitchAlignment(alignment: Alignment): this; - } - - type Alignment = 'map' | 'viewport' | 'auto'; - - export interface MarkerOptions { - /** DOM element to use as a marker. The default is a light blue, droplet-shaped SVG marker */ - element?: HTMLElement; - - /** The offset in pixels as a PointLike object to apply relative to the element's center. Negatives indicate left and up. */ - offset?: PointLike; - - /** A string indicating the part of the Marker that should be positioned closest to the coordinate set via Marker.setLngLat. - * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`. - * The default value os `'center'` - */ - anchor?: Anchor; - - /** The color to use for the default marker if options.element is not provided. The default is light blue (#3FB1CE). */ - color?: string; - - /** A boolean indicating whether or not a marker is able to be dragged to a new position on the map. The default value is false */ - draggable?: boolean; - - /** - * The max number of pixels a user can shift the mouse pointer during a click on the marker for it to be considered a valid click - * (as opposed to a marker drag). The default (0) is to inherit map's clickTolerance. - */ - clickTolerance?: number | null; - - /** The rotation angle of the marker in degrees, relative to its `rotationAlignment` setting. A positive value will rotate the marker clockwise. - * The default value is 0. - */ - rotation?: number; - - /** `map` aligns the `Marker`'s rotation relative to the map, maintaining a bearing as the map rotates. - * `viewport` aligns the `Marker`'s rotation relative to the viewport, agnostic to map rotations. - * `auto` is equivalent to `viewport`. - * The default value is `auto` - */ - rotationAlignment?: Alignment; - - /** `map` aligns the `Marker` to the plane of the map. - * `viewport` aligns the `Marker` to the plane of the viewport. - * `auto` automatically matches the value of `rotationAlignment`. - * The default value is `auto`. - */ - pitchAlignment?: Alignment; - - /** The scale to use for the default marker if options.element is not provided. - * The default scale (1) corresponds to a height of `41px` and a width of `27px`. - */ - scale?: number; - } - - /** - * Evented - */ - export class Evented { - on(type: string, listener: Function): this; - - off(type?: string | any, listener?: Function): this; - - once(type: string, listener: Function): this; - - // https://github.com/mapbox/mapbox-gl-js/issues/6522 - fire(type: string, properties?: { [key: string]: any }): this; - } - - /** - * StyleOptions - */ - export interface StyleOptions { - transition?: boolean; - } - - export type MapboxGeoJSONFeature = GeoJSON.Feature & { - layer: Layer; - source: string; - sourceLayer: string; - state: { [key: string]: any }; - }; - - export type EventData = { [key: string]: any }; - - export class MapboxEvent { - type: string; - target: Map; - originalEvent: TOrig; - } - - export class MapMouseEvent extends MapboxEvent { - type: - | 'mousedown' - | 'mouseup' - | 'click' - | 'dblclick' - | 'mousemove' - | 'mouseover' - | 'mouseenter' - | 'mouseleave' - | 'mouseout' - | 'contextmenu'; - - point: Point; - lngLat: LngLat; - - preventDefault(): void; - defaultPrevented: boolean; - } - - export type MapLayerMouseEvent = MapMouseEvent & { features?: MapboxGeoJSONFeature[] }; - - export class MapTouchEvent extends MapboxEvent { - type: 'touchstart' | 'touchend' | 'touchcancel'; - - point: Point; - lngLat: LngLat; - points: Point[]; - lngLats: LngLat[]; - - preventDefault(): void; - defaultPrevented: boolean; - } - - export type MapLayerTouchEvent = MapTouchEvent & { features?: MapboxGeoJSONFeature[] }; - - export class MapWheelEvent extends MapboxEvent { - type: 'wheel'; - - preventDefault(): void; - defaultPrevented: boolean; - } - - export interface MapBoxZoomEvent extends MapboxEvent { - type: 'boxzoomstart' | 'boxzoomend' | 'boxzoomcancel'; - - boxZoomBounds: LngLatBounds; - } - - export type MapDataEvent = MapSourceDataEvent | MapStyleDataEvent; - - export interface MapStyleDataEvent extends MapboxEvent { - dataType: 'style'; - } - - export interface MapSourceDataEvent extends MapboxEvent { - dataType: 'source'; - isSourceLoaded: boolean; - source: Source; - sourceId: string; - sourceDataType: 'metadata' | 'content'; - tile: any; - coord: Coordinate; - } - - export interface Coordinate { - canonical: CanonicalCoordinate; - wrap: number; - key: number; - } - - export interface CanonicalCoordinate { - x: number; - y: number; - z: number; - key: number; - equals(coord: CanonicalCoordinate): boolean; - } - - export interface MapContextEvent extends MapboxEvent { - type: 'webglcontextlost' | 'webglcontextrestored'; - } - - export class ErrorEvent extends MapboxEvent { - type: 'error'; - error: Error; - } - - /** - * FilterOptions - */ - export interface FilterOptions { - /** - * Whether to check if the filter conforms to the Mapbox GL Style Specification. - * Disabling validation is a performance optimization that should only be used - * if you have previously validated the values you will be passing to this function. - */ - validate?: boolean | null; - } - - /** - * AnimationOptions - */ - export interface AnimationOptions { - /** Number in milliseconds */ - duration?: number; - /** - * A function taking a time in the range 0..1 and returning a number where 0 is the initial - * state and 1 is the final state. - */ - easing?: (time: number) => number; - /** point, origin of movement relative to map center */ - offset?: PointLike; - /** When set to false, no animation happens */ - animate?: boolean; - - /** If `true`, then the animation is considered essential and will not be affected by `prefers-reduced-motion`. - * Otherwise, the transition will happen instantly if the user has enabled the `reduced motion` accesibility feature in their operating system. - */ - essential?: boolean; - } - - /** - * CameraOptions - */ - export interface CameraOptions { - /** Map center */ - center?: LngLatLike; - /** Map zoom level */ - zoom?: number; - /** Map rotation bearing in degrees counter-clockwise from north */ - bearing?: number; - /** Map angle in degrees at which the camera is looking at the ground */ - pitch?: number; - /** If zooming, the zoom center (defaults to map center) */ - around?: LngLatLike; - } - - export interface CameraForBoundsOptions extends CameraOptions { - padding?: number | RequireAtLeastOne; - offset?: PointLike; - maxZoom?: number; - } - - // The Mapbox docs say that if the result is defined, it will have zoom, center and bearing set. - // In practice center is always a {lat, lng} object. - export type CameraForBoundsResult = Required> & { - /** Map center */ - center: { lng: number; lat: number }; - }; - - /** - * FlyToOptions - */ - export interface FlyToOptions extends AnimationOptions, CameraOptions { - curve?: number; - minZoom?: number; - speed?: number; - screenSpeed?: number; - maxDuration?: number; - } - - /** - * EaseToOptions - */ - export interface EaseToOptions extends AnimationOptions, CameraOptions { - delayEndEvents?: number; - padding?: number | RequireAtLeastOne; - } - - export interface FitBoundsOptions extends maplibregl.FlyToOptions { - linear?: boolean; - padding?: number | RequireAtLeastOne; - offset?: maplibregl.PointLike; - maxZoom?: number; - maxDuration?: number; - } - - /** - * MapEvent - */ - export type MapEventType = { - error: ErrorEvent; - - load: MapboxEvent; - idle: MapboxEvent; - remove: MapboxEvent; - render: MapboxEvent; - resize: MapboxEvent; - - webglcontextlost: MapContextEvent; - webglcontextrestored: MapContextEvent; - - dataloading: MapDataEvent; - data: MapDataEvent; - tiledataloading: MapDataEvent; - sourcedataloading: MapSourceDataEvent; - styledataloading: MapStyleDataEvent; - sourcedata: MapSourceDataEvent; - styledata: MapStyleDataEvent; - - boxzoomcancel: MapBoxZoomEvent; - boxzoomstart: MapBoxZoomEvent; - boxzoomend: MapBoxZoomEvent; - - touchcancel: MapTouchEvent; - touchmove: MapTouchEvent; - touchend: MapTouchEvent; - touchstart: MapTouchEvent; - - click: MapMouseEvent; - contextmenu: MapMouseEvent; - dblclick: MapMouseEvent; - mousemove: MapMouseEvent; - mouseup: MapMouseEvent; - mousedown: MapMouseEvent; - mouseout: MapMouseEvent; - mouseover: MapMouseEvent; - - movestart: MapboxEvent; - move: MapboxEvent; - moveend: MapboxEvent; - - zoomstart: MapboxEvent; - zoom: MapboxEvent; - zoomend: MapboxEvent; - - rotatestart: MapboxEvent; - rotate: MapboxEvent; - rotateend: MapboxEvent; - - dragstart: MapboxEvent; - drag: MapboxEvent; - dragend: MapboxEvent; - - pitchstart: MapboxEvent; - pitch: MapboxEvent; - pitchend: MapboxEvent; - - wheel: MapWheelEvent; - }; - - export type MapLayerEventType = { - click: MapLayerMouseEvent; - dblclick: MapLayerMouseEvent; - mousedown: MapLayerMouseEvent; - mouseup: MapLayerMouseEvent; - mousemove: MapLayerMouseEvent; - mouseenter: MapLayerMouseEvent; - mouseleave: MapLayerMouseEvent; - mouseover: MapLayerMouseEvent; - mouseout: MapLayerMouseEvent; - contextmenu: MapLayerMouseEvent; - - touchstart: MapLayerTouchEvent; - touchend: MapLayerTouchEvent; - touchcancel: MapLayerTouchEvent; - }; - - export type AnyLayout = - | BackgroundLayout - | FillLayout - | FillExtrusionLayout - | LineLayout - | SymbolLayout - | RasterLayout - | CircleLayout - | HeatmapLayout - | HillshadeLayout; - - export type AnyPaint = - | BackgroundPaint - | FillPaint - | FillExtrusionPaint - | LinePaint - | SymbolPaint - | RasterPaint - | CirclePaint - | HeatmapPaint - | HillshadePaint; - - interface Layer { - id: string; - type: string; - - metadata?: any; - ref?: string; - - source?: string | AnySourceData; - - 'source-layer'?: string; - - minzoom?: number; - maxzoom?: number; - - interactive?: boolean; - - filter?: any[]; - layout?: Layout; - paint?: object; - } - - interface BackgroundLayer extends Layer { - type: 'background'; - layout?: BackgroundLayout; - paint?: BackgroundPaint; - } - - interface CircleLayer extends Layer { - type: 'circle'; - layout?: CircleLayout; - paint?: CirclePaint; - } - - interface FillExtrusionLayer extends Layer { - type: 'fill-extrusion'; - layout?: FillExtrusionLayout; - paint?: FillExtrusionPaint; - } - - interface FillLayer extends Layer { - type: 'fill'; - layout?: FillLayout; - paint?: FillPaint; - } - - interface HeatmapLayer extends Layer { - type: 'heatmap'; - layout?: HeatmapLayout; - paint?: HeatmapPaint; - } - - interface HillshadeLayer extends Layer { - type: 'hillshade'; - layout?: HillshadeLayout; - paint?: HillshadePaint; - } - - interface LineLayer extends Layer { - type: 'line'; - layout?: LineLayout; - paint?: LinePaint; - } - - interface RasterLayer extends Layer { - type: 'raster'; - layout?: RasterLayout; - paint?: RasterPaint; - } - - interface SymbolLayer extends Layer { - type: 'symbol'; - layout?: SymbolLayout; - paint?: SymbolPaint; - } - - export type AnyLayer = - | BackgroundLayer - | CircleLayer - | FillExtrusionLayer - | FillLayer - | HeatmapLayer - | HillshadeLayer - | LineLayer - | RasterLayer - | SymbolLayer - | CustomLayerInterface; - - // See https://docs.mapbox.com/mapbox-gl-js/api/#customlayerinterface - export interface CustomLayerInterface { - /** A unique layer id. */ - id: string; - - /* The layer's type. Must be "custom". */ - type: 'custom'; - - /* Either "2d" or "3d". Defaults to "2d". */ - renderingMode?: '2d' | '3d'; - - /** - * Optional method called when the layer has been removed from the Map with Map#removeLayer. - * This gives the layer a chance to clean up gl resources and event listeners. - * @param map The Map this custom layer was just added to. - * @param gl The gl context for the map. - */ - onRemove?(map: maplibregl.Map, gl: WebGLRenderingContext): void; - - /** - * Optional method called when the layer has been added to the Map with Map#addLayer. - * This gives the layer a chance to initialize gl resources and register event listeners. - * @param map The Map this custom layer was just added to. - * @param gl The gl context for the map. - */ - onAdd?(map: maplibregl.Map, gl: WebGLRenderingContext): void; - - /** - * Optional method called during a render frame to allow a layer to prepare resources - * or render into a texture. - * - * The layer cannot make any assumptions about the current GL state and must bind a framebuffer - * before rendering. - * @param gl The map's gl context. - * @param matrix The map's camera matrix. It projects spherical mercator coordinates to gl - * coordinates. The mercator coordinate [0, 0] represents the top left corner of - * the mercator world and [1, 1] represents the bottom right corner. When the - * renderingMode is "3d" , the z coordinate is conformal. A box with identical - * x, y, and z lengths in mercator units would be rendered as a cube. - * MercatorCoordinate .fromLatLng can be used to project a LngLat to a mercator - * coordinate. - */ - prerender?(gl: WebGLRenderingContext, matrix: number[]): void; - - /** - * Called during a render frame allowing the layer to draw into the GL context. - * - * The layer can assume blending and depth state is set to allow the layer to properly blend - * and clip other layers. The layer cannot make any other assumptions about the current GL state. - * - * If the layer needs to render to a texture, it should implement the prerender method to do this - * and only use the render method for drawing directly into the main framebuffer. - * - * The blend function is set to gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA). This expects - * colors to be provided in premultiplied alpha form where the r, g and b values are already - * multiplied by the a value. If you are unable to provide colors in premultiplied form you may - * want to change the blend function to - * gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA). - * - * @param gl The map's gl context. - * @param matrix The map's camera matrix. It projects spherical mercator coordinates to gl - * coordinates. The mercator coordinate [0, 0] represents the top left corner of - * the mercator world and [1, 1] represents the bottom right corner. When the - * renderingMode is "3d" , the z coordinate is conformal. A box with identical - * x, y, and z lengths in mercator units would be rendered as a cube. - * MercatorCoordinate .fromLatLng can be used to project a LngLat to a mercator - * coordinate. - */ - render(gl: WebGLRenderingContext, matrix: number[]): void; - } - - export interface StyleFunction { - stops?: any[][]; - property?: string; - base?: number; - type?: 'identity' | 'exponential' | 'interval' | 'categorical'; - default?: any; - colorSpace?: 'rgb' | 'lab' | 'hcl'; - } - - type Visibility = 'visible' | 'none'; - - export interface Layout { - visibility?: Visibility; - } - - export interface BackgroundLayout extends Layout {} - - export interface BackgroundPaint { - 'background-color'?: string | Expression; - 'background-color-transition'?: Transition; - 'background-pattern'?: string; - 'background-pattern-transition'?: Transition; - 'background-opacity'?: number | Expression; - 'background-opacity-transition'?: Transition; - } - - export interface FillLayout extends Layout { - 'fill-sort-key'?: number | Expression; - } - - export interface FillPaint { - 'fill-antialias'?: boolean | Expression; - 'fill-opacity'?: number | StyleFunction | Expression; - 'fill-opacity-transition'?: Transition; - 'fill-color'?: string | StyleFunction | Expression; - 'fill-color-transition'?: Transition; - 'fill-outline-color'?: string | StyleFunction | Expression; - 'fill-outline-color-transition'?: Transition; - 'fill-translate'?: number[]; - 'fill-translate-transition'?: Transition; - 'fill-translate-anchor'?: 'map' | 'viewport'; - 'fill-pattern'?: string | Expression; - 'fill-pattern-transition'?: Transition; - } - - export interface FillExtrusionLayout extends Layout {} - - export interface FillExtrusionPaint { - 'fill-extrusion-opacity'?: number | Expression; - 'fill-extrusion-opacity-transition'?: Transition; - 'fill-extrusion-color'?: string | StyleFunction | Expression; - 'fill-extrusion-color-transition'?: Transition; - 'fill-extrusion-translate'?: number[] | Expression; - 'fill-extrusion-translate-transition'?: Transition; - 'fill-extrusion-translate-anchor'?: 'map' | 'viewport'; - 'fill-extrusion-pattern'?: string | Expression; - 'fill-extrusion-pattern-transition'?: Transition; - 'fill-extrusion-height'?: number | StyleFunction | Expression; - 'fill-extrusion-height-transition'?: Transition; - 'fill-extrusion-base'?: number | StyleFunction | Expression; - 'fill-extrusion-base-transition'?: Transition; - 'fill-extrusion-vertical-gradient'?: boolean; - } - - export interface LineLayout extends Layout { - 'line-cap'?: 'butt' | 'round' | 'square'; - 'line-join'?: 'bevel' | 'round' | 'miter' | Expression; - 'line-miter-limit'?: number | Expression; - 'line-round-limit'?: number | Expression; - 'line-sort-key'?: number | Expression; - } - - export interface LinePaint { - 'line-opacity'?: number | StyleFunction | Expression; - 'line-opacity-transition'?: Transition; - 'line-color'?: string | StyleFunction | Expression; - 'line-color-transition'?: Transition; - 'line-translate'?: number[] | Expression; - 'line-translate-transition'?: Transition; - 'line-translate-anchor'?: 'map' | 'viewport'; - 'line-width'?: number | StyleFunction | Expression; - 'line-width-transition'?: Transition; - 'line-gap-width'?: number | StyleFunction | Expression; - 'line-gap-width-transition'?: Transition; - 'line-offset'?: number | StyleFunction | Expression; - 'line-offset-transition'?: Transition; - 'line-blur'?: number | StyleFunction | Expression; - 'line-blur-transition'?: Transition; - 'line-dasharray'?: number[] | Expression; - 'line-dasharray-transition'?: Transition; - 'line-pattern'?: string | Expression; - 'line-pattern-transition'?: Transition; - 'line-gradient'?: Expression; - } - - export interface SymbolLayout extends Layout { - 'symbol-placement'?: 'point' | 'line' | 'line-center'; - 'symbol-spacing'?: number | Expression; - 'symbol-avoid-edges'?: boolean; - 'symbol-z-order'?: 'viewport-y' | 'source'; - 'icon-allow-overlap'?: boolean | StyleFunction | Expression; - 'icon-ignore-placement'?: boolean; - 'icon-optional'?: boolean; - 'icon-rotation-alignment'?: 'map' | 'viewport' | 'auto'; - 'icon-size'?: number | StyleFunction | Expression; - 'icon-text-fit'?: 'none' | 'both' | 'width' | 'height'; - 'icon-text-fit-padding'?: number[] | Expression; - 'icon-image'?: string | StyleFunction | Expression; - 'icon-rotate'?: number | StyleFunction | Expression; - 'icon-padding'?: number | Expression; - 'icon-keep-upright'?: boolean; - 'icon-offset'?: number[] | StyleFunction | Expression; - 'icon-anchor'?: Anchor | StyleFunction | Expression; - 'icon-pitch-alignment'?: 'map' | 'viewport' | 'auto'; - 'text-pitch-alignment'?: 'map' | 'viewport' | 'auto'; - 'text-rotation-alignment'?: 'map' | 'viewport' | 'auto'; - 'text-field'?: string | StyleFunction | Expression; - 'text-font'?: string | string[] | Expression; - 'text-size'?: number | StyleFunction | Expression; - 'text-max-width'?: number | StyleFunction | Expression; - 'text-line-height'?: number | Expression; - 'text-letter-spacing'?: number | Expression; - 'text-justify'?: 'left' | 'center' | 'right' | Expression; - 'text-anchor'?: Anchor | StyleFunction | Expression; - 'text-max-angle'?: number | Expression; - 'text-rotate'?: number | StyleFunction | Expression; - 'text-padding'?: number | Expression; - 'text-keep-upright'?: boolean; - 'text-transform'?: 'none' | 'uppercase' | 'lowercase' | StyleFunction | Expression; - 'text-offset'?: number[] | Expression; - 'text-allow-overlap'?: boolean; - 'text-ignore-placement'?: boolean; - 'text-optional'?: boolean; - 'text-radial-offset'?: number | Expression; - 'text-variable-anchor'?: Anchor[]; - 'text-writing-mode'?: ('horizontal' | 'vertical')[]; - 'symbol-sort-key'?: number | Expression; - } - - export interface SymbolPaint { - 'icon-opacity'?: number | StyleFunction | Expression; - 'icon-opacity-transition'?: Transition; - 'icon-color'?: string | StyleFunction | Expression; - 'icon-color-transition'?: Transition; - 'icon-halo-color'?: string | StyleFunction | Expression; - 'icon-halo-color-transition'?: Transition; - 'icon-halo-width'?: number | StyleFunction | Expression; - 'icon-halo-width-transition'?: Transition; - 'icon-halo-blur'?: number | StyleFunction | Expression; - 'icon-halo-blur-transition'?: Transition; - 'icon-translate'?: number[] | Expression; - 'icon-translate-transition'?: Transition; - 'icon-translate-anchor'?: 'map' | 'viewport'; - 'text-opacity'?: number | StyleFunction | Expression; - 'text-opacity-transition'?: Transition; - 'text-color'?: string | StyleFunction | Expression; - 'text-color-transition'?: Transition; - 'text-halo-color'?: string | StyleFunction | Expression; - 'text-halo-color-transition'?: Transition; - 'text-halo-width'?: number | StyleFunction | Expression; - 'text-halo-width-transition'?: Transition; - 'text-halo-blur'?: number | StyleFunction | Expression; - 'text-halo-blur-transition'?: Transition; - 'text-translate'?: number[] | Expression; - 'text-translate-transition'?: Transition; - 'text-translate-anchor'?: 'map' | 'viewport'; - } - - export interface RasterLayout extends Layout {} - - export interface RasterPaint { - 'raster-opacity'?: number | Expression; - 'raster-opacity-transition'?: Transition; - 'raster-hue-rotate'?: number | Expression; - 'raster-hue-rotate-transition'?: Transition; - 'raster-brightness-min'?: number | Expression; - 'raster-brightness-min-transition'?: Transition; - 'raster-brightness-max'?: number | Expression; - 'raster-brightness-max-transition'?: Transition; - 'raster-saturation'?: number | Expression; - 'raster-saturation-transition'?: Transition; - 'raster-contrast'?: number | Expression; - 'raster-contrast-transition'?: Transition; - 'raster-fade-duration'?: number | Expression; - 'raster-resampling'?: 'linear' | 'nearest'; - } - - export interface CircleLayout extends Layout { - 'circle-sort-key'?: number | Expression; - } - - export interface CirclePaint { - 'circle-radius'?: number | StyleFunction | Expression; - 'circle-radius-transition'?: Transition; - 'circle-color'?: string | StyleFunction | Expression; - 'circle-color-transition'?: Transition; - 'circle-blur'?: number | StyleFunction | Expression; - 'circle-blur-transition'?: Transition; - 'circle-opacity'?: number | StyleFunction | Expression; - 'circle-opacity-transition'?: Transition; - 'circle-translate'?: number[] | Expression; - 'circle-translate-transition'?: Transition; - 'circle-translate-anchor'?: 'map' | 'viewport'; - 'circle-pitch-scale'?: 'map' | 'viewport'; - 'circle-pitch-alignment'?: 'map' | 'viewport'; - 'circle-stroke-width'?: number | StyleFunction | Expression; - 'circle-stroke-width-transition'?: Transition; - 'circle-stroke-color'?: string | StyleFunction | Expression; - 'circle-stroke-color-transition'?: Transition; - 'circle-stroke-opacity'?: number | StyleFunction | Expression; - 'circle-stroke-opacity-transition'?: Transition; - } - - export interface HeatmapLayout extends Layout {} - - export interface HeatmapPaint { - 'heatmap-radius'?: number | StyleFunction | Expression; - 'heatmap-radius-transition'?: Transition; - 'heatmap-weight'?: number | StyleFunction | Expression; - 'heatmap-intensity'?: number | StyleFunction | Expression; - 'heatmap-intensity-transition'?: Transition; - 'heatmap-color'?: string | StyleFunction | Expression; - 'heatmap-opacity'?: number | StyleFunction | Expression; - 'heatmap-opacity-transition'?: Transition; - } - - export interface HillshadeLayout extends Layout {} - - export interface HillshadePaint { - 'hillshade-illumination-direction'?: number | Expression; - 'hillshade-illumination-anchor'?: 'map' | 'viewport'; - 'hillshade-exaggeration'?: number | Expression; - 'hillshade-exaggeration-transition'?: Transition; - 'hillshade-shadow-color'?: string | Expression; - 'hillshade-shadow-color-transition'?: Transition; - 'hillshade-highlight-color'?: string | Expression; - 'hillshade-highlight-color-transition'?: Transition; - 'hillshade-accent-color'?: string | Expression; - 'hillshade-accent-color-transition'?: Transition; - } -} From fa2b6eaf95368eabd4f9097300079b7b0a427e40 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 17:49:27 +0200 Subject: [PATCH 011/142] Ignore lint errors --- src/data/feature_index.ts | 2 +- src/util/web_worker_transfer.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index bf34c7fba0..e012004839 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -168,7 +168,7 @@ class FeatureIndex { styleLayers, serializedLayers, sourceFeatureState, - (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: any) => { + (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: any) => { // eslint-disable-line no-loop-func if (!featureGeometry) { featureGeometry = loadGeometry(feature); } diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index 2ebafe262d..ae3ab29858 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -185,7 +185,7 @@ export function serialize(input: unknown, transferables?: Array | if (!klass.serialize) { for (const key in input) { // any cast due to https://github.com/facebook/flow/issues/5393 - if (!(input as any).hasOwnProperty(key)) continue; + if (!(input as any).hasOwnProperty(key)) continue; // eslint-disable-line no-prototype-builtins if (registry[name].omit.indexOf(key) >= 0) continue; const property = (input as any)[key]; properties[key] = registry[name].shallow.indexOf(key) >= 0 ? From a24a7ca165c266274f41a57d90ae5577924f8a0d Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 18:09:17 +0200 Subject: [PATCH 012/142] Remove .ts extension in import --- src/style-spec/format.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/style-spec/format.ts b/src/style-spec/format.ts index 9b1f693aed..8ef3b43d31 100644 --- a/src/style-spec/format.ts +++ b/src/style-spec/format.ts @@ -1,5 +1,5 @@ -import reference from './reference/latest.ts'; +import reference from './reference/latest'; import stringifyPretty from 'json-stringify-pretty-compact'; function sortKeysBy(obj, reference) { From 9d8d47d91ab7da386957653e5afd9f398fb489c2 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 13 Jul 2021 20:53:55 +0300 Subject: [PATCH 013/142] Update CI from node v10 to v14 --- .circleci/config.yml | 2 +- .github/workflows/analyze.yml | 4 +-- .github/workflows/build.yml | 4 +-- .github/workflows/ci.yml | 34 ++++++++++++------------ .github/workflows/publish-style-spec.yml | 4 +-- .github/workflows/release.yml | 8 +++--- build/maplibre-gl-js.dockerfile | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e383b053ee..3eb1fedacf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -75,7 +75,7 @@ workflows: defaults: &defaults docker: - - image: circleci/node:10.16-browsers + - image: circleci/node:14.17-browsers working_directory: ~/mapbox-gl-js jobs: diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 84109b095b..d4822bcec3 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -18,10 +18,10 @@ jobs: # report status back to pull request - uses: haya14busa/action-workflow_run-status@v1 - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - name: Download branch artifact diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5af5c7cc0..d41e41c7da 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,10 +12,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run build-prod-min diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 01b9b847bd..2ce387bb5e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: - macos-latest - windows-latest node_version: - - 10 + - 14 architecture: - x64 @@ -42,10 +42,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run lint @@ -57,10 +57,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run test-flow @@ -70,10 +70,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile # see: https://github.com/stackgl/headless-gl#how-can-headless-gl-be-used-on-a-headless-linux-machine @@ -84,10 +84,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run test-query @@ -105,10 +105,10 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run test-expressions @@ -120,10 +120,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2-beta with: - node-version: 10 + node-version: 14 architecture: x64 - run: yarn install --frozen-lockfile - run: yarn run build-dev @@ -146,10 +146,10 @@ jobs: # needs: [build] # steps: # - uses: actions/checkout@v2 - # - name: Use Node.js 10 x64 + # - name: Use Node.js 14 x64 # uses: actions/setup-node@v2-beta # with: - # node-version: 10 + # node-version: 14 # architecture: x64 # - run: yarn install --frozen-lockfile # - uses: actions/download-artifact@v2 @@ -166,10 +166,10 @@ jobs: # test-render: # runs-on: ubuntu-latest # steps: - # - name: Use Node.js 10 x64 + # - name: Use Node.js 14 x64 # uses: actions/setup-node@v2-beta # with: - # node-version: 10 + # node-version: 14 # architecture: x64 # - run: yarn install --frozen-lockfile # - run: yarn run test-render diff --git a/.github/workflows/publish-style-spec.yml b/.github/workflows/publish-style-spec.yml index 34dbf7d0eb..6a872dc584 100644 --- a/.github/workflows/publish-style-spec.yml +++ b/.github/workflows/publish-style-spec.yml @@ -12,10 +12,10 @@ jobs: with: fetch-depth: 0 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2 with: - node-version: 10 + node-version: 14 architecture: x64 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e2b9f83fd2..f37a02d2e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,10 +18,10 @@ jobs: with: fetch-depth: 0 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2 with: - node-version: 10 + node-version: 14 architecture: x64 registry-url: 'https://registry.npmjs.org' @@ -70,10 +70,10 @@ jobs: with: fetch-depth: 0 - - name: Use Node.js 10 x64 + - name: Use Node.js 14 x64 uses: actions/setup-node@v2 with: - node-version: 10 + node-version: 14 architecture: x64 registry-url: 'https://registry.npmjs.org' diff --git a/build/maplibre-gl-js.dockerfile b/build/maplibre-gl-js.dockerfile index 91eeea66ca..33f45e69dc 100644 --- a/build/maplibre-gl-js.dockerfile +++ b/build/maplibre-gl-js.dockerfile @@ -1,6 +1,6 @@ # see: publish-release.sh to build/run this -FROM node:10 +FROM node:14 ENV DEBIAN_FRONTEND=noninteractive From 19dd3085a1b2e0a7ad9a5d762f577a92363f5ec5 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 18:43:41 +0200 Subject: [PATCH 014/142] Replace yarn with npm --- .github/workflows/analyze.yml | 2 +- .github/workflows/build.yml | 18 ++++----- .github/workflows/ci.yml | 50 ++++++++++++------------ .github/workflows/publish-style-spec.yml | 10 ++--- .github/workflows/release.yml | 24 ++++++------ 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index d4822bcec3..39cdb778cf 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -23,7 +23,7 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile + - run: npm ci - name: Download branch artifact uses: dawidd6/action-download-artifact@v2 with: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d41e41c7da..ca1ceb38c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,15 +17,15 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run build-prod-min - - run: yarn run build-prod - - run: yarn run build-csp - - run: yarn run build-dev - - run: yarn run build-css - - run: yarn run build-style-spec - - run: yarn run build-flow-types - - run: yarn run test-build + - run: npm ci + - run: npm run build-prod-min + - run: npm run build-prod + - run: npm run build-csp + - run: npm run build-dev + - run: npm run build-css + - run: npm run build-style-spec + - run: npm run build-flow-types + - run: npm run test-build - run: find dist - run: mkdir build-info - name: Store build info diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ce387bb5e..5db29aa697 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,11 +31,11 @@ jobs: with: node-version: ${{ matrix.node_version }} architecture: ${{ matrix.architecture }} - - run: yarn install --frozen-lockfile + - run: npm ci - - run: yarn run lint - - run: yarn run build-dev - - run: yarn test-unit + - run: npm run lint + - run: npm run build-dev + - run: npm run test-unit lint: runs-on: ubuntu-latest @@ -47,10 +47,10 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run lint - - run: yarn run lint-docs - - run: yarn run lint-css + - run: npm ci + - run: npm run lint + - run: npm run lint-docs + - run: npm run lint-css test-flow: runs-on: ubuntu-latest @@ -62,8 +62,8 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run test-flow + - run: npm ci + - run: npm run test-flow test-unit: runs-on: ubuntu-latest @@ -75,9 +75,9 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile + - run: npm ci # see: https://github.com/stackgl/headless-gl#how-can-headless-gl-be-used-on-a-headless-linux-machine - - run: xvfb-run -s "-ac -screen 0 1280x1024x24" yarn run test-unit + - run: xvfb-run -s "-ac -screen 0 1280x1024x24" npm run test-unit test-query: runs-on: ubuntu-latest @@ -89,8 +89,8 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run test-query + - run: npm ci + - run: npm run test-query - uses: actions/upload-artifact@v2 with: path: ./test/integration/query-tests @@ -110,8 +110,8 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run test-expressions + - run: npm ci + - run: npm run test-expressions test-browser: timeout-minutes: 20 @@ -125,20 +125,20 @@ jobs: with: node-version: 14 architecture: x64 - - run: yarn install --frozen-lockfile - - run: yarn run build-dev - - run: DETECT_CHROMEDRIVER_VERSION=true yarn global add chromedriver - - run: yarn global add geckodriver@^1.22.3 + - run: npm ci + - run: npm run build-dev + - run: DETECT_CHROMEDRIVER_VERSION=true npm install -g chromedriver + - run: npm install -g geckodriver@^1.22.3 - name: Test Chrome env: SELENIUM_BROWSER: chrome TAP_COLORS: 1 - run: xvfb-run -s "-ac -screen 0 1280x1024x24" yarn run test-browser + run: xvfb-run -s "-ac -screen 0 1280x1024x24" npm run test-browser - name: Test Firefox env: SELENIUM_BROWSER: firefox TAP_COLORS: 1 - run: xvfb-run -s "-ac -screen 0 1280x1024x24" yarn run test-browser + run: xvfb-run -s "-ac -screen 0 1280x1024x24" npm run test-browser # TODO need a data provider for these: # collect-stats: @@ -151,7 +151,7 @@ jobs: # with: # node-version: 14 # architecture: x64 - # - run: yarn install --frozen-lockfile + # - run: npm ci # - uses: actions/download-artifact@v2 # with: # name: dist @@ -171,8 +171,8 @@ jobs: # with: # node-version: 14 # architecture: x64 - # - run: yarn install --frozen-lockfile - # - run: yarn run test-render + # - run: npm ci + # - run: npm run test-render # - uses: actions/upload-artifact@v2 # with: # path: test/integration/render-tests/index.html diff --git a/.github/workflows/publish-style-spec.yml b/.github/workflows/publish-style-spec.yml index 6a872dc584..3d9539b662 100644 --- a/.github/workflows/publish-style-spec.yml +++ b/.github/workflows/publish-style-spec.yml @@ -20,18 +20,18 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Install GL JS - run: yarn install --frozen-lockfile + run: npm ci - name: Build GL JS run: | - yarn run build-prod-min - yarn run build-css + npm run build-prod-min + npm run build-css - name: Build style spec run: | cd src/style-spec - yarn install - yarn run prepublish + npm install + npm run prepublish - name: Check version and publish run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f37a02d2e7..ed87bb1a79 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Install - run: yarn install --frozen-lockfile + run: npm ci - name: Validate version tag run: | @@ -45,17 +45,17 @@ jobs: - name: Lint run: | - yarn run lint - yarn run lint-docs - yarn run lint-css + npm run lint + npm run lint-docs + npm run lint-css - name: Test run: | - yarn run test-flow - yarn run test-unit - yarn run test-render - yarn run test-query - yarn run test-expressions + npm run test-flow + npm run test-unit + npm run test-render + npm run test-query + npm run test-expressions release: name: Release @@ -78,7 +78,7 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Install - run: yarn install --frozen-lockfile + run: npm ci - name: Validate version tag run: | @@ -97,8 +97,8 @@ jobs: - name: Build run: | - yarn run build-prod-min - yarn run build-css + npm run build-prod-min + npm run build-css - name: Create Archive run: | From d2e3002824aad910e2b89767484e9edcc802a176 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sat, 17 Jul 2021 18:44:44 +0200 Subject: [PATCH 015/142] Remove circleci --- .circleci/config.yml | 231 ------------------------------------------- 1 file changed, 231 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 3eb1fedacf..0000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,231 +0,0 @@ -version: 2.1 -orbs: - aws-cli: circleci/aws-cli@0.1.16 - -workflows: - version: 2 - default: - jobs: - - prepare: - filters: - tags: - only: /.*/ - - lint: - requires: - - prepare - filters: - tags: - only: /.*/ - - build: - requires: - - prepare - filters: - tags: - only: /.*/ - - check-size: - requires: - - build - filters: - tags: - only: /.*/ - - collect-stats: - requires: - - build - filters: - tags: - ignore: /.*/ - branches: - only: main - - test-flow: - requires: - - prepare - filters: - tags: - only: /.*/ - - test-unit: - requires: - - prepare - filters: - tags: - only: /.*/ - - test-render: - requires: - - prepare - filters: - tags: - only: /.*/ - - test-query: - requires: - - prepare - filters: - tags: - only: /.*/ - - test-expressions: - requires: - - prepare - filters: - tags: - only: /.*/ - - test-browser: - requires: - - prepare - filters: - tags: - only: /.*/ - -defaults: &defaults - docker: - - image: circleci/node:14.17-browsers - working_directory: ~/mapbox-gl-js - -jobs: - prepare: - <<: *defaults - steps: - - checkout - - restore_cache: - keys: - - v3-yarn-{{ checksum "yarn.lock" }} - - run: yarn - - save_cache: - key: v3-yarn-{{ checksum "yarn.lock" }} - paths: - - '~/.yarn' - - 'node_modules' - - persist_to_workspace: - root: . - paths: - - . - - lint: - <<: *defaults - steps: - - attach_workspace: - at: . - - restore_cache: - keys: - - v2-lint-{{ .Branch }} - - v2-lint - - run: yarn run lint - - run: yarn run lint-docs - - run: yarn run lint-css - - save_cache: - key: v2-lint-{{ .Branch }}-{{ .Revision }} - paths: - - '.eslintcache' - - build: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run build-prod-min - - run: yarn run build-prod - - run: yarn run build-csp - - run: yarn run build-dev - - run: yarn run build-css - - run: yarn run build-style-spec - - run: yarn run build-flow-types - - run: yarn run test-build - - deploy: - name: Trigger memory metrics when merging to main - command: | - if [ -n "${WEB_METRICS_TOKEN}" ]; then - if [[ $CIRCLE_BRANCH == main ]]; then - curl -X POST https://circleci.com/api/v1.1/project/github/mapbox/web-metrics/build?circle-token=${WEB_METRICS_TOKEN} - fi - fi - - store_artifacts: - path: "dist" - - store_artifacts: - path: "test/release" - - persist_to_workspace: - root: . - paths: - - dist - - check-size: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: - name: Check bundle size - command: | - node build/check-bundle-size.js "dist/mapbox-gl.js" "JS" - node build/check-bundle-size.js "dist/mapbox-gl.css" "CSS" - - collect-stats: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: - name: Collect performance stats - command: node bench/gl-stats.js - - aws-cli/install - - run: - name: Upload performance stats - command: aws s3 cp data.json.gz s3://mapbox-loading-dock/raw/gl_js.perf_metrics_staging/ci/`git show -s --date=short --format=%cd-%h HEAD`.json.gz - - test-flow: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run test-flow - - test-unit: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run test-unit - - test-render: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run test-render - - store_artifacts: - path: "test/integration/render-tests/index.html" - - test-query: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run test-query - - store_test_results: - path: test/integration/query-tests - - store_artifacts: - path: "test/integration/query-tests/index.html" - - test-browser: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run build-dev - - run: yarn run build-token - - run: - name: Test Chrome - environment: - SELENIUM_BROWSER: chrome - TAP_COLORS: 1 - command: yarn run test-browser - - run: - name: Test Firefox - environment: - SELENIUM_BROWSER: firefox - TAP_COLORS: 1 - command: yarn run test-browser - - test-expressions: - <<: *defaults - steps: - - attach_workspace: - at: . - - run: yarn run test-expressions - From 93c3993957a8ce5f274b1d039f9532d397377b9b Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 18 Jul 2021 01:19:33 +0300 Subject: [PATCH 016/142] Fixed some typings errors --- src/data/array_types.ts | 205 +++++++++++---------- src/data/bucket.ts | 1 + src/data/bucket/fill_bucket.ts | 3 +- src/data/bucket/line_bucket.ts | 2 +- src/data/bucket/pattern_bucket_features.ts | 2 +- src/data/bucket/symbol_bucket.ts | 11 +- src/types/window.ts | 1 + src/ui/camera.ts | 21 ++- src/ui/control/geolocate_control.ts | 37 ++-- src/ui/control/navigation_control.ts | 16 +- src/ui/handler_inertia.ts | 2 +- src/ui/map.ts | 30 +-- src/util/ajax.ts | 34 ++-- src/util/dom.ts | 34 +++- src/util/evented.ts | 6 +- src/util/mapbox.ts | 4 +- src/util/util.ts | 14 +- src/util/window.ts | 8 +- 18 files changed, 242 insertions(+), 189 deletions(-) diff --git a/src/data/array_types.ts b/src/data/array_types.ts index 238d75449b..f887381d3a 100644 --- a/src/data/array_types.ts +++ b/src/data/array_types.ts @@ -19,13 +19,13 @@ class StructArrayLayout2i4 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number) { + public emplaceBack = (v0: number, v1: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - emplace(i: number, v0: number, v1: number) { + public emplace = (i: number, v0: number, v1: number) => { const o2 = i * 2; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -51,13 +51,13 @@ class StructArrayLayout4i8 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { const o2 = i * 4; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -86,13 +86,13 @@ class StructArrayLayout2i4i12 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const o2 = i * 6; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -123,13 +123,13 @@ class StructArrayLayout2i4ub8 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const o2 = i * 4; const o1 = i * 8; this.int16[o2 + 0] = v0; @@ -160,13 +160,13 @@ class StructArrayLayout2f8 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number) { + public emplaceBack = (v0: number, v1: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - emplace(i: number, v0: number, v1: number) { + public emplace = (i: number, v0: number, v1: number) => { const o4 = i * 2; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; @@ -192,13 +192,13 @@ class StructArrayLayout10ui20 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) => { const o2 = i * 10; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -236,13 +236,13 @@ class StructArrayLayout4i4ui4i24 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) => { const o2 = i * 12; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -278,13 +278,13 @@ class StructArrayLayout3f12 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number) { + public emplaceBack = (v0: number, v1: number, v2: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - emplace(i: number, v0: number, v1: number, v2: number) { + public emplace = (i: number, v0: number, v1: number, v2: number) => { const o4 = i * 3; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; @@ -311,13 +311,13 @@ class StructArrayLayout1ul4 extends StructArray { this.uint32 = new Uint32Array(this.arrayBuffer); } - emplaceBack(v0: number) { + public emplaceBack = (v0: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - emplace(i: number, v0: number) { + public emplace = (i: number, v0: number) => { const o4 = i * 1; this.uint32[o4 + 0] = v0; return i; @@ -348,13 +348,13 @@ class StructArrayLayout6i1ul2ui20 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) => { const o2 = i * 10; const o4 = i * 5; this.int16[o2 + 0] = v0; @@ -390,13 +390,13 @@ class StructArrayLayout2i2i2i12 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { const o2 = i * 6; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -430,13 +430,13 @@ class StructArrayLayout2f1f2i16 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number) => { const o4 = i * 4; const o2 = i * 8; this.float32[o4 + 0] = v0; @@ -467,13 +467,13 @@ class StructArrayLayout2ub2f12 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { const o1 = i * 12; const o4 = i * 3; this.uint8[o1 + 0] = v0; @@ -502,13 +502,13 @@ class StructArrayLayout3ui6 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number) { + public emplaceBack = (v0: number, v1: number, v2: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - emplace(i: number, v0: number, v1: number, v2: number) { + public emplace = (i: number, v0: number, v1: number, v2: number) => { const o2 = i * 3; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -548,13 +548,13 @@ class StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) => { const o2 = i * 24; const o4 = i * 12; const o1 = i * 48; @@ -606,13 +606,13 @@ class StructArrayLayout8i15ui1ul4f68 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) => { const o2 = i * 34; const o4 = i * 17; this.int16[o2 + 0] = v0; @@ -665,13 +665,13 @@ class StructArrayLayout1f4 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number) { + public emplaceBack = (v0: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - emplace(i: number, v0: number) { + public emplace = (i: number, v0: number) => { const o4 = i * 1; this.float32[o4 + 0] = v0; return i; @@ -696,13 +696,13 @@ class StructArrayLayout3i6 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number) { + public emplaceBack = (v0: number, v1: number, v2: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - emplace(i: number, v0: number, v1: number, v2: number) { + public emplace = (i: number, v0: number, v1: number, v2: number) => { const o2 = i * 3; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -732,13 +732,13 @@ class StructArrayLayout1ul2ui8 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number) { + public emplaceBack = (v0: number, v1: number, v2: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - emplace(i: number, v0: number, v1: number, v2: number) { + public emplace = (i: number, v0: number, v1: number, v2: number) => { const o4 = i * 2; const o2 = i * 4; this.uint32[o4 + 0] = v0; @@ -766,13 +766,13 @@ class StructArrayLayout2ui4 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number) { + public emplaceBack = (v0: number, v1: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - emplace(i: number, v0: number, v1: number) { + public emplace = (i: number, v0: number, v1: number) => { const o2 = i * 2; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -798,13 +798,13 @@ class StructArrayLayout1ui2 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - emplaceBack(v0: number) { + public emplaceBack = (v0: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - emplace(i: number, v0: number) { + public emplace = (i: number, v0: number) => { const o2 = i * 1; this.uint16[o2 + 0] = v0; return i; @@ -829,13 +829,13 @@ class StructArrayLayout4f16 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - emplaceBack(v0: number, v1: number, v2: number, v3: number) { + public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - emplace(i: number, v0: number, v1: number, v2: number, v3: number) { + public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { const o4 = i * 4; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; @@ -850,16 +850,16 @@ register('StructArrayLayout4f16', StructArrayLayout4f16); class CollisionBoxStruct extends Struct { _structArray: CollisionBoxArray; - anchorPointX: number; - anchorPointY: number; - x1: number; - y1: number; - x2: number; - y2: number; - featureIndex: number; - sourceLayerIndex: number; - bucketIndex: number; - anchorPoint: Point; + // anchorPointX: number; + // anchorPointY: number; + // x1: number; + // y1: number; + // x2: number; + // y2: number; + // featureIndex: number; + // sourceLayerIndex: number; + // bucketIndex: number; + // anchorPoint: Point; get anchorPointX() { return this._structArray.int16[this._pos2 + 0]; } get anchorPointY() { return this._structArray.int16[this._pos2 + 1]; } get x1() { return this._structArray.int16[this._pos2 + 2]; } @@ -895,23 +895,23 @@ register('CollisionBoxArray', CollisionBoxArray); class PlacedSymbolStruct extends Struct { _structArray: PlacedSymbolArray; - anchorX: number; - anchorY: number; - glyphStartIndex: number; - numGlyphs: number; - vertexStartIndex: number; - lineStartIndex: number; - lineLength: number; - segment: number; - lowerSize: number; - upperSize: number; - lineOffsetX: number; - lineOffsetY: number; - writingMode: number; - placedOrientation: number; - hidden: number; - crossTileID: number; - associatedIconIndex: number; + // anchorX: number; + // anchorY: number; + // glyphStartIndex: number; + // numGlyphs: number; + // vertexStartIndex: number; + // lineStartIndex: number; + // lineLength: number; + // segment: number; + // lowerSize: number; + // upperSize: number; + // lineOffsetX: number; + // lineOffsetY: number; + // writingMode: number; + // placedOrientation: number; + // hidden: number; + // crossTileID: number; + // associatedIconIndex: number; get anchorX() { return this._structArray.int16[this._pos2 + 0]; } get anchorY() { return this._structArray.int16[this._pos2 + 1]; } get glyphStartIndex() { return this._structArray.uint16[this._pos2 + 2]; } @@ -957,34 +957,35 @@ register('PlacedSymbolArray', PlacedSymbolArray); class SymbolInstanceStruct extends Struct { _structArray: SymbolInstanceArray; - anchorX: number; - anchorY: number; - rightJustifiedTextSymbolIndex: number; - centerJustifiedTextSymbolIndex: number; - leftJustifiedTextSymbolIndex: number; - verticalPlacedTextSymbolIndex: number; - placedIconSymbolIndex: number; - verticalPlacedIconSymbolIndex: number; - key: number; - textBoxStartIndex: number; - textBoxEndIndex: number; - verticalTextBoxStartIndex: number; - verticalTextBoxEndIndex: number; - iconBoxStartIndex: number; - iconBoxEndIndex: number; - verticalIconBoxStartIndex: number; - verticalIconBoxEndIndex: number; - featureIndex: number; - numHorizontalGlyphVertices: number; - numVerticalGlyphVertices: number; - numIconVertices: number; - numVerticalIconVertices: number; - useRuntimeCollisionCircles: number; - crossTileID: number; - textBoxScale: number; - textOffset0: number; - textOffset1: number; - collisionCircleDiameter: number; + // HM TODO: can this be removed? + // anchorX: number; + // anchorY: number; + // rightJustifiedTextSymbolIndex: number; + // centerJustifiedTextSymbolIndex: number; + // leftJustifiedTextSymbolIndex: number; + // verticalPlacedTextSymbolIndex: number; + // placedIconSymbolIndex: number; + // verticalPlacedIconSymbolIndex: number; + // key: number; + // textBoxStartIndex: number; + // textBoxEndIndex: number; + // verticalTextBoxStartIndex: number; + // verticalTextBoxEndIndex: number; + // iconBoxStartIndex: number; + // iconBoxEndIndex: number; + // verticalIconBoxStartIndex: number; + // verticalIconBoxEndIndex: number; + // featureIndex: number; + // numHorizontalGlyphVertices: number; + // numVerticalGlyphVertices: number; + // numIconVertices: number; + // numVerticalIconVertices: number; + // useRuntimeCollisionCircles: number; + // crossTileID: number; + // textBoxScale: number; + // textOffset0: number; + // textOffset1: number; + // collisionCircleDiameter: number; get anchorX() { return this._structArray.int16[this._pos2 + 0]; } get anchorY() { return this._structArray.int16[this._pos2 + 1]; } get rightJustifiedTextSymbolIndex() { return this._structArray.int16[this._pos2 + 2]; } @@ -1059,9 +1060,9 @@ register('SymbolLineVertexArray', SymbolLineVertexArray); class FeatureIndexStruct extends Struct { _structArray: FeatureIndexArray; - featureIndex: number; - sourceLayerIndex: number; - bucketIndex: number; + // featureIndex: number; + // sourceLayerIndex: number; + // bucketIndex: number; get featureIndex() { return this._structArray.uint32[this._pos4 + 0]; } get sourceLayerIndex() { return this._structArray.uint16[this._pos2 + 2]; } get bucketIndex() { return this._structArray.uint16[this._pos2 + 3]; } diff --git a/src/data/bucket.ts b/src/data/bucket.ts index 910e69de3a..4785aa27f9 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -6,6 +6,7 @@ import type Context from '../gl/context'; import type {FeatureStates} from '../source/source_state'; import type {ImagePosition} from '../render/image_atlas'; import type {CanonicalTileID} from '../source/tile_id'; +import Point from '@mapbox/point-geometry'; export type BucketParameters = { index: number, diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index c711d3a1d7..ecec3a15c1 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -29,6 +29,7 @@ import type VertexBuffer from '../../gl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; +import { PossiblyEvaluatedPropertyValue } from '../../style/properties'; class FillBucket implements Bucket { index: number; @@ -75,7 +76,7 @@ class FillBucket implements Bucket { populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID) { this.hasPattern = hasPattern('fill', this.layers, options); - const fillSortKey = this.layers[0].layout.get('fill-sort-key'); + const fillSortKey = this.layers[0].layout.get('fill-sort-key') as PossiblyEvaluatedPropertyValue; const sortFeaturesByKey = !fillSortKey.isConstant(); const bucketFeatures = []; diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index 0e38ff50cc..b516018edc 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -145,7 +145,7 @@ class LineBucket implements Bucket { populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID) { this.hasPattern = hasPattern('line', this.layers, options); - const lineSortKey = this.layers[0].layout.get('line-sort-key'); + const lineSortKey = this.layers[0].layout.get('line-sort-key') as any; const sortFeaturesByKey = !lineSortKey.isConstant(); const bucketFeatures = []; diff --git a/src/data/bucket/pattern_bucket_features.ts b/src/data/bucket/pattern_bucket_features.ts index 38ed28dafe..5d15084021 100644 --- a/src/data/bucket/pattern_bucket_features.ts +++ b/src/data/bucket/pattern_bucket_features.ts @@ -14,7 +14,7 @@ export function hasPattern(type: string, layers: PatternStyleLayers, options: Po let hasPattern = false; for (const layer of layers) { - const patternProperty = layer.paint.get(`${type}-pattern`); + const patternProperty = layer.paint.get(`${type}-pattern`) as any; if (!patternProperty.isConstant()) { hasPattern = true; } diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index d9c52d01ee..824e6729d3 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -56,6 +56,7 @@ import type {SymbolQuad} from '../../symbol/quads'; import type {SizeData} from '../../symbol/symbol_size'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; +import type {PossiblyEvaluatedPropertyValue} from '../../style/properties'; export type SingleCollisionBox = { x1: number, @@ -372,7 +373,7 @@ class SymbolBucket implements Bucket { this.iconSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['icon-size']); const layout = this.layers[0].layout; - const sortKey = layout.get('symbol-sort-key'); + const sortKey = layout.get('symbol-sort-key') as PossiblyEvaluatedPropertyValue; const zOrder = layout.get('symbol-z-order'); this.canOverlap = layout.get('text-allow-overlap') || @@ -419,9 +420,9 @@ class SymbolBucket implements Bucket { const layer = this.layers[0]; const layout = layer.layout; - const textFont = layout.get('text-font'); - const textField = layout.get('text-field'); - const iconImage = layout.get('icon-image'); + const textFont = layout.get('text-font') as PossiblyEvaluatedPropertyValue; + const textField = layout.get('text-field') as PossiblyEvaluatedPropertyValue; + const iconImage = layout.get('icon-image') as PossiblyEvaluatedPropertyValue; const hasText = (textField.value.kind !== 'constant' || (textField.value.value instanceof Formatted && !textField.value.value.isEmpty()) || @@ -432,7 +433,7 @@ class SymbolBucket implements Bucket { // the only way to distinguish between null returned from a coalesce statement with no valid images // and null returned because icon-image wasn't defined is to check whether or not iconImage.parameters is an empty object const hasIcon = iconImage.value.kind !== 'constant' || !!iconImage.value.value || Object.keys(iconImage.parameters).length > 0; - const symbolSortKey = layout.get('symbol-sort-key'); + const symbolSortKey = layout.get('symbol-sort-key') as PossiblyEvaluatedPropertyValue; this.features = []; diff --git a/src/types/window.ts b/src/types/window.ts index 00ef2f131a..3eb6410fa5 100644 --- a/src/types/window.ts +++ b/src/types/window.ts @@ -19,6 +19,7 @@ export interface Window extends EventTarget, IDBEnvironment { readonly origin: string; name: string; readonly navigator: Navigator; + readonly InstallTrigger: any; offscreenBuffering: string | boolean; onabort: (ev: UIEvent) => boolean | undefined | null; onafterprint: (ev: Event) => boolean | undefined | null; diff --git a/src/ui/camera.ts b/src/ui/camera.ts index 350b48ce5a..dacb1ff5b9 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -52,7 +52,9 @@ export type CameraOptions = { bearing?: number, pitch?: number, around?: LngLatLike, - padding?: PaddingOptions + padding?: PaddingOptions, + maxZoom?: number, + offset?: PointLike }; /** @@ -609,9 +611,9 @@ class Camera extends Evented { * }); * @see [Fit a map to a bounding box](https://maplibre.org/maplibre-gl-js-docs/example/fitbounds/) */ - fitBounds(bounds: LngLatBoundsLike, options?: AnimationOptions & CameraOptions, eventData?: any) { + fitBounds(bounds: LngLatBoundsLike, options?: AnimationOptions & CameraOptions & { linear: boolean }, eventData?: any) { return this._fitInternal( - this.cameraForBounds(bounds, options), + this.cameraForBounds(bounds, options) as AnimationOptions & CameraOptions, options, eventData); } @@ -645,18 +647,18 @@ class Camera extends Evented { * }); * @see Used by {@link BoxZoomHandler} */ - fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: AnimationOptions & CameraOptions, eventData?: any) { + fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: AnimationOptions & CameraOptions & { linear: boolean }, eventData?: any) { return this._fitInternal( this._cameraForBoxAndBearing( this.transform.pointLocation(Point.convert(p0)), this.transform.pointLocation(Point.convert(p1)), bearing, - options), + options) as CameraOptions & AnimationOptions, options, eventData); } - _fitInternal(calculatedOptions?: CameraOptions & AnimationOptions, options?: AnimationOptions & CameraOptions, eventData?: any) { + _fitInternal(calculatedOptions?: CameraOptions & AnimationOptions, options?: AnimationOptions & CameraOptions & { linear: boolean }, eventData?: any) { // cameraForBounds warns + returns undefined if unable to fit: if (!calculatedOptions) return this; @@ -783,7 +785,8 @@ class Camera extends Evented { * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js-docs/example/game-controls/) */ easeTo(options: CameraOptions & AnimationOptions & { - easeId?: string + easeId?: string, + noMoveStart?: boolean }, eventData?: any) { this._stop(false, options.easeId); @@ -871,7 +874,7 @@ class Camera extends Evented { }, (interruptingEaseId?: string) => { this._afterEase(eventData, interruptingEaseId); - }, options); + }, options as any); return this; } @@ -1245,7 +1248,7 @@ class Camera extends Evented { // - another ___start event can't be fired before a ___end event has been fired for the previous one function addAssertions(camera: Camera) { //eslint-disable-line Debug.run(() => { - const inProgress = {}; + const inProgress = {} as any; ['drag', 'zoom', 'rotate', 'pitch', 'move'].forEach(name => { inProgress[name] = false; diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index 368c742f29..69559f50ea 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -159,7 +159,7 @@ class GeolocateControl extends Evented { * @returns {boolean} Returns `true` if position is outside the map's maxbounds, otherwise returns `false`. * @private */ - _isOutOfMapMaxBounds(position: Position) { + _isOutOfMapMaxBounds(position: GeolocationPosition) { const bounds = this._map.getMaxBounds(); const coordinates = position.coords; @@ -205,7 +205,7 @@ class GeolocateControl extends Evented { * @param {Position} position the Geolocation API Position * @private */ - _onSuccess(position: Position) { + _onSuccess(position: GeolocationPosition) { if (!this._map) { // control has since been removed return; @@ -273,7 +273,7 @@ class GeolocateControl extends Evented { * @param {Position} position the Geolocation API Position * @private */ - _updateCamera(position: Position) { + _updateCamera(position: GeolocationPosition) { const center = new LngLat(position.coords.longitude, position.coords.latitude); const radius = position.coords.accuracy; const bearing = this._map.getBearing(); @@ -290,7 +290,7 @@ class GeolocateControl extends Evented { * @param {Position} [position] the Geolocation API Position * @private */ - _updateMarker(position?: Position | null) { + _updateMarker(position?: GeolocationPosition | null) { if (position) { const center = new LngLat(position.coords.longitude, position.coords.latitude); this._accuracyCircleMarker.setLngLat(center).addTo(this._map); @@ -322,7 +322,7 @@ class GeolocateControl extends Evented { } } - _onError(error: PositionError) { + _onError(error: GeolocationPositionError) { if (!this._map) { // control has since been removed return; @@ -372,8 +372,8 @@ class GeolocateControl extends Evented { _setupUI(supported: boolean) { this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault()); - this._geolocateButton = DOM.create('button', `maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate`, this._container); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._geolocateButton).setAttribute('aria-hidden', true); + this._geolocateButton = DOM.create('button', `maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate`, this._container) as HTMLButtonElement; + DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._geolocateButton).setAttribute('aria-hidden', "true"); this._geolocateButton.type = 'button'; if (supported === false) { @@ -497,17 +497,18 @@ class GeolocateControl extends Evented { case 'ACTIVE_LOCK': this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-active', 'mapboxgl-ctrl-geolocate-active'); break; - case 'ACTIVE_ERROR': - this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting'); - this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error'); - break; - case 'BACKGROUND': - this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background'); - break; - case 'BACKGROUND_ERROR': - this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting'); - this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error'); - break; + // HM TODO: this states can't be reached according to above switch case? and typescript compilation as well... + //case 'ACTIVE_ERROR': + // this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting'); + // this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-active-error', 'mapboxgl-ctrl-geolocate-active-error'); + // break; + //case 'BACKGROUND': + // this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-background', 'mapboxgl-ctrl-geolocate-background'); + // break; + //case 'BACKGROUND_ERROR': + // this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-waiting', 'mapboxgl-ctrl-geolocate-waiting'); + // this._geolocateButton.classList.add('maplibregl-ctrl-geolocate-background-error', 'mapboxgl-ctrl-geolocate-background-error'); + // break; case 'OFF': break; default: diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index 670974eaa5..d86884b81c 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -1,3 +1,5 @@ +import Point from '@mapbox/point-geometry'; + import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; @@ -53,9 +55,9 @@ class NavigationControl { '_updateZoomButtons' ], this); this._zoomInButton = this._createButton('maplibregl-ctrl-zoom-in mapboxgl-ctrl-zoom-in', (e) => this._map.zoomIn({}, {originalEvent: e})); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomInButton).setAttribute('aria-hidden', true); + DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomInButton).setAttribute('aria-hidden', 'true'); this._zoomOutButton = this._createButton('maplibregl-ctrl-zoom-out mapboxgl-ctrl-zoom-out', (e) => this._map.zoomOut({}, {originalEvent: e})); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomOutButton).setAttribute('aria-hidden', true); + DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomOutButton).setAttribute('aria-hidden', 'true'); } if (this.options.showCompass) { bindAll([ @@ -69,7 +71,7 @@ class NavigationControl { } }); this._compassIcon = DOM.create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._compass); - this._compassIcon.setAttribute('aria-hidden', true); + this._compassIcon.setAttribute('aria-hidden', 'true'); } } @@ -128,8 +130,8 @@ class NavigationControl { delete this._map; } - _createButton(className: string, fn: () => unknown) { - const a = DOM.create('button', className, this._container); + _createButton(className: string, fn: (e?: any) => unknown) { + const a = DOM.create('button', className, this._container) as HTMLButtonElement; a.type = 'button'; a.addEventListener('click', fn); return a; @@ -175,10 +177,10 @@ class MouseRotateWrapper { move(e: MouseEvent, point: Point) { const map = this.map; - const r = this.mouseRotate.mousemoveWindow(e, point); + const r = this.mouseRotate.mousemoveWindow(e, point) as any; if (r && r.bearingDelta) map.setBearing(map.getBearing() + r.bearingDelta); if (this.mousePitch) { - const p = this.mousePitch.mousemoveWindow(e, point); + const p = this.mousePitch.mousemoveWindow(e, point) as any; if (p && p.pitchDelta) map.setPitch(map.getPitch() + p.pitchDelta); } } diff --git a/src/ui/handler_inertia.ts b/src/ui/handler_inertia.ts index 4352771282..2218e5a6f6 100644 --- a/src/ui/handler_inertia.ts +++ b/src/ui/handler_inertia.ts @@ -95,7 +95,7 @@ export default class HandlerInertia { const lastEntry = this._inertiaBuffer[this._inertiaBuffer.length - 1]; const duration = (lastEntry.time - this._inertiaBuffer[0].time); - const easeOptions = {}; + const easeOptions = {} as any; if (deltas.pan.mag()) { const result = calculateEasing(deltas.pan.mag(), duration, extend({}, defaultPanInertiaOptions, panInertiaOptions || {})); diff --git a/src/ui/map.ts b/src/ui/map.ts index be0175af46..96e10ac252 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -41,7 +41,7 @@ import type ScrollZoomHandler from './handler/scroll_zoom'; import type BoxZoomHandler from './handler/box_zoom'; import type {TouchPitchHandler} from './handler/touch_zoom_rotate'; import type DragRotateHandler from './handler/shim/drag_rotate'; -import type DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan'; +import DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan'; import type KeyboardHandler from './handler/keyboard'; import type DoubleClickZoomHandler from './handler/shim/dblclick_zoom'; @@ -56,6 +56,8 @@ import type { LightSpecification, SourceSpecification } from '../style-spec/types'; +import { Listener } from 'selenium-webdriver'; +import { Callback } from '../types/callback'; type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; @@ -1046,7 +1048,8 @@ class Map extends Camera { * @see [Create a hover effect](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Create a draggable marker](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) */ - on(type: MapEvent, layerId: any, listener: any) { + on(type: MapEvent, listener: Listener): this; + on(type: MapEvent, layerId: any, listener?: Listener): this { if (listener === undefined) { return super.on(type, layerId); } @@ -1093,8 +1096,8 @@ class Map extends Camera { * @param {Function} listener The function to be called when the event is fired. * @returns {Map} `this` */ - - once(type: MapEvent, layerId: any, listener: any) { + once(type: MapEvent, listener: Listener): this; + once(type: MapEvent, layerId: any, listener?: Listener): this { if (listener === undefined) { return super.once(type, layerId); @@ -1129,7 +1132,8 @@ class Map extends Camera { * @param {Function} listener The function previously installed as a listener. * @returns {Map} `this` */ - off(type: MapEvent, layerId: any, listener: any) { + off(type: MapEvent, listener: Listener): this; + off(type: MapEvent, layerId: any, listener?: Listener): this { if (listener === undefined) { return super.off(type, layerId); } @@ -1553,9 +1557,9 @@ class Map extends Camera { * @private * @param {string} name The name of the source type; source definition objects use this name in the `{type: ...}` field. * @param {Function} SourceType A {@link Source} constructor. - * @param {Function} callback Called when the source type is ready or with an error argument if there is an error. + * @param {Callback} callback Called when the source type is ready or with an error argument if there is an error. */ - addSourceType(name: string, SourceType: any, callback: Function) { + addSourceType(name: string, SourceType: any, callback: Callback) { this._lazyInitEmptyStyle(); return this.style.addSourceType(name, SourceType, callback); } @@ -1660,14 +1664,14 @@ class Map extends Camera { const version = 0; if (image instanceof HTMLImageElement || (ImageBitmap && image instanceof ImageBitmap)) { - const {width, height, data} = browser.getImageData(image); + const {width, height, data} = browser.getImageData(image as HTMLImageElement | ImageBitmap); this.style.addImage(id, {data: new RGBAImage({width, height}, data), pixelRatio, stretchX, stretchY, content, sdf, version}); } else if (image.width === undefined || image.height === undefined) { return this.fire(new ErrorEvent(new Error( 'Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' + 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`'))); } else { - const {width, height, data} = image; + const {width, height, data} = image as ImageData; const userImage = (image as any as StyleImageInterface); this.style.addImage(id, { @@ -1717,7 +1721,9 @@ class Map extends Camera { return this.fire(new ErrorEvent(new Error( 'The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.'))); } - const imageData = (image instanceof HTMLImageElement || (ImageBitmap && image instanceof ImageBitmap)) ? browser.getImageData(image) : image; + const imageData = (image instanceof HTMLImageElement || (ImageBitmap && image instanceof ImageBitmap)) + ? browser.getImageData(image as HTMLImageElement | ImageBitmap) + : image as ImageData; const {width, height, data} = imageData; if (width === undefined || height === undefined) { @@ -1780,7 +1786,7 @@ class Map extends Camera { * domains must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). * * @param {string} url The URL of the image file. Image file must be in png, webp, or jpg format. - * @param {Function} callback Expecting `callback(error, data)`. Called when the image has loaded or with an error argument if there is an error. + * @param {Callback} callback Expecting `callback(error, data)`. Called when the image has loaded or with an error argument if there is an error. * * @example * // Load an image from an external URL. @@ -1792,7 +1798,7 @@ class Map extends Camera { * * @see [Add an icon to the map](https://maplibre.org/maplibre-gl-js-docs/example/add-image/) */ - loadImage(url: string, callback: Function) { + loadImage(url: string, callback: Callback) { getImage(this._requestManager.transformRequest(url, ResourceType.Image), callback); } diff --git a/src/util/ajax.ts b/src/util/ajax.ts index 8ced6a85c8..c9ec90f5a3 100644 --- a/src/util/ajax.ts +++ b/src/util/ajax.ts @@ -10,6 +10,17 @@ import offscreenCanvasSupported from './offscreen_canvas_supported'; import type {Callback} from '../types/callback'; import type {Cancelable} from '../types/cancelable'; +export interface IResourceType { + Unknown: keyof this; + Style: keyof this; + Source: keyof this; + Tile: keyof this; + Glyphs: keyof this; + SpriteImage: keyof this; + SpriteJSON: keyof this; + Image: keyof this; +} + /** * The type of a resource. * @private @@ -25,7 +36,7 @@ const ResourceType = { SpriteImage: 'SpriteImage', SpriteJSON: 'SpriteJSON', Image: 'Image' -}; +} as IResourceType; export {ResourceType}; if (typeof Object.freeze == 'function') { @@ -99,7 +110,7 @@ class AJAXError extends Error { // and we will set an empty referrer. Otherwise, we're using the document's URL. /* global self */ export const getReferrer = isWorker() ? - () => self.worker && self.worker.referrer : + () => (self as any).worker && (self as any).worker.referrer : () => (window.location.protocol === 'blob:' ? window.parent : window).location.href; // Determines whether a URL is a file:// URL. This is obviously the case if it begins @@ -126,7 +137,7 @@ function makeFetchRequest(requestParameters: RequestParameters, callback: Respon request.headers.set('Accept', 'application/json'); } - const validateOrFetch = (err, cachedResponse, responseIsFresh) => { + const validateOrFetch = (err, cachedResponse?, responseIsFresh?) => { if (aborted) return; if (err) { @@ -148,7 +159,7 @@ function makeFetchRequest(requestParameters: RequestParameters, callback: Respon const requestTime = Date.now(); - window.fetch(request).then(response => { + fetch(request).then(response => { if (response.ok) { const cacheableResponse = cacheIgnoringSearch ? response.clone() : null; return finishRequest(response, cacheableResponse, requestTime); @@ -165,7 +176,7 @@ function makeFetchRequest(requestParameters: RequestParameters, callback: Respon }); }; - const finishRequest = (response, cacheableResponse, requestTime) => { + const finishRequest = (response, cacheableResponse?, requestTime?) => { ( requestParameters.type === 'arrayBuffer' ? response.arrayBuffer() : requestParameters.type === 'json' ? response.json() : @@ -246,8 +257,8 @@ export const makeRequest = function(requestParameters: RequestParameters, callba // - Requests for resources with the file:// URI scheme don't work with the Fetch API either. In // this case we unconditionally use XHR on the current thread since referrers don't matter. if (/:\/\//.test(requestParameters.url) && !(/^https?:|^file:/.test(requestParameters.url))) { - if (isWorker() && self.worker && self.worker.actor) { - return self.worker.actor.send('getResource', requestParameters, callback); + if (isWorker() && (self as any).worker && (self as any).worker.actor) { + return (self as any).worker.actor.send('getResource', requestParameters, callback); } if (!isWorker()) { const protocol = requestParameters.url.substring(0, requestParameters.url.indexOf('://')); @@ -256,12 +267,12 @@ export const makeRequest = function(requestParameters: RequestParameters, callba } } if (!isFileURL(requestParameters.url)) { - if (window.fetch && window.Request && window.AbortController && Object.prototype.hasOwnProperty.call(window.Request.prototype, 'signal')) { + if ((window as any).fetch && window.Request && window.AbortController && Object.prototype.hasOwnProperty.call(window.Request.prototype, 'signal')) { return makeFetchRequest(requestParameters, callback); } - if (isWorker() && self.worker && self.worker.actor) { + if (isWorker() && (self as any).worker && (self as any).worker.actor) { const queueOnMainThread = true; - return self.worker.actor.send('getResource', requestParameters, callback, undefined, queueOnMainThread); + return (self as any).worker.actor.send('getResource', requestParameters, callback, undefined, queueOnMainThread); } } return makeXMLHttpRequest(requestParameters, callback); @@ -311,7 +322,8 @@ function arrayBufferToImage(data: ArrayBuffer, callback: (err?: Error | null, im function arrayBufferToImageBitmap(data: ArrayBuffer, callback: (err?: Error | null, image?: ImageBitmap | null) => void) { const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'}); - window.createImageBitmap(blob).then((imgBitmap) => { + // HM TODO: check that this works - removing window shouldn't affect this in theory + createImageBitmap(blob).then((imgBitmap) => { callback(null, imgBitmap); }).catch((e) => { callback(new Error(`Could not load image because of ${e.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)); diff --git a/src/util/dom.ts b/src/util/dom.ts index 3965cdfe7b..150f6c48ab 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -3,9 +3,33 @@ import Point from '@mapbox/point-geometry'; import window from './window'; import assert from 'assert'; -const DOM = {}; +interface DOMInterface { + create(tagName: string, className: string | undefined | null, container?: HTMLElement): HTMLElement; + createNS(namespaceURI: string, tagName: string); + disableDrag(); + enableDrag(); + setTransform(el: HTMLElement, value: string); + addEventListener(target: any, type: any, callback: any, options?: { + passive?: boolean, + capture?: boolean + }); + removeEventListener(target: any, type: any, callback: any, options?: { + passive?: boolean, + capture?: boolean + }); + suppressClick(); + mousePos(el: HTMLElement, e: MouseEvent | Touch); + touchPos(el: HTMLElement, touches: TouchList); + mouseButton(e: MouseEvent); + remove(node: HTMLElement); +} + + +const DOM = {} as DOMInterface; export default DOM; +// HM TODO: make this a static helper? + DOM.create = function (tagName: string, className: string | undefined | null, container?: HTMLElement) { const el = window.document.createElement(tagName); if (className !== undefined) el.className = className; @@ -65,8 +89,8 @@ try { passiveSupported = true; } }); - window.addEventListener("test", options, options); - window.removeEventListener("test", options, options); + window.addEventListener("test", options as any, options); + window.removeEventListener("test", options as any, options); } catch (err) { passiveSupported = false; } @@ -94,7 +118,7 @@ DOM.removeEventListener = function(target: any, type: any, callback: any, option }; // Suppress the next click, but only if it's immediate. -const suppressClick: MouseEventListener = function (e) { +const suppressClick: EventListener = function (e) { e.preventDefault(); e.stopPropagation(); window.removeEventListener('click', suppressClick, true); @@ -107,7 +131,7 @@ DOM.suppressClick = function() { }, 0); }; -DOM.mousePos = function (el: HTMLElement, e: MouseEvent | window.TouchEvent | Touch) { +DOM.mousePos = function (el: HTMLElement, e: MouseEvent | Touch) { const rect = el.getBoundingClientRect(); return new Point( e.clientX - rect.left - el.clientLeft, diff --git a/src/util/evented.ts b/src/util/evented.ts index 641d45d332..f3b1fb944f 100644 --- a/src/util/evented.ts +++ b/src/util/evented.ts @@ -64,7 +64,7 @@ export class Evented { * extended with `target` and `type` properties. * @returns {Object} `this` */ - on(type: any, listener: Listener): this { + on(type: string, listener: Listener): this { this._listeners = this._listeners || {}; _addEventListener(type, listener, this._listeners); @@ -78,7 +78,7 @@ export class Evented { * @param {Function} listener The listener function to remove. * @returns {Object} `this` */ - off(type: any, listener: Listener) { + off(type: string, listener: Listener) { _removeEventListener(type, listener, this._listeners); _removeEventListener(type, listener, this._oneTimeListeners); @@ -94,7 +94,7 @@ export class Evented { * @param {Function} listener The function to be called when the event is fired the first time. * @returns {Object} `this` */ - once(type: any, listener: Listener) { + once(type: string, listener: Listener) { this._oneTimeListeners = this._oneTimeListeners || {}; _addEventListener(type, listener, this._oneTimeListeners); diff --git a/src/util/mapbox.ts b/src/util/mapbox.ts index b6e6f555f0..1660fb34a1 100644 --- a/src/util/mapbox.ts +++ b/src/util/mapbox.ts @@ -19,13 +19,13 @@ import webpSupported from './webp_supported'; import {createSkuToken, SKU_ID} from './sku_token'; import {version as sdkVersion} from '../../package.json'; import {uuid, validateUuid, storageAvailable, b64DecodeUnicode, b64EncodeUnicode, warnOnce, extend} from './util'; -import {postData, ResourceType} from './ajax'; +import {postData, IResourceType} from './ajax'; import type {RequestParameters} from './ajax'; import type {Cancelable} from '../types/cancelable'; import type {TileJSON} from '../types/tilejson'; -type ResourceTypeEnum = keyof typeof ResourceType; +type ResourceTypeEnum = keyof IResourceType; export type RequestTransformFunction = (url: string, resourceType?: ResourceTypeEnum) => RequestParameters; type UrlObject = { diff --git a/src/util/util.ts b/src/util/util.ts index 7dad70f0c9..953cab76b9 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -213,10 +213,10 @@ export function uniqueId(): number { * @private */ export function uuid(): string { - function b(a) { - return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : - //$FlowFixMe: Flow doesn't like the implied array literal conversion here - ([1e7] + -[1e3] + -4e3 + -8e3 + -1e11).replace(/[018]/g, b); + function b(a?): string { + return a + ? (a ^ Math.random() * 16 >> a / 4).toString(16) + : "10000000-1000-4000-80000000-100000000000".replace(/[018]/g, b); } return b(); } @@ -324,7 +324,7 @@ export {deepEqual}; */ export function clone(input: T): T { if (Array.isArray(input)) { - return input.map(clone); + return input.map(clone) as any as T; } else if (typeof input === 'object' && input) { return mapObject(input, clone) as any as T; } else { @@ -522,7 +522,7 @@ export function storageAvailable(type: string): boolean { // The following methods are from https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem //Unicode compliant base64 encoder for strings export function b64EncodeUnicode(str: string) { - return window.btoa( + return btoa( encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => { return String.fromCharCode(Number('0x' + p1)); //eslint-disable-line @@ -533,7 +533,7 @@ export function b64EncodeUnicode(str: string) { // Unicode compliant decoder for base64-encoded strings export function b64DecodeUnicode(str: string) { - return decodeURIComponent(window.atob(str).split('').map((c) => { + return decodeURIComponent(atob(str).split('').map((c) => { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); //eslint-disable-line }).join('')); } diff --git a/src/util/window.ts b/src/util/window.ts index a6b6b9187b..5d561a67c2 100644 --- a/src/util/window.ts +++ b/src/util/window.ts @@ -17,7 +17,7 @@ const {window: _window} = new jsdom.JSDOM('', { restore(); -export default _window; +export default _window as any as Window; function restore(): Window { // Remove previous window from exported object @@ -33,7 +33,7 @@ function restore(): Window { const {window} = new jsdom.JSDOM('', { // Send jsdom console output to the node console object. virtualConsole: new jsdom.VirtualConsole().sendTo(console) - }); + }) as any; // Delete local and session storage from JSDOM and stub them out with a warning log // Accessing these properties during extend() produces an error in Node environments @@ -75,8 +75,8 @@ function restore(): Window { window.URL.revokeObjectURL = function () {}; window.fakeWorkerPresence = function() { - global.WorkerGlobalScope = function() {}; - global.self = new global.WorkerGlobalScope(); + global.WorkerGlobalScope = function() {} as any; + global.self = new global.WorkerGlobalScope() as any; }; window.clearFakeWorkerPresence = function() { global.WorkerGlobalScope = undefined; From 1116842e6ab58c9e086cc2e3cf062c75646fb7e1 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 10:41:45 +0200 Subject: [PATCH 017/142] Explicitly convert matrix-gl types --- src/util/primitives.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/util/primitives.ts b/src/util/primitives.ts index d444cc8f25..f4498f03f3 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -10,7 +10,7 @@ class Frustum { this.planes = planes_; } - static fromInvProjectionMatrix(invProj: Float64Array, worldSize: number, zoom: number): Frustum { + static fromInvProjectionMatrix(invProj: Float32Array, worldSize: number, zoom: number): Frustum { const clipSpaceCorners = [ [-1, 1, -1, 1], [ 1, 1, -1, 1], @@ -26,8 +26,8 @@ class Frustum { // Transform frustum corner points from clip space to tile space const frustumCoords = clipSpaceCorners - .map(v => vec4.transformMat4([], v, invProj)) - .map(v => vec4.scale([], v, 1.0 / v[3] / worldSize * scale)); + .map(v => vec4.transformMat4(new Float32Array, v as vec4, invProj)) + .map(v => vec4.scale(new Float32Array, v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ [0, 1, 2], // near @@ -39,14 +39,14 @@ class Frustum { ]; const frustumPlanes = frustumPlanePointIndices.map((p: Array) => { - const a = vec3.sub([], frustumCoords[p[0]], frustumCoords[p[1]]); - const b = vec3.sub([], frustumCoords[p[2]], frustumCoords[p[1]]); - const n = vec3.normalize([], vec3.cross([], a, b)); - const d = -vec3.dot(n, frustumCoords[p[1]]); - return n.concat(d); + const a = vec3.sub(new Float32Array, frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); + const b = vec3.sub(new Float32Array, frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); + const n = vec3.normalize(new Float32Array, vec3.cross(new Float32Array, a, b)); + const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); + return (n as number[]).concat(d); }); - return new Frustum(frustumCoords, frustumPlanes); + return new Frustum(frustumCoords as number[][], frustumPlanes); } } @@ -58,7 +58,7 @@ class Aabb { constructor(min_: vec3, max_: vec3) { this.min = min_; this.max = max_; - this.center = vec3.scale([], vec3.add([], this.min, this.max), 0.5); + this.center = vec3.scale(new Float32Array, vec3.add(new Float32Array, this.min, this.max), 0.5); } quadrant(index: number): Aabb { @@ -106,7 +106,7 @@ class Aabb { let pointsInside = 0; for (let i = 0; i < aabbPoints.length; i++) { - pointsInside += vec4.dot(plane, aabbPoints[i]) >= 0; + pointsInside += Number(vec4.dot(plane as vec4, aabbPoints[i] as vec4) >= 0); } if (pointsInside === 0) From c26511e9287a20ed2adfaf32dbd5ccfe10508b5e Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 10:42:57 +0200 Subject: [PATCH 018/142] Automatically fix lint errors --- src/data/bucket/fill_bucket.ts | 2 +- src/ui/map.ts | 10 +++++----- src/util/dom.ts | 1 - src/util/primitives.ts | 12 ++++++------ src/util/util.ts | 6 +++--- 5 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index ecec3a15c1..517cfb32ea 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -29,7 +29,7 @@ import type VertexBuffer from '../../gl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; -import { PossiblyEvaluatedPropertyValue } from '../../style/properties'; +import {PossiblyEvaluatedPropertyValue} from '../../style/properties'; class FillBucket implements Bucket { index: number; diff --git a/src/ui/map.ts b/src/ui/map.ts index 96e10ac252..c1dd5e1c37 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -56,8 +56,8 @@ import type { LightSpecification, SourceSpecification } from '../style-spec/types'; -import { Listener } from 'selenium-webdriver'; -import { Callback } from '../types/callback'; +import {Listener} from 'selenium-webdriver'; +import {Callback} from '../types/callback'; type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; @@ -1721,9 +1721,9 @@ class Map extends Camera { return this.fire(new ErrorEvent(new Error( 'The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.'))); } - const imageData = (image instanceof HTMLImageElement || (ImageBitmap && image instanceof ImageBitmap)) - ? browser.getImageData(image as HTMLImageElement | ImageBitmap) - : image as ImageData; + const imageData = (image instanceof HTMLImageElement || (ImageBitmap && image instanceof ImageBitmap)) ? + browser.getImageData(image as HTMLImageElement | ImageBitmap) : + image as ImageData; const {width, height, data} = imageData; if (width === undefined || height === undefined) { diff --git a/src/util/dom.ts b/src/util/dom.ts index 150f6c48ab..24d0c4d9ba 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -24,7 +24,6 @@ interface DOMInterface { remove(node: HTMLElement); } - const DOM = {} as DOMInterface; export default DOM; diff --git a/src/util/primitives.ts b/src/util/primitives.ts index f4498f03f3..a83fabedf4 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -26,8 +26,8 @@ class Frustum { // Transform frustum corner points from clip space to tile space const frustumCoords = clipSpaceCorners - .map(v => vec4.transformMat4(new Float32Array, v as vec4, invProj)) - .map(v => vec4.scale(new Float32Array, v, 1.0 / v[3] / worldSize * scale)); + .map(v => vec4.transformMat4(new Float32Array(), v as vec4, invProj)) + .map(v => vec4.scale(new Float32Array(), v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ [0, 1, 2], // near @@ -39,9 +39,9 @@ class Frustum { ]; const frustumPlanes = frustumPlanePointIndices.map((p: Array) => { - const a = vec3.sub(new Float32Array, frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); - const b = vec3.sub(new Float32Array, frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); - const n = vec3.normalize(new Float32Array, vec3.cross(new Float32Array, a, b)); + const a = vec3.sub(new Float32Array(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); + const b = vec3.sub(new Float32Array(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); + const n = vec3.normalize(new Float32Array(), vec3.cross(new Float32Array(), a, b)); const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); return (n as number[]).concat(d); }); @@ -58,7 +58,7 @@ class Aabb { constructor(min_: vec3, max_: vec3) { this.min = min_; this.max = max_; - this.center = vec3.scale(new Float32Array, vec3.add(new Float32Array, this.min, this.max), 0.5); + this.center = vec3.scale(new Float32Array(), vec3.add(new Float32Array(), this.min, this.max), 0.5); } quadrant(index: number): Aabb { diff --git a/src/util/util.ts b/src/util/util.ts index 953cab76b9..37b56b8077 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -214,9 +214,9 @@ export function uniqueId(): number { */ export function uuid(): string { function b(a?): string { - return a - ? (a ^ Math.random() * 16 >> a / 4).toString(16) - : "10000000-1000-4000-80000000-100000000000".replace(/[018]/g, b); + return a ? + (a ^ Math.random() * 16 >> a / 4).toString(16) : + "10000000-1000-4000-80000000-100000000000".replace(/[018]/g, b); } return b(); } From 42ddfe292607e7555d12caa6b5947e17212c02e4 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 11:14:48 +0200 Subject: [PATCH 019/142] Avoid Function as callback type --- src/util/dispatcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/dispatcher.ts b/src/util/dispatcher.ts index bb1dd2556f..b6ef1e4493 100644 --- a/src/util/dispatcher.ts +++ b/src/util/dispatcher.ts @@ -40,7 +40,7 @@ class Dispatcher { * Broadcast a message to all Workers. * @private */ - broadcast(type: string, data: unknown, cb?: Function) { + broadcast(type: string, data: unknown, cb?: (...args: any[]) => any) { assert(this.actors.length); cb = cb || function () {}; asyncAll(this.actors, (actor, done) => { From 5acb66cd4aa8c3bbb15c7b490ba7aca2d4806fec Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 11:35:30 +0200 Subject: [PATCH 020/142] Add missing MapOptions --- src/ui/map.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ui/map.ts b/src/ui/map.ts index c1dd5e1c37..e67b6c97a2 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -104,7 +104,15 @@ type MapOptions = { maxTileCacheSize?: number, transformRequest?: RequestTransformFunction, accessToken: string, - locale?: any + locale?: any, + fadeDuration?: number, + crossSourceCollisions?: boolean, + collectResourceTiming?: boolean, + clickTolerance?: number, + bounds?: LngLatBoundsLike, + fitBoundsOptions?: Object, + localIdeographFontFamily?: string, + style: Object | string }; const defaultMinZoom = -2; From 99e90b88f93aeefb7d65799710e917dadb434dee Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 11:49:19 +0200 Subject: [PATCH 021/142] Add pitchWithRotate to MapOptions and pass explicit options to HandlerManager and Camera --- src/ui/map.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ui/map.ts b/src/ui/map.ts index e67b6c97a2..62707bd0f6 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -112,7 +112,8 @@ type MapOptions = { bounds?: LngLatBoundsLike, fitBoundsOptions?: Object, localIdeographFontFamily?: string, - style: Object | string + style: Object | string, + pitchWithRotate?: boolean }; const defaultMinZoom = -2; @@ -392,7 +393,7 @@ class Map extends Camera { } const transform = new Transform(options.minZoom, options.maxZoom, options.minPitch, options.maxPitch, options.renderWorldCopies); - super(transform, options); + super(transform, {bearingSnap: options.bearingSnap}); this._interactive = options.interactive; this._maxTileCacheSize = options.maxTileCacheSize; @@ -453,7 +454,12 @@ class Map extends Camera { window.addEventListener('orientationchange', this._onWindowResize, false); } - this.handlers = new HandlerManager(this, options); + this.handlers = new HandlerManager(this, { + interactive: options.interactive, + pitchWithRotate: options.pitchWithRotate, + clickTolerance: options.clickTolerance, + bearingSnap: options.bearingSnap + }); const hashName = (typeof options.hash === 'string' && options.hash) || undefined; this._hash = options.hash && (new Hash(hashName)).addTo(this); From ff234e6ccaddb0bf67b2e17ab65fafcd69d23246 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 11:52:33 +0200 Subject: [PATCH 022/142] Set type of MapOptions.style to StyleSpecification of string --- src/ui/map.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/map.ts b/src/ui/map.ts index 62707bd0f6..94fc25695f 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -112,7 +112,7 @@ type MapOptions = { bounds?: LngLatBoundsLike, fitBoundsOptions?: Object, localIdeographFontFamily?: string, - style: Object | string, + style: StyleSpecification | string, pitchWithRotate?: boolean }; From dbbefae3ab8201d7e01ad94304a981b04e0c35ce Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 12:13:11 +0200 Subject: [PATCH 023/142] Make Camera an abstract class --- src/ui/camera.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/camera.ts b/src/ui/camera.ts index dacb1ff5b9..a9917a9ae2 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -104,7 +104,7 @@ export type AnimationOptions = { * @see [Fit a map to a bounding box](https://maplibre.org/maplibre-gl-js-docs/example/fitbounds/) */ -class Camera extends Evented { +abstract class Camera extends Evented { transform: Transform; _moving: boolean; _zooming: boolean; @@ -124,8 +124,8 @@ class Camera extends Evented { _onEaseEnd: (easeId?: string) => void; _easeFrameId: TaskID | undefined | null; - readonly _requestRenderFrame: (a: () => void) => TaskID; - readonly _cancelRenderFrame: (_: TaskID) => void; + abstract _requestRenderFrame(a: () => void): TaskID; + abstract _cancelRenderFrame(_: TaskID): void; constructor(transform: Transform, options: { bearingSnap: number From 9f653ee1e7bc3108ae62d367e250254920046e4e Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 12:38:14 +0200 Subject: [PATCH 024/142] Use Float32Array instead of Float64Array and cast types --- src/geo/transform.ts | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 6e9c0d240c..232ee65f21 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -5,7 +5,7 @@ import Point from '@mapbox/point-geometry'; import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; -import {vec4, mat4, mat2, vec2} from 'gl-matrix'; +import {vec4, mat4, mat2, vec2, vec3} from 'gl-matrix'; import {Aabb, Frustum} from "../util/primitives"; import EdgeInsets from './edge_insets'; @@ -27,16 +27,16 @@ class Transform { width: number; height: number; angle: number; - rotationMatrix: Float64Array; + rotationMatrix: Float32Array; zoomFraction: number; pixelsToGLUnits: [number, number]; cameraToCenterDistance: number; mercatorMatrix: Array; - projMatrix: Float64Array; - invProjMatrix: Float64Array; - alignedProjMatrix: Float64Array; - pixelMatrix: Float64Array; - pixelMatrixInverse: Float64Array; + projMatrix: Float32Array; + invProjMatrix: Float32Array; + alignedProjMatrix: Float32Array; + pixelMatrix: Float32Array; + pixelMatrixInverse: Float32Array; glCoordMatrix: Float32Array; labelPlaneMatrix: Float32Array; _fov: number; @@ -163,7 +163,7 @@ class Transform { this._calcMatrices(); // 2x2 matrix for rotating points - this.rotationMatrix = mat2.create(); + this.rotationMatrix = mat2.create() as Float32Array; mat2.rotate(this.rotationMatrix, this.rotationMatrix, this.angle); } @@ -540,7 +540,7 @@ class Transform { */ coordinatePoint(coord: MercatorCoordinate) { const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1]; - vec4.transformMat4(p, p, this.pixelMatrix); + vec4.transformMat4(p as vec4, p as vec4, this.pixelMatrix); return new Point(p[0] / p[3], p[1] / p[3]); } @@ -599,7 +599,7 @@ class Transform { const scale = this.worldSize / this.zoomScale(canonical.z); const unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap; - const posMatrix = mat4.identity(new Float64Array(16)); + const posMatrix = mat4.identity(new Float32Array(16)); mat4.translate(posMatrix, posMatrix, [unwrappedX * scale, canonical.y * scale, 0]); mat4.scale(posMatrix, posMatrix, [scale / EXTENT, scale / EXTENT, 1]); mat4.multiply(posMatrix, aligned ? this.alignedProjMatrix : this.projMatrix, posMatrix); @@ -713,7 +713,7 @@ class Transform { const nearZ = this.height / 50; // matrix for conversion from location to GL coordinates (-1 .. 1) - let m = new Float64Array(16); + let m = new Float32Array(16); mat4.perspective(m, this._fov, this.width / this.height, nearZ, farZ); //Apply center of perspective offset @@ -728,13 +728,13 @@ class Transform { // The mercatorMatrix can be used to transform points from mercator coordinates // ([0, 0] nw, [1, 1] se) to GL coordinates. - this.mercatorMatrix = mat4.scale([], m, [this.worldSize, this.worldSize, this.worldSize]); + this.mercatorMatrix = mat4.scale(new Float32Array(), m, [this.worldSize, this.worldSize, this.worldSize]) as number[]; // scale vertically to meters per pixel (inverse of ground resolution): mat4.scale(m, m, [1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize, 1]); this.projMatrix = m; - this.invProjMatrix = mat4.invert([], this.projMatrix); + this.invProjMatrix = mat4.invert(new Float32Array(), this.projMatrix) as Float32Array; // Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles. // We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional @@ -746,26 +746,26 @@ class Transform { angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle), dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift, dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift; - const alignedM = new Float64Array(m); + const alignedM = new Float32Array(m); mat4.translate(alignedM, alignedM, [ dx > 0.5 ? dx - 1 : dx, dy > 0.5 ? dy - 1 : dy, 0 ]); this.alignedProjMatrix = alignedM; - m = mat4.create(); + m = mat4.create() as Float32Array; mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]); mat4.translate(m, m, [1, -1, 0]); this.labelPlaneMatrix = m; - m = mat4.create(); + m = mat4.create() as Float32Array; mat4.scale(m, m, [1, -1, 1]); mat4.translate(m, m, [-1, -1, 0]); mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]); this.glCoordMatrix = m; // matrix for conversion from location to screen coordinates - this.pixelMatrix = mat4.multiply(new Float64Array(16), this.labelPlaneMatrix, this.projMatrix); + this.pixelMatrix = mat4.multiply(new Float32Array(16), this.labelPlaneMatrix, this.projMatrix) as Float32Array; // inverse matrix for conversion from screen coordinaes to location - m = mat4.invert(new Float64Array(16), this.pixelMatrix); + m = mat4.invert(new Float32Array(16), this.pixelMatrix) as Float32Array; if (!m) throw new Error("failed to invert matrix"); this.pixelMatrixInverse = m; @@ -779,7 +779,7 @@ class Transform { const coord = this.pointCoordinate(new Point(0, 0)); const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1]; - const topPoint = vec4.transformMat4(p, p, this.pixelMatrix); + const topPoint = vec4.transformMat4(p as vec4, p as vec4, this.pixelMatrix); return topPoint[3] / this.cameraToCenterDistance; } From d52ab7138f8266531ae88ecf6572ee61d208fe54 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:15:49 +0200 Subject: [PATCH 025/142] Make object dynamically extendable See https://stackoverflow.com/questions/12710905/how-do-i-dynamically-assign-properties-to-an-object-in-typescript --- src/ui/handler_manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index cf3c8bdf2a..fd25cc0134 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -403,7 +403,7 @@ class HandlerManager { } _applyChanges() { - const combined = {}; + const combined: {[k: string]: any} = {}; const combinedEventsInProgress = {}; const combinedDeactivatedHandlers = {}; From 9a62b516effd213469d7b05690e40e54b5cb1d0c Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:27:09 +0200 Subject: [PATCH 026/142] Make more objects dynamically extenable --- src/symbol/symbol_layout.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index aabd4b07c1..557de2c595 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -174,7 +174,7 @@ export function performSymbolLayout(bucket: SymbolBucket, const layout = bucket.layers[0].layout; const unevaluatedLayoutValues = bucket.layers[0]._unevaluatedLayout._values; - const sizes = {}; + const sizes: {[k: string]: any} = {}; if (bucket.textSizeData.kind === 'composite') { const {minZoom, maxZoom} = bucket.textSizeData; @@ -327,7 +327,7 @@ export function performSymbolLayout(bucket: SymbolBucket, const shapedText = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical; bucket.iconsInText = shapedText ? shapedText.iconsInText : false; if (shapedText || shapedIcon) { - addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, canonical); + addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes as Sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, canonical); } } @@ -608,7 +608,7 @@ function addSymbol(bucket: SymbolBucket, let numVerticalGlyphVertices = 0; let placedIconSymbolIndex = -1; let verticalPlacedIconSymbolIndex = -1; - const placedTextSymbolIndices = {}; + const placedTextSymbolIndices: {[k: string]: any} = {}; let key = murmur3(''); let textOffset0 = 0; From 4963f15411295e9205b4152f6bec97ac4386e953 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:34:26 +0200 Subject: [PATCH 027/142] Explicit cast of array to length 2 --- src/symbol/symbol_layout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index 557de2c595..bed62325cd 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -228,7 +228,7 @@ export function performSymbolLayout(bucket: SymbolBucket, if (radialOffset) { // The style spec says don't use `text-offset` and `text-radial-offset` together // but doesn't actually specify what happens if you use both. We go with the radial offset. - textOffset = evaluateVariableOffset(textAnchor, [radialOffset * ONE_EM, INVALID_TEXT_OFFSET]); + textOffset = evaluateVariableOffset(textAnchor, [radialOffset * ONE_EM, INVALID_TEXT_OFFSET]) as [number, number]; } else { textOffset = (layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM) as any); } From 5ca6493cef70b93309bb1bd838c1a3314c630666 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:37:30 +0200 Subject: [PATCH 028/142] Do not provide type any in for..in loop --- src/symbol/symbol_layout.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index bed62325cd..2c0e0279b2 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -560,7 +560,7 @@ function getDefaultHorizontalShaping( ): Shaping | null { // We don't care which shaping we get because this is used for collision purposes // and all the justifications have the same collision box - for (const justification: any in horizontalShaping) { + for (const justification in horizontalShaping) { return horizontalShaping[justification]; } return null; @@ -701,7 +701,7 @@ function addSymbol(bucket: SymbolBucket, } } - for (const justification: any in shapedTextOrientations.horizontal) { + for (const justification in shapedTextOrientations.horizontal) { const shaping = shapedTextOrientations.horizontal[justification]; if (!textCollisionFeature) { From b1e81ab45a4563f96f5c45ea19828a45c4aab13b Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:39:22 +0200 Subject: [PATCH 029/142] Make more objects dynamically extenable --- src/symbol/symbol_layout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index 2c0e0279b2..e764a532fc 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -207,7 +207,7 @@ export function performSymbolLayout(bucket: SymbolBucket, const layoutTextSize = sizes.layoutTextSize.evaluate(feature, {}, canonical); const layoutIconSize = sizes.layoutIconSize.evaluate(feature, {}, canonical); - const shapedTextOrientations = { + const shapedTextOrientations: {[k: string]: any} = { horizontal: {}, vertical: undefined }; From 59bdc8bbe6d65359e89ca04479811fcb5ec46f36 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:46:26 +0200 Subject: [PATCH 030/142] Cast layout.get return value to Number --- src/symbol/symbol_layout.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index e764a532fc..43882732ae 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -196,7 +196,7 @@ export function performSymbolLayout(bucket: SymbolBucket, sizes.layoutIconSize = unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(bucket.zoom + 1), canonical); sizes.textMaxSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(18)); - const lineHeight = layout.get('text-line-height') * ONE_EM; + const lineHeight = Number(layout.get('text-line-height')) * ONE_EM; const textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point'; const keepUpright = layout.get('text-keep-upright'); const textSize = layout.get('text-size'); @@ -386,10 +386,10 @@ function addFeature(bucket: SymbolBucket, textBoxScale = bucket.tilePixelRatio * fontScale, textMaxBoxScale = bucket.tilePixelRatio * textMaxSize / glyphSize, iconBoxScale = bucket.tilePixelRatio * layoutIconSize, - symbolMinDistance = bucket.tilePixelRatio * layout.get('symbol-spacing'), - textPadding = layout.get('text-padding') * bucket.tilePixelRatio, - iconPadding = layout.get('icon-padding') * bucket.tilePixelRatio, - textMaxAngle = layout.get('text-max-angle') / 180 * Math.PI, + symbolMinDistance = bucket.tilePixelRatio * Number(layout.get('symbol-spacing')), + textPadding = Number(layout.get('text-padding')) * bucket.tilePixelRatio, + iconPadding = Number(layout.get('icon-padding')) * bucket.tilePixelRatio, + textMaxAngle = Number(layout.get('text-max-angle')) / 180 * Math.PI, textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point', iconAlongLine = layout.get('icon-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point', symbolPlacement = layout.get('symbol-placement'), From e7bafda0f66709f114953100c37a068b4c5ca3d2 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:48:04 +0200 Subject: [PATCH 031/142] Cast number | void to number --- src/symbol/symbol_layout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index 43882732ae..e5ee0eb348 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -768,7 +768,7 @@ function addSymbol(bucket: SymbolBucket, ); if (feature.sortKey !== undefined) { - bucket.addToSortKeyRanges(bucket.symbolInstances.length, feature.sortKey); + bucket.addToSortKeyRanges(bucket.symbolInstances.length, feature.sortKey as number); } bucket.symbolInstances.emplaceBack( From bcebaca3c56a9066a0a0a22d0afb7d817fbdf9a4 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:54:55 +0200 Subject: [PATCH 032/142] Specify Rect type --- src/symbol/quads.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/symbol/quads.ts b/src/symbol/quads.ts index adb0e1a9c1..e149cb9c43 100644 --- a/src/symbol/quads.ts +++ b/src/symbol/quads.ts @@ -10,6 +10,7 @@ import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; import type {Feature} from '../style-spec/expression'; import type {StyleImage} from '../style/style_image'; import ONE_EM from './one_em'; +import {Rect} from '../render/glyph_atlas'; /** * A textured quad for rendering a single icon or glyph. @@ -237,7 +238,7 @@ export function getGlyphQuads( for (const line of shaping.positionedLines) { for (const positionedGlyph of line.positionedGlyphs) { if (!positionedGlyph.rect) continue; - const textureRect = positionedGlyph.rect || {}; + const textureRect: Rect = positionedGlyph.rect || {} as Rect; // The rects have an additional buffer that is not included in their size. const glyphPadding = 1.0; From 31992868d661369c16812f7f49920e6cfd39e5b1 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 16:58:10 +0200 Subject: [PATCH 033/142] Make thhird argument of getKey optional --- src/symbol/mergelines.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/symbol/mergelines.ts b/src/symbol/mergelines.ts index 310814191c..62f2d44b3b 100644 --- a/src/symbol/mergelines.ts +++ b/src/symbol/mergelines.ts @@ -35,7 +35,7 @@ export default function(features: Array): Array { return i; } - function getKey(text, geom, onRight) { + function getKey(text, geom, onRight?) { const point = onRight ? geom[0][geom[0].length - 1] : geom[0][0]; return `${text}:${point.x}:${point.y}`; } From 9fe8cf629466f618856a3e69fcfbe3b3089b5527 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 17:01:29 +0200 Subject: [PATCH 034/142] Cast number | void to number --- src/symbol/check_max_angle.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/symbol/check_max_angle.ts b/src/symbol/check_max_angle.ts index 7ccb11b298..92ef76f5b4 100644 --- a/src/symbol/check_max_angle.ts +++ b/src/symbol/check_max_angle.ts @@ -22,7 +22,7 @@ function checkMaxAngle(line: Array, anchor: Anchor, labelLength: number, if (anchor.segment === undefined) return true; let p = anchor; - let index = anchor.segment + 1; + let index = Number(anchor.segment) + 1; let anchorDistance = 0; // move backwards along the line to the first segment the label appears on From 4e72829342775bede88eeb6924e953d9a3efecd1 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 18:27:33 +0200 Subject: [PATCH 035/142] Define return type of parse() in subclasses of Expression --- src/style-spec/expression/definitions/at.ts | 2 +- src/style-spec/expression/definitions/case.ts | 2 +- src/style-spec/expression/definitions/coalesce.ts | 2 +- src/style-spec/expression/definitions/in.ts | 2 +- src/style-spec/expression/definitions/index_of.ts | 2 +- src/style-spec/expression/definitions/interpolate.ts | 2 +- src/style-spec/expression/definitions/length.ts | 2 +- src/style-spec/expression/definitions/let.ts | 2 +- src/style-spec/expression/definitions/literal.ts | 2 +- src/style-spec/expression/definitions/match.ts | 2 +- src/style-spec/expression/definitions/slice.ts | 2 +- src/style-spec/expression/definitions/step.ts | 2 +- src/style-spec/expression/definitions/var.ts | 2 +- src/style-spec/expression/definitions/within.ts | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index 23aef7c65b..adcb6ec6b3 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -19,7 +19,7 @@ class At implements Expression { this.input = input; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index 4561b3b328..d8c8d3596b 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -21,7 +21,7 @@ class Case implements Expression { this.otherwise = otherwise; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 4) return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`); if (args.length % 2 !== 0) diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index 7c935981ad..805b7f55bc 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -17,7 +17,7 @@ class Coalesce implements Expression { this.args = args; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { return context.error("Expectected at least one argument."); } diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index 304fb7b4b0..a305e92161 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -27,7 +27,7 @@ class In implements Expression { this.haystack = haystack; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) { return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); } diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index aa1a98b13b..03620193a4 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -29,7 +29,7 @@ class IndexOf implements Expression { this.fromIndex = fromIndex; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length <= 2 || args.length >= 5) { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); } diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index 2856d07b8a..2c48767dd0 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -58,7 +58,7 @@ class Interpolate implements Expression { return t; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { let [operator, interpolation, input, ...rest] = args; if (!Array.isArray(interpolation) || interpolation.length === 0) { diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index 39e36afd3d..311509c304 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -17,7 +17,7 @@ class Length implements Expression { this.input = input; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/let.ts b/src/style-spec/expression/definitions/let.ts index 7c7e244ce8..8b19a8682c 100644 --- a/src/style-spec/expression/definitions/let.ts +++ b/src/style-spec/expression/definitions/let.ts @@ -25,7 +25,7 @@ class Let implements Expression { fn(this.result); } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 4) return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/literal.ts b/src/style-spec/expression/definitions/literal.ts index 5f366dd52c..e1d9c17b1f 100644 --- a/src/style-spec/expression/definitions/literal.ts +++ b/src/style-spec/expression/definitions/literal.ts @@ -16,7 +16,7 @@ class Literal implements Expression { this.value = value; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`); diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index f5c7e09b30..60a401131f 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -32,7 +32,7 @@ class Match implements Expression { this.otherwise = otherwise; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 5) return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); if (args.length % 2 !== 1) diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index 35875566b5..4f245b1ea1 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -29,7 +29,7 @@ class Slice implements Expression { } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length <= 2 || args.length >= 5) { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); } diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index b6d55c30da..f6fb8d73bd 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -27,7 +27,7 @@ class Step implements Expression { } } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length - 1 < 4) { return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); } diff --git a/src/style-spec/expression/definitions/var.ts b/src/style-spec/expression/definitions/var.ts index 566e9a907c..2d74b543d5 100644 --- a/src/style-spec/expression/definitions/var.ts +++ b/src/style-spec/expression/definitions/var.ts @@ -14,7 +14,7 @@ class Var implements Expression { this.boundExpression = boundExpression; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2 || typeof args[1] !== 'string') return context.error(`'var' expression requires exactly one string literal argument.`); diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index 289c127342..6373a23169 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -291,7 +291,7 @@ class Within implements Expression { this.geometries = geometries; } - static parse(args: ReadonlyArray, context: ParsingContext) { + static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`); if (isValue(args[1])) { From 95781adf3db3be1c733252320e73c5a532e78694 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 18:34:11 +0200 Subject: [PATCH 036/142] Cast return type of context.error() from void to null --- .../expression/definitions/assertion.ts | 6 +++--- src/style-spec/expression/definitions/at.ts | 2 +- src/style-spec/expression/definitions/case.ts | 4 ++-- .../expression/definitions/coalesce.ts | 2 +- .../expression/definitions/coercion.ts | 4 ++-- .../expression/definitions/collator.ts | 4 ++-- .../expression/definitions/comparison.ts | 10 +++++----- .../expression/definitions/format.ts | 6 +++--- src/style-spec/expression/definitions/image.ts | 4 ++-- src/style-spec/expression/definitions/in.ts | 4 ++-- .../expression/definitions/index_of.ts | 4 ++-- .../expression/definitions/interpolate.ts | 18 +++++++++--------- .../expression/definitions/length.ts | 4 ++-- src/style-spec/expression/definitions/let.ts | 6 +++--- .../expression/definitions/literal.ts | 4 ++-- src/style-spec/expression/definitions/match.ts | 14 +++++++------- .../expression/definitions/number_format.ts | 4 ++-- src/style-spec/expression/definitions/slice.ts | 4 ++-- src/style-spec/expression/definitions/step.ts | 8 ++++---- src/style-spec/expression/definitions/var.ts | 4 ++-- .../expression/definitions/within.ts | 4 ++-- 21 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/style-spec/expression/definitions/assertion.ts b/src/style-spec/expression/definitions/assertion.ts index 84c8d55c57..d1a820a2ba 100644 --- a/src/style-spec/expression/definitions/assertion.ts +++ b/src/style-spec/expression/definitions/assertion.ts @@ -36,7 +36,7 @@ class Assertion implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) - return context.error(`Expected at least one argument.`); + return context.error(`Expected at least one argument.`) as null; let i = 1; let type; @@ -47,7 +47,7 @@ class Assertion implements Expression { if (args.length > 2) { const type = args[1]; if (typeof type !== 'string' || !(type in types) || type === 'object') - return context.error('The item type argument of "array" must be one of string, number, boolean', 1); + return context.error('The item type argument of "array" must be one of string, number, boolean', 1) as null; itemType = types[type]; i++; } else { @@ -61,7 +61,7 @@ class Assertion implements Expression { args[2] < 0 || args[2] !== Math.floor(args[2])) ) { - return context.error('The length argument to "array" must be a positive integer literal', 2); + return context.error('The length argument to "array" must be a positive integer literal', 2) as null; } N = args[2]; i++; diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index adcb6ec6b3..875e1543ad 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -21,7 +21,7 @@ class At implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) - return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); + return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; const index = context.parse(args[1], 1, NumberType); const input = context.parse(args[2], 2, array(context.expectedType || ValueType)); diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index d8c8d3596b..28e343d2b2 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -23,9 +23,9 @@ class Case implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 4) - return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`); + return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`) as null; if (args.length % 2 !== 0) - return context.error(`Expected an odd number of arguments.`); + return context.error(`Expected an odd number of arguments.`) as null; let outputType: Type | undefined | null; if (context.expectedType && context.expectedType.kind !== 'value') { diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index 805b7f55bc..1eda5d8e90 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -19,7 +19,7 @@ class Coalesce implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { - return context.error("Expectected at least one argument."); + return context.error("Expectected at least one argument.") as null; } let outputType: Type = (null as any); const expectedType = context.expectedType; diff --git a/src/style-spec/expression/definitions/coercion.ts b/src/style-spec/expression/definitions/coercion.ts index b34361793b..59e4e90476 100644 --- a/src/style-spec/expression/definitions/coercion.ts +++ b/src/style-spec/expression/definitions/coercion.ts @@ -38,13 +38,13 @@ class Coercion implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) - return context.error(`Expected at least one argument.`); + return context.error(`Expected at least one argument.`) as null; const name: string = (args[0] as any); assert(types[name], name); if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2) - return context.error(`Expected one argument.`); + return context.error(`Expected one argument.`) as null; const type = types[name]; diff --git a/src/style-spec/expression/definitions/collator.ts b/src/style-spec/expression/definitions/collator.ts index 73731a64ff..79f8df7488 100644 --- a/src/style-spec/expression/definitions/collator.ts +++ b/src/style-spec/expression/definitions/collator.ts @@ -21,11 +21,11 @@ export default class CollatorExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) - return context.error(`Expected one argument.`); + return context.error(`Expected one argument.`) as null; const options = (args[1] as any); if (typeof options !== "object" || Array.isArray(options)) - return context.error(`Collator options argument must be an object.`); + return context.error(`Collator options argument must be an object.`) as null; const caseSensitive = context.parse( options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType); diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index 9c44ef39a2..ef84d95c46 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -77,19 +77,19 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3 && args.length !== 4) - return context.error(`Expected two or three arguments.`); + return context.error(`Expected two or three arguments.`) as null; const op: ComparisonOperator = (args[0] as any); let lhs = context.parse(args[1], 1, ValueType); if (!lhs) return null; if (!isComparableType(op, lhs.type)) { - return context.concat(1).error(`"${op}" comparisons are not supported for type '${toString(lhs.type)}'.`); + return context.concat(1).error(`"${op}" comparisons are not supported for type '${toString(lhs.type)}'.`) as null; } let rhs = context.parse(args[2], 2, ValueType); if (!rhs) return null; if (!isComparableType(op, rhs.type)) { - return context.concat(2).error(`"${op}" comparisons are not supported for type '${toString(rhs.type)}'.`); + return context.concat(2).error(`"${op}" comparisons are not supported for type '${toString(rhs.type)}'.`) as null; } if ( @@ -97,7 +97,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato lhs.type.kind !== 'value' && rhs.type.kind !== 'value' ) { - return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`); + return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`) as null; } if (isOrderComparison) { @@ -119,7 +119,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato lhs.type.kind !== 'value' && rhs.type.kind !== 'value' ) { - return context.error(`Cannot use collator to compare non-string types.`); + return context.error(`Cannot use collator to compare non-string types.`) as null; } collator = context.parse(args[3], 3, CollatorType); if (!collator) return null; diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index 88b1f46163..e081fd6e0e 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -35,12 +35,12 @@ export default class FormatExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { - return context.error(`Expected at least one argument.`); + return context.error(`Expected at least one argument.`) as null; } const firstArg = args[1]; if (!Array.isArray(firstArg) && typeof firstArg === 'object') { - return context.error(`First argument must be an image or text section.`); + return context.error(`First argument must be an image or text section.`) as null; } const sections: Array = []; @@ -79,7 +79,7 @@ export default class FormatExpression implements Expression { const kind = content.type.kind; if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage') - return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`); + return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`) as null; nextTokenMayBeObject = true; sections.push({content, scale: null, font: null, textColor: null}); diff --git a/src/style-spec/expression/definitions/image.ts b/src/style-spec/expression/definitions/image.ts index 008368c432..6cabef56da 100644 --- a/src/style-spec/expression/definitions/image.ts +++ b/src/style-spec/expression/definitions/image.ts @@ -17,11 +17,11 @@ export default class ImageExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) { - return context.error(`Expected two arguments.`); + return context.error(`Expected two arguments.`) as null; } const name = context.parse(args[1], 1, StringType); - if (!name) return context.error(`No image name provided.`); + if (!name) return context.error(`No image name provided.`) as null; return new ImageExpression(name); } diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index a305e92161..5b85956ae5 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -29,7 +29,7 @@ class In implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) { - return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`); + return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; } const needle = context.parse(args[1], 1, ValueType); @@ -39,7 +39,7 @@ class In implements Expression { if (!needle || !haystack) return null; if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { - return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`); + return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } return new In(needle, haystack); diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index 03620193a4..c06b90567c 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -31,7 +31,7 @@ class IndexOf implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length <= 2 || args.length >= 5) { - return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); + return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } const needle = context.parse(args[1], 1, ValueType); @@ -40,7 +40,7 @@ class IndexOf implements Expression { if (!needle || !haystack) return null; if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { - return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`); + return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } if (args.length === 4) { diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index 2c48767dd0..9cf0d603f3 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -62,7 +62,7 @@ class Interpolate implements Expression { let [operator, interpolation, input, ...rest] = args; if (!Array.isArray(interpolation) || interpolation.length === 0) { - return context.error(`Expected an interpolation type expression.`, 1); + return context.error(`Expected an interpolation type expression.`, 1) as null; } if (interpolation[0] === 'linear') { @@ -70,7 +70,7 @@ class Interpolate implements Expression { } else if (interpolation[0] === 'exponential') { const base = interpolation[1]; if (typeof base !== 'number') - return context.error(`Exponential interpolation requires a numeric base.`, 1, 1); + return context.error(`Exponential interpolation requires a numeric base.`, 1, 1) as null; interpolation = { name: 'exponential', base @@ -81,7 +81,7 @@ class Interpolate implements Expression { controlPoints.length !== 4 || controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1) ) { - return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1); + return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1) as null; } interpolation = { @@ -89,15 +89,15 @@ class Interpolate implements Expression { controlPoints: (controlPoints as any) }; } else { - return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0); + return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0) as null; } if (args.length - 1 < 4) { - return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); + return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null; } if ((args.length - 1) % 2 !== 0) { - return context.error(`Expected an even number of arguments.`); + return context.error(`Expected an even number of arguments.`) as null; } input = context.parse(input, 2, NumberType); @@ -120,11 +120,11 @@ class Interpolate implements Expression { const valueKey = i + 4; if (typeof label !== 'number') { - return context.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey); + return context.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey) as null; } if (stops.length && stops[stops.length - 1][0] >= label) { - return context.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', labelKey); + return context.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', labelKey) as null; } const parsed = context.parse(value, valueKey, outputType); @@ -141,7 +141,7 @@ class Interpolate implements Expression { typeof outputType.N === 'number' ) ) { - return context.error(`Type ${toString(outputType)} is not interpolatable.`); + return context.error(`Type ${toString(outputType)} is not interpolatable.`) as null; } return new Interpolate(outputType, (operator as any), interpolation, input, stops); diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index 311509c304..e88258506a 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -19,13 +19,13 @@ class Length implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) - return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`); + return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`) as null; const input = context.parse(args[1], 1); if (!input) return null; if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value') - return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`); + return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`) as null; return new Length(input); } diff --git a/src/style-spec/expression/definitions/let.ts b/src/style-spec/expression/definitions/let.ts index 8b19a8682c..871ecf3861 100644 --- a/src/style-spec/expression/definitions/let.ts +++ b/src/style-spec/expression/definitions/let.ts @@ -27,18 +27,18 @@ class Let implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 4) - return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`); + return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`) as null; const bindings: Array<[string, Expression]> = []; for (let i = 1; i < args.length - 1; i += 2) { const name = args[i]; if (typeof name !== 'string') { - return context.error(`Expected string, but found ${typeof name} instead.`, i); + return context.error(`Expected string, but found ${typeof name} instead.`, i) as null; } if (/[^a-zA-Z0-9_]/.test(name)) { - return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i); + return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i) as null; } const value = context.parse(args[i + 1], i + 1); diff --git a/src/style-spec/expression/definitions/literal.ts b/src/style-spec/expression/definitions/literal.ts index e1d9c17b1f..7a98e2b359 100644 --- a/src/style-spec/expression/definitions/literal.ts +++ b/src/style-spec/expression/definitions/literal.ts @@ -18,10 +18,10 @@ class Literal implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) - return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`); + return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null; if (!isValue(args[1])) - return context.error(`invalid value`); + return context.error(`invalid value`) as null; const value = (args[1] as any); let type = typeOf(value); diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index 60a401131f..aeab8a8e76 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -34,9 +34,9 @@ class Match implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 5) - return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); + return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null; if (args.length % 2 !== 1) - return context.error(`Expected an even number of arguments.`); + return context.error(`Expected an even number of arguments.`) as null; let inputType; let outputType; @@ -55,17 +55,17 @@ class Match implements Expression { const labelContext = context.concat(i); if (labels.length === 0) { - return labelContext.error('Expected at least one branch label.'); + return labelContext.error('Expected at least one branch label.') as null; } for (const label of labels) { if (typeof label !== 'number' && typeof label !== 'string') { - return labelContext.error(`Branch labels must be numbers or strings.`); + return labelContext.error(`Branch labels must be numbers or strings.`) as null; } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) { - return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`); + return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`) as null; } else if (typeof label === 'number' && Math.floor(label) !== label) { - return labelContext.error(`Numeric branch labels must be integer values.`); + return labelContext.error(`Numeric branch labels must be integer values.`) as null; } else if (!inputType) { inputType = typeOf(label); @@ -74,7 +74,7 @@ class Match implements Expression { } if (typeof cases[String(label)] !== 'undefined') { - return labelContext.error('Branch labels must be unique.'); + return labelContext.error('Branch labels must be unique.') as null; } cases[String(label)] = outputs.length; diff --git a/src/style-spec/expression/definitions/number_format.ts b/src/style-spec/expression/definitions/number_format.ts index 1de0ae1a07..4990e0289a 100644 --- a/src/style-spec/expression/definitions/number_format.ts +++ b/src/style-spec/expression/definitions/number_format.ts @@ -47,14 +47,14 @@ export default class NumberFormat implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) - return context.error(`Expected two arguments.`); + return context.error(`Expected two arguments.`) as null; const number = context.parse(args[1], 1, NumberType); if (!number) return null; const options = (args[2] as any); if (typeof options !== "object" || Array.isArray(options)) - return context.error(`NumberFormat options argument must be an object.`); + return context.error(`NumberFormat options argument must be an object.`) as null; let locale = null; if (options['locale']) { diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index 4f245b1ea1..29b7b14cca 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -31,7 +31,7 @@ class Slice implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length <= 2 || args.length >= 5) { - return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`); + return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } const input = context.parse(args[1], 1, ValueType); @@ -40,7 +40,7 @@ class Slice implements Expression { if (!input || !beginIndex) return null; if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) { - return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`); + return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`) as null; } if (args.length === 4) { diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index f6fb8d73bd..7593581b38 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -29,11 +29,11 @@ class Step implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length - 1 < 4) { - return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`); + return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null; } if ((args.length - 1) % 2 !== 0) { - return context.error(`Expected an even number of arguments.`); + return context.error(`Expected an even number of arguments.`) as null; } const input = context.parse(args[1], 1, NumberType); @@ -54,11 +54,11 @@ class Step implements Expression { const valueKey = i + 1; if (typeof label !== 'number') { - return context.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey); + return context.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey) as null; } if (stops.length && stops[stops.length - 1][0] >= label) { - return context.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', labelKey); + return context.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', labelKey) as null; } const parsed = context.parse(value, valueKey, outputType); diff --git a/src/style-spec/expression/definitions/var.ts b/src/style-spec/expression/definitions/var.ts index 2d74b543d5..0dba411c06 100644 --- a/src/style-spec/expression/definitions/var.ts +++ b/src/style-spec/expression/definitions/var.ts @@ -16,11 +16,11 @@ class Var implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2 || typeof args[1] !== 'string') - return context.error(`'var' expression requires exactly one string literal argument.`); + return context.error(`'var' expression requires exactly one string literal argument.`) as null; const name = args[1]; if (!context.scope.has(name)) { - return context.error(`Unknown variable "${name}". Make sure "${name}" has been bound in an enclosing "let" expression before using it.`, 1); + return context.error(`Unknown variable "${name}". Make sure "${name}" has been bound in an enclosing "let" expression before using it.`, 1) as null; } return new Var(name, context.scope.get(name)); diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index 6373a23169..c34872d5cd 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -293,7 +293,7 @@ class Within implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) - return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`); + return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null; if (isValue(args[1])) { const geojson = (args[1] as any); if (geojson.type === 'FeatureCollection') { @@ -312,7 +312,7 @@ class Within implements Expression { return new Within(geojson, geojson); } } - return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`); + return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`) as null; } evaluate(ctx: EvaluationContext) { From efc4b1fa4ea54f02e476d2690c64448c2dc7c5fc Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 19:23:55 +0200 Subject: [PATCH 037/142] Cast style-spec types to Type --- .../expression/definitions/assertion.ts | 2 +- src/style-spec/expression/definitions/at.ts | 4 +- src/style-spec/expression/definitions/case.ts | 2 +- .../expression/definitions/coalesce.ts | 2 +- .../expression/definitions/coercion.ts | 2 +- .../expression/definitions/collator.ts | 8 +- .../expression/definitions/comparison.ts | 8 +- .../expression/definitions/format.ts | 10 +- .../expression/definitions/image.ts | 4 +- src/style-spec/expression/definitions/in.ts | 8 +- .../expression/definitions/index.ts | 248 +++++++++--------- .../expression/definitions/index_of.ts | 10 +- .../expression/definitions/interpolate.ts | 4 +- .../expression/definitions/length.ts | 2 +- .../expression/definitions/match.ts | 2 +- .../expression/definitions/number_format.ts | 12 +- .../expression/definitions/slice.ts | 8 +- src/style-spec/expression/definitions/step.ts | 2 +- .../expression/definitions/within.ts | 2 +- src/style-spec/expression/types.ts | 4 +- 20 files changed, 172 insertions(+), 172 deletions(-) diff --git a/src/style-spec/expression/definitions/assertion.ts b/src/style-spec/expression/definitions/assertion.ts index d1a820a2ba..b5da69d925 100644 --- a/src/style-spec/expression/definitions/assertion.ts +++ b/src/style-spec/expression/definitions/assertion.ts @@ -75,7 +75,7 @@ class Assertion implements Expression { const parsed = []; for (; i < args.length; i++) { - const input = context.parse(args[i], i, ValueType); + const input = context.parse(args[i], i, ValueType as Type); if (!input) return null; parsed.push(input); } diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index 875e1543ad..be16aaf4e1 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -23,8 +23,8 @@ class At implements Expression { if (args.length !== 3) return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; - const index = context.parse(args[1], 1, NumberType); - const input = context.parse(args[2], 2, array(context.expectedType || ValueType)); + const index = context.parse(args[1], 1, NumberType as Type); + const input = context.parse(args[2], 2, array((context.expectedType || ValueType) as Type)); if (!index || !input) return null; diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index 28e343d2b2..62b5fa8fdb 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -34,7 +34,7 @@ class Case implements Expression { const branches = []; for (let i = 1; i < args.length - 1; i += 2) { - const test = context.parse(args[i], i, BooleanType); + const test = context.parse(args[i], i, BooleanType as Type); if (!test) return null; const result = context.parse(args[i + 1], i + 1, outputType); diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index 1eda5d8e90..b05e6b996d 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -45,7 +45,7 @@ class Coalesce implements Expression { parsedArgs.some(arg => checkSubtype(expectedType, arg.type)); return needsAnnotation ? - new Coalesce(ValueType, parsedArgs) : + new Coalesce(ValueType as Type, parsedArgs) : new Coalesce((outputType as any), parsedArgs); } diff --git a/src/style-spec/expression/definitions/coercion.ts b/src/style-spec/expression/definitions/coercion.ts index 59e4e90476..ebd6191c21 100644 --- a/src/style-spec/expression/definitions/coercion.ts +++ b/src/style-spec/expression/definitions/coercion.ts @@ -50,7 +50,7 @@ class Coercion implements Expression { const parsed = []; for (let i = 1; i < args.length; i++) { - const input = context.parse(args[i], i, ValueType); + const input = context.parse(args[i], i, ValueType as Type); if (!input) return null; parsed.push(input); } diff --git a/src/style-spec/expression/definitions/collator.ts b/src/style-spec/expression/definitions/collator.ts index 79f8df7488..230ca34595 100644 --- a/src/style-spec/expression/definitions/collator.ts +++ b/src/style-spec/expression/definitions/collator.ts @@ -13,7 +13,7 @@ export default class CollatorExpression implements Expression { locale: Expression | null; constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) { - this.type = CollatorType; + this.type = CollatorType as Type; this.locale = locale; this.caseSensitive = caseSensitive; this.diacriticSensitive = diacriticSensitive; @@ -28,16 +28,16 @@ export default class CollatorExpression implements Expression { return context.error(`Collator options argument must be an object.`) as null; const caseSensitive = context.parse( - options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType); + options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType as Type); if (!caseSensitive) return null; const diacriticSensitive = context.parse( - options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType); + options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType as Type); if (!diacriticSensitive) return null; let locale = null; if (options['locale']) { - locale = context.parse(options['locale'], 1, StringType); + locale = context.parse(options['locale'], 1, StringType as Type); if (!locale) return null; } diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index ef84d95c46..279e3965f6 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -68,7 +68,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato hasUntypedArgument: boolean; constructor(lhs: Expression, rhs: Expression, collator?: Expression | null) { - this.type = BooleanType; + this.type = BooleanType as Type; this.lhs = lhs; this.rhs = rhs; this.collator = collator; @@ -81,12 +81,12 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato const op: ComparisonOperator = (args[0] as any); - let lhs = context.parse(args[1], 1, ValueType); + let lhs = context.parse(args[1], 1, ValueType as Type); if (!lhs) return null; if (!isComparableType(op, lhs.type)) { return context.concat(1).error(`"${op}" comparisons are not supported for type '${toString(lhs.type)}'.`) as null; } - let rhs = context.parse(args[2], 2, ValueType); + let rhs = context.parse(args[2], 2, ValueType as Type); if (!rhs) return null; if (!isComparableType(op, rhs.type)) { return context.concat(2).error(`"${op}" comparisons are not supported for type '${toString(rhs.type)}'.`) as null; @@ -121,7 +121,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato ) { return context.error(`Cannot use collator to compare non-string types.`) as null; } - collator = context.parse(args[3], 3, CollatorType); + collator = context.parse(args[3], 3, CollatorType as Type); if (!collator) return null; } diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index e081fd6e0e..7375dc2289 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -29,7 +29,7 @@ export default class FormatExpression implements Expression { sections: Array; constructor(sections: Array) { - this.type = FormattedType; + this.type = FormattedType as Type; this.sections = sections; } @@ -53,19 +53,19 @@ export default class FormatExpression implements Expression { let scale = null; if (arg['font-scale']) { - scale = context.parse(arg['font-scale'], 1, NumberType); + scale = context.parse(arg['font-scale'], 1, NumberType as Type); if (!scale) return null; } let font = null; if (arg['text-font']) { - font = context.parse(arg['text-font'], 1, array(StringType)); + font = context.parse(arg['text-font'], 1, array(StringType as Type)); if (!font) return null; } let textColor = null; if (arg['text-color']) { - textColor = context.parse(arg['text-color'], 1, ColorType); + textColor = context.parse(arg['text-color'], 1, ColorType as Type); if (!textColor) return null; } @@ -74,7 +74,7 @@ export default class FormatExpression implements Expression { lastExpression.font = font; lastExpression.textColor = textColor; } else { - const content = context.parse(args[i], 1, ValueType); + const content = context.parse(args[i], 1, ValueType as Type); if (!content) return null; const kind = content.type.kind; diff --git a/src/style-spec/expression/definitions/image.ts b/src/style-spec/expression/definitions/image.ts index 6cabef56da..c1e5c38eb4 100644 --- a/src/style-spec/expression/definitions/image.ts +++ b/src/style-spec/expression/definitions/image.ts @@ -11,7 +11,7 @@ export default class ImageExpression implements Expression { input: Expression; constructor(input: Expression) { - this.type = ResolvedImageType; + this.type = ResolvedImageType as Type; this.input = input; } @@ -20,7 +20,7 @@ export default class ImageExpression implements Expression { return context.error(`Expected two arguments.`) as null; } - const name = context.parse(args[1], 1, StringType); + const name = context.parse(args[1], 1, StringType as Type); if (!name) return context.error(`No image name provided.`) as null; return new ImageExpression(name); diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index 5b85956ae5..e8dab5bff3 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -22,7 +22,7 @@ class In implements Expression { haystack: Expression; constructor(needle: Expression, haystack: Expression) { - this.type = BooleanType; + this.type = BooleanType as Type; this.needle = needle; this.haystack = haystack; } @@ -32,13 +32,13 @@ class In implements Expression { return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; } - const needle = context.parse(args[1], 1, ValueType); + const needle = context.parse(args[1], 1, ValueType as Type); - const haystack = context.parse(args[2], 2, ValueType); + const haystack = context.parse(args[2], 2, ValueType as Type); if (!needle || !haystack) return null; - if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { + if (!isValidType(needle.type, [BooleanType as Type, StringType as Type, NumberType as Type, NullType as Type, ValueType as Type])) { return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } diff --git a/src/style-spec/expression/definitions/index.ts b/src/style-spec/expression/definitions/index.ts index 3767fd9069..73bfc58d02 100644 --- a/src/style-spec/expression/definitions/index.ts +++ b/src/style-spec/expression/definitions/index.ts @@ -125,99 +125,99 @@ function varargs(type: Type): Varargs { CompoundExpression.register(expressions, { 'error': [ - ErrorType, - [StringType], + ErrorType as Type, + [StringType as Type], (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); } ], 'typeof': [ - StringType, - [ValueType], + StringType as Type, + [ValueType as Type], (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx))) ], 'to-rgba': [ - array(NumberType, 4), - [ColorType], + array(NumberType as Type, 4), + [ColorType as Type], (ctx, [v]) => { return v.evaluate(ctx).toArray(); } ], 'rgb': [ - ColorType, - [NumberType, NumberType, NumberType], + ColorType as Type, + [NumberType as Type, NumberType as Type, NumberType as Type], rgba ], 'rgba': [ - ColorType, - [NumberType, NumberType, NumberType, NumberType], + ColorType as Type, + [NumberType as Type, NumberType as Type, NumberType as Type, NumberType as Type], rgba ], 'has': { - type: BooleanType, + type: (BooleanType as Type), overloads: [ [ - [StringType], + [StringType as Type], (ctx, [key]) => has(key.evaluate(ctx), ctx.properties()) ], [ - [StringType, ObjectType], + [StringType as Type, ObjectType as Type], (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx)) ] ] }, 'get': { - type: ValueType, + type: (ValueType as Type), overloads: [ [ - [StringType], + [StringType as Type], (ctx, [key]) => get(key.evaluate(ctx), ctx.properties()) ], [ - [StringType, ObjectType], + [StringType as Type, ObjectType as Type], (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx)) ] ] }, 'feature-state': [ - ValueType, - [StringType], + ValueType as Type, + [StringType as Type], (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {}) ], 'properties': [ - ObjectType, + ObjectType as Type, [], (ctx) => ctx.properties() ], 'geometry-type': [ - StringType, + StringType as Type, [], (ctx) => ctx.geometryType() ], 'id': [ - ValueType, + ValueType as Type, [], (ctx) => ctx.id() ], 'zoom': [ - NumberType, + NumberType as Type, [], (ctx) => ctx.globals.zoom ], 'heatmap-density': [ - NumberType, + NumberType as Type, [], (ctx) => ctx.globals.heatmapDensity || 0 ], 'line-progress': [ - NumberType, + NumberType as Type, [], (ctx) => ctx.globals.lineProgress || 0 ], 'accumulated': [ - ValueType, + ValueType as Type, [], (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated ], '+': [ - NumberType, - varargs(NumberType), + NumberType as Type, + varargs(NumberType as Type), (ctx, args) => { let result = 0; for (const arg of args) { @@ -227,8 +227,8 @@ CompoundExpression.register(expressions, { } ], '*': [ - NumberType, - varargs(NumberType), + NumberType as Type, + varargs(NumberType as Type), (ctx, args) => { let result = 1; for (const arg of args) { @@ -238,115 +238,115 @@ CompoundExpression.register(expressions, { } ], '-': { - type: NumberType, + type: (NumberType as Type), overloads: [ [ - [NumberType, NumberType], + [NumberType as Type, NumberType as Type], (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx) ], [ - [NumberType], + [NumberType as Type], (ctx, [a]) => -a.evaluate(ctx) ] ] }, '/': [ - NumberType, - [NumberType, NumberType], + NumberType as Type, + [NumberType as Type, NumberType as Type], (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx) ], '%': [ - NumberType, - [NumberType, NumberType], + NumberType as Type, + [NumberType as Type, NumberType as Type], (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx) ], 'ln2': [ - NumberType, + NumberType as Type, [], () => Math.LN2 ], 'pi': [ - NumberType, + NumberType as Type, [], () => Math.PI ], 'e': [ - NumberType, + NumberType as Type, [], () => Math.E ], '^': [ - NumberType, - [NumberType, NumberType], + NumberType as Type, + [NumberType as Type, NumberType as Type], (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx)) ], 'sqrt': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [x]) => Math.sqrt(x.evaluate(ctx)) ], 'log10': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10 ], 'ln': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.log(n.evaluate(ctx)) ], 'log2': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2 ], 'sin': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.sin(n.evaluate(ctx)) ], 'cos': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.cos(n.evaluate(ctx)) ], 'tan': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.tan(n.evaluate(ctx)) ], 'asin': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.asin(n.evaluate(ctx)) ], 'acos': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.acos(n.evaluate(ctx)) ], 'atan': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.atan(n.evaluate(ctx)) ], 'min': [ - NumberType, - varargs(NumberType), + NumberType as Type, + varargs(NumberType as Type), (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx))) ], 'max': [ - NumberType, - varargs(NumberType), + NumberType as Type, + varargs(NumberType as Type), (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx))) ], 'abs': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.abs(n.evaluate(ctx)) ], 'round': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => { const v = n.evaluate(ctx); // Javascript's Math.round() rounds towards +Infinity for halfway @@ -356,33 +356,33 @@ CompoundExpression.register(expressions, { } ], 'floor': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.floor(n.evaluate(ctx)) ], 'ceil': [ - NumberType, - [NumberType], + NumberType as Type, + [NumberType as Type], (ctx, [n]) => Math.ceil(n.evaluate(ctx)) ], 'filter-==': [ - BooleanType, - [StringType, ValueType], + BooleanType as Type, + [StringType as Type, ValueType as Type], (ctx, [k, v]) => ctx.properties()[(k as any).value] === (v as any).value ], 'filter-id-==': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [v]) => ctx.id() === (v as any).value ], 'filter-type-==': [ - BooleanType, - [StringType], + BooleanType as Type, + [StringType as Type], (ctx, [v]) => ctx.geometryType() === (v as any).value ], 'filter-<': [ - BooleanType, - [StringType, ValueType], + BooleanType as Type, + [StringType as Type, ValueType as Type], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -390,8 +390,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id-<': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -399,8 +399,8 @@ CompoundExpression.register(expressions, { } ], 'filter->': [ - BooleanType, - [StringType, ValueType], + BooleanType as Type, + [StringType as Type, ValueType as Type], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -408,8 +408,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id->': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -417,8 +417,8 @@ CompoundExpression.register(expressions, { } ], 'filter-<=': [ - BooleanType, - [StringType, ValueType], + BooleanType as Type, + [StringType as Type, ValueType as Type], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -426,8 +426,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id-<=': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -435,8 +435,8 @@ CompoundExpression.register(expressions, { } ], 'filter->=': [ - BooleanType, - [StringType, ValueType], + BooleanType as Type, + [StringType as Type, ValueType as Type], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -444,8 +444,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id->=': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -453,46 +453,46 @@ CompoundExpression.register(expressions, { } ], 'filter-has': [ - BooleanType, - [ValueType], + BooleanType as Type, + [ValueType as Type], (ctx, [k]) => (k as any).value in ctx.properties() ], 'filter-has-id': [ - BooleanType, + BooleanType as Type, [], (ctx) => (ctx.id() !== null && ctx.id() !== undefined) ], 'filter-type-in': [ - BooleanType, - [array(StringType)], + BooleanType as Type, + [array(StringType as Type)], (ctx, [v]) => (v as any).value.indexOf(ctx.geometryType()) >= 0 ], 'filter-id-in': [ - BooleanType, - [array(ValueType)], + BooleanType as Type, + [array(ValueType as Type)], (ctx, [v]) => (v as any).value.indexOf(ctx.id()) >= 0 ], 'filter-in-small': [ - BooleanType, - [StringType, array(ValueType)], + BooleanType as Type, + [StringType as Type, array(ValueType as Type)], // assumes v is an array literal (ctx, [k, v]) => (v as any).value.indexOf(ctx.properties()[(k as any).value]) >= 0 ], 'filter-in-large': [ - BooleanType, - [StringType, array(ValueType)], + BooleanType as Type, + [StringType as Type, array(ValueType as Type)], // assumes v is a array literal with values sorted in ascending order and of a single type (ctx, [k, v]) => binarySearch(ctx.properties()[(k as any).value], (v as any).value, 0, (v as any).value.length - 1) ], 'all': { - type: BooleanType, + type: (BooleanType as Type), overloads: [ [ - [BooleanType, BooleanType], + [BooleanType as Type, BooleanType as Type], (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx) ], [ - varargs(BooleanType), + varargs(BooleanType as Type), (ctx, args) => { for (const arg of args) { if (!arg.evaluate(ctx)) @@ -504,14 +504,14 @@ CompoundExpression.register(expressions, { ] }, 'any': { - type: BooleanType, + type: (BooleanType as Type), overloads: [ [ - [BooleanType, BooleanType], + [BooleanType as Type, BooleanType as Type], (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx) ], [ - varargs(BooleanType), + varargs(BooleanType as Type), (ctx, args) => { for (const arg of args) { if (arg.evaluate(ctx)) @@ -523,13 +523,13 @@ CompoundExpression.register(expressions, { ] }, '!': [ - BooleanType, - [BooleanType], + BooleanType as Type, + [BooleanType as Type], (ctx, [b]) => !b.evaluate(ctx) ], 'is-supported-script': [ - BooleanType, - [StringType], + BooleanType as Type, + [StringType as Type], // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant (ctx, [s]) => { const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript; @@ -540,23 +540,23 @@ CompoundExpression.register(expressions, { } ], 'upcase': [ - StringType, - [StringType], + StringType as Type, + [StringType as Type], (ctx, [s]) => s.evaluate(ctx).toUpperCase() ], 'downcase': [ - StringType, - [StringType], + StringType as Type, + [StringType as Type], (ctx, [s]) => s.evaluate(ctx).toLowerCase() ], 'concat': [ - StringType, - varargs(ValueType), + StringType as Type, + varargs(ValueType as Type), (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('') ], 'resolved-locale': [ - StringType, - [CollatorType], + StringType as Type, + [CollatorType as Type], (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale() ] }); diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index c06b90567c..1821840b73 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -23,7 +23,7 @@ class IndexOf implements Expression { fromIndex: Expression | undefined | null; constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) { - this.type = NumberType; + this.type = NumberType as Type; this.needle = needle; this.haystack = haystack; this.fromIndex = fromIndex; @@ -34,17 +34,17 @@ class IndexOf implements Expression { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } - const needle = context.parse(args[1], 1, ValueType); + const needle = context.parse(args[1], 1, ValueType as Type); - const haystack = context.parse(args[2], 2, ValueType); + const haystack = context.parse(args[2], 2, ValueType as Type); if (!needle || !haystack) return null; - if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { + if (!isValidType(needle.type, [BooleanType as Type, StringType as Type, NumberType as Type, NullType as Type, ValueType as Type])) { return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } if (args.length === 4) { - const fromIndex = context.parse(args[3], 3, NumberType); + const fromIndex = context.parse(args[3], 3, NumberType as Type); if (!fromIndex) return null; return new IndexOf(needle, haystack, fromIndex); } else { diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index 9cf0d603f3..c1762bf446 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -100,14 +100,14 @@ class Interpolate implements Expression { return context.error(`Expected an even number of arguments.`) as null; } - input = context.parse(input, 2, NumberType); + input = context.parse(input, 2, NumberType as Type); if (!input) return null; const stops: Stops = []; let outputType: Type = (null as any); if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') { - outputType = ColorType; + outputType = ColorType as Type; } else if (context.expectedType && context.expectedType.kind !== 'value') { outputType = context.expectedType; } diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index e88258506a..937681f04b 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -13,7 +13,7 @@ class Length implements Expression { input: Expression; constructor(input: Expression) { - this.type = NumberType; + this.type = NumberType as Type; this.input = input; } diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index aeab8a8e76..07cf3996e6 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -86,7 +86,7 @@ class Match implements Expression { outputs.push(result); } - const input = context.parse(args[1], 1, ValueType); + const input = context.parse(args[1], 1, ValueType as Type); if (!input) return null; const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType); diff --git a/src/style-spec/expression/definitions/number_format.ts b/src/style-spec/expression/definitions/number_format.ts index 4990e0289a..fc8aa94103 100644 --- a/src/style-spec/expression/definitions/number_format.ts +++ b/src/style-spec/expression/definitions/number_format.ts @@ -37,7 +37,7 @@ export default class NumberFormat implements Expression { currency: Expression | null, minFractionDigits: Expression | null, maxFractionDigits: Expression | null) { - this.type = StringType; + this.type = StringType as Type; this.number = number; this.locale = locale; this.currency = currency; @@ -49,7 +49,7 @@ export default class NumberFormat implements Expression { if (args.length !== 3) return context.error(`Expected two arguments.`) as null; - const number = context.parse(args[1], 1, NumberType); + const number = context.parse(args[1], 1, NumberType as Type); if (!number) return null; const options = (args[2] as any); @@ -58,25 +58,25 @@ export default class NumberFormat implements Expression { let locale = null; if (options['locale']) { - locale = context.parse(options['locale'], 1, StringType); + locale = context.parse(options['locale'], 1, StringType as Type); if (!locale) return null; } let currency = null; if (options['currency']) { - currency = context.parse(options['currency'], 1, StringType); + currency = context.parse(options['currency'], 1, StringType as Type); if (!currency) return null; } let minFractionDigits = null; if (options['min-fraction-digits']) { - minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType); + minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType as Type); if (!minFractionDigits) return null; } let maxFractionDigits = null; if (options['max-fraction-digits']) { - maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType); + maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType as Type); if (!maxFractionDigits) return null; } diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index 29b7b14cca..cbe29638fe 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -34,17 +34,17 @@ class Slice implements Expression { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } - const input = context.parse(args[1], 1, ValueType); - const beginIndex = context.parse(args[2], 2, NumberType); + const input = context.parse(args[1], 1, ValueType as Type); + const beginIndex = context.parse(args[2], 2, NumberType as Type); if (!input || !beginIndex) return null; - if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) { + if (!isValidType(input.type, [array(ValueType as Type), StringType as Type, ValueType as Type])) { return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`) as null; } if (args.length === 4) { - const endIndex = context.parse(args[3], 3, NumberType); + const endIndex = context.parse(args[3], 3, NumberType as Type); if (!endIndex) return null; return new Slice(input.type, input, beginIndex, endIndex); } else { diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index 7593581b38..c24876066e 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -36,7 +36,7 @@ class Step implements Expression { return context.error(`Expected an even number of arguments.`) as null; } - const input = context.parse(args[1], 1, NumberType); + const input = context.parse(args[1], 1, NumberType as Type); if (!input) return null; const stops: Stops = []; diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index c34872d5cd..cf582ca601 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -286,7 +286,7 @@ class Within implements Expression { geometries: GeoJSONPolygons; constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) { - this.type = BooleanType; + this.type = BooleanType as Type; this.geojson = geojson; this.geometries = geometries; } diff --git a/src/style-spec/expression/types.ts b/src/style-spec/expression/types.ts index 8df6b1ee44..c24e7e5c31 100644 --- a/src/style-spec/expression/types.ts +++ b/src/style-spec/expression/types.ts @@ -84,7 +84,7 @@ const valueMemberTypes = [ ColorType, FormattedType, ObjectType, - array(ValueType), + array(ValueType as ValueTypeT), ResolvedImageType ]; @@ -107,7 +107,7 @@ export function checkSubtype(expected: Type, t: Type): string | undefined | null return null; } else if (expected.kind === 'value') { for (const memberType of valueMemberTypes) { - if (!checkSubtype(memberType, t)) { + if (!checkSubtype(memberType as Type, t)) { return null; } } From f0a3c360a0a9c84d620894a049d10fa2f0a049bd Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 19:52:59 +0200 Subject: [PATCH 038/142] Cast return type of context.error() from void to null --- src/style-spec/expression/compound_expression.ts | 2 +- src/style-spec/expression/parsing_context.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/style-spec/expression/compound_expression.ts b/src/style-spec/expression/compound_expression.ts index 2324ff006f..bdab249341 100644 --- a/src/style-spec/expression/compound_expression.ts +++ b/src/style-spec/expression/compound_expression.ts @@ -56,7 +56,7 @@ class CompoundExpression implements Expression { const op: string = (args[0] as any); const definition = CompoundExpression.definitions[op]; if (!definition) { - return context.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0); + return context.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0) as null; } // Now check argument types against each signature diff --git a/src/style-spec/expression/parsing_context.ts b/src/style-spec/expression/parsing_context.ts index 7f1b02092a..10cfa58f30 100644 --- a/src/style-spec/expression/parsing_context.ts +++ b/src/style-spec/expression/parsing_context.ts @@ -90,7 +90,7 @@ class ParsingContext { if (Array.isArray(expr)) { if (expr.length === 0) { - return this.error(`Expected an array with at least one element. If you wanted a literal array, use ["literal", []].`); + return this.error(`Expected an array with at least one element. If you wanted a literal array, use ["literal", []].`) as null; } const op = expr[0]; @@ -142,13 +142,13 @@ class ParsingContext { return parsed; } - return this.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0); + return this.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0) as null; } else if (typeof expr === 'undefined') { - return this.error(`'undefined' value invalid. Use null instead.`); + return this.error(`'undefined' value invalid. Use null instead.`) as null; } else if (typeof expr === 'object') { - return this.error(`Bare objects invalid. Use ["literal", {...}] instead.`); + return this.error(`Bare objects invalid. Use ["literal", {...}] instead.`) as null; } else { - return this.error(`Expected an array, but found ${typeof expr} instead.`); + return this.error(`Expected an array, but found ${typeof expr} instead.`) as null; } } From 4af74a694e77ef7236c64c4415b7fa1340dd556f Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 19:54:10 +0200 Subject: [PATCH 039/142] Cast style-spec types to Type --- src/style-spec/expression/values.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/style-spec/expression/values.ts b/src/style-spec/expression/values.ts index 922b6297f2..3935986404 100644 --- a/src/style-spec/expression/values.ts +++ b/src/style-spec/expression/values.ts @@ -69,21 +69,21 @@ export function isValue(mixed: unknown): boolean { export function typeOf(value: Value): Type { if (value === null) { - return NullType; + return NullType as Type; } else if (typeof value === 'string') { - return StringType; + return StringType as Type; } else if (typeof value === 'boolean') { - return BooleanType; + return BooleanType as Type; } else if (typeof value === 'number') { - return NumberType; + return NumberType as Type; } else if (value instanceof Color) { - return ColorType; + return ColorType as Type; } else if (value instanceof Collator) { - return CollatorType; + return CollatorType as Type; } else if (value instanceof Formatted) { - return FormattedType; + return FormattedType as Type; } else if (value instanceof ResolvedImage) { - return ResolvedImageType; + return ResolvedImageType as Type; } else if (Array.isArray(value)) { const length = value.length; let itemType: Type | typeof undefined; @@ -103,7 +103,7 @@ export function typeOf(value: Value): Type { return array(itemType || ValueType, length); } else { assert(typeof value === 'object'); - return ObjectType; + return ObjectType as Type; } } From 948a035f2fd9168becb7b8bfc949b523f77887af Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:01:48 +0200 Subject: [PATCH 040/142] Cast dict to StylePropertySpecification --- src/style-spec/feature_filter/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/style-spec/feature_filter/index.ts b/src/style-spec/feature_filter/index.ts index bb1a6ad910..1ed65240b3 100644 --- a/src/style-spec/feature_filter/index.ts +++ b/src/style-spec/feature_filter/index.ts @@ -1,6 +1,7 @@ import {createExpression} from '../expression'; import type {GlobalProperties, Feature} from '../expression'; import type {CanonicalTileID} from '../../source/tile_id'; +import {StylePropertySpecification} from '../style-spec'; type FilterExpression = ( globalProperties: GlobalProperties, @@ -87,7 +88,7 @@ function createFilter(filter: any): FeatureFilter { filter = convertFilter(filter); } - const compiled = createExpression(filter, filterSpec); + const compiled = createExpression(filter, filterSpec as StylePropertySpecification); if (compiled.result === 'error') { throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', ')); } else { From dbae218bc27048f7306ae2c1cbc24bd543173a8a Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:06:51 +0200 Subject: [PATCH 041/142] Specify array type as any to fix string[] inference --- src/style-spec/function/convert.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/style-spec/function/convert.ts b/src/style-spec/function/convert.ts index 46c1661f99..1241d2cab8 100644 --- a/src/style-spec/function/convert.ts +++ b/src/style-spec/function/convert.ts @@ -139,7 +139,7 @@ function convertPropertyFunction(parameters, propertySpec, stops) { const get = ['get', parameters.property]; if (type === 'categorical' && typeof stops[0][0] === 'boolean') { assert(parameters.stops.length > 0 && parameters.stops.length <= 2); - const expression = ['case']; + const expression: any = ['case']; for (const stop of stops) { expression.push(['==', get, stop[0]], stop[1]); } @@ -243,7 +243,7 @@ function getFunctionType(parameters, propertySpec) { // "String with {name} token" => ["concat", "String with ", ["get", "name"], " token"] export function convertTokenString(s: string) { - const result = ['concat']; + const result: any = ['concat']; const re = /{([^{}]+)}/g; let pos = 0; for (let match = re.exec(s); match !== null; match = re.exec(s)) { From f8052f931882aae9b97d5a1671bdaab510bbae83 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:08:28 +0200 Subject: [PATCH 042/142] Make third argument of coalesce() optional --- src/style-spec/function/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/style-spec/function/index.ts b/src/style-spec/function/index.ts index a78b575f73..0ca69ca143 100644 --- a/src/style-spec/function/index.ts +++ b/src/style-spec/function/index.ts @@ -131,7 +131,7 @@ export function createFunction(parameters, propertySpec) { } } -function coalesce(a, b, c) { +function coalesce(a, b, c?) { if (a !== undefined) return a; if (b !== undefined) return b; if (c !== undefined) return c; From fb1403998ddef86514635011864e33268c0ec7d9 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:17:59 +0200 Subject: [PATCH 043/142] Explicit casts to Evaluate, Varargs, and Signature --- src/style-spec/expression/compound_expression.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/style-spec/expression/compound_expression.ts b/src/style-spec/expression/compound_expression.ts index bdab249341..db51278b20 100644 --- a/src/style-spec/expression/compound_expression.ts +++ b/src/style-spec/expression/compound_expression.ts @@ -87,7 +87,7 @@ class CompoundExpression implements Expression { const arg = args[i]; const expectedType = Array.isArray(params) ? params[i - 1] : - params.type; + (params as Varargs).type; const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType); if (!parsed) { @@ -110,13 +110,13 @@ class CompoundExpression implements Expression { } for (let i = 0; i < parsedArgs.length; i++) { - const expected = Array.isArray(params) ? params[i] : params.type; + const expected = Array.isArray(params) ? params[i] : (params as Varargs).type; const arg = parsedArgs[i]; signatureContext.concat(i + 1).checkSubtype(expected, arg.type); } if (signatureContext.errors.length === 0) { - return new CompoundExpression(op, type, evaluate, parsedArgs); + return new CompoundExpression(op, type, evaluate as Evaluate, parsedArgs); } } @@ -127,7 +127,7 @@ class CompoundExpression implements Expression { } else { const expected = overloads.length ? overloads : availableOverloads; const signatures = expected - .map(([params]) => stringifySignature(params)) + .map(([params]) => stringifySignature(params as Signature)) .join(' | '); const actualTypes = []; From 1783d6a0ed68a38b9e92535edefe0ec9047e8828 Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:47:35 +0200 Subject: [PATCH 044/142] Revert "Cast style-spec types to Type" This reverts commit 4af74a694e77ef7236c64c4415b7fa1340dd556f. --- src/style-spec/expression/values.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/style-spec/expression/values.ts b/src/style-spec/expression/values.ts index 3935986404..922b6297f2 100644 --- a/src/style-spec/expression/values.ts +++ b/src/style-spec/expression/values.ts @@ -69,21 +69,21 @@ export function isValue(mixed: unknown): boolean { export function typeOf(value: Value): Type { if (value === null) { - return NullType as Type; + return NullType; } else if (typeof value === 'string') { - return StringType as Type; + return StringType; } else if (typeof value === 'boolean') { - return BooleanType as Type; + return BooleanType; } else if (typeof value === 'number') { - return NumberType as Type; + return NumberType; } else if (value instanceof Color) { - return ColorType as Type; + return ColorType; } else if (value instanceof Collator) { - return CollatorType as Type; + return CollatorType; } else if (value instanceof Formatted) { - return FormattedType as Type; + return FormattedType; } else if (value instanceof ResolvedImage) { - return ResolvedImageType as Type; + return ResolvedImageType; } else if (Array.isArray(value)) { const length = value.length; let itemType: Type | typeof undefined; @@ -103,7 +103,7 @@ export function typeOf(value: Value): Type { return array(itemType || ValueType, length); } else { assert(typeof value === 'object'); - return ObjectType as Type; + return ObjectType; } } From 89bee09462180a910d6b48432f1989f584b2eddb Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:48:39 +0200 Subject: [PATCH 045/142] Revert "Cast style-spec types to Type" This reverts commit efc4b1fa4ea54f02e476d2690c64448c2dc7c5fc. --- .../expression/definitions/assertion.ts | 2 +- src/style-spec/expression/definitions/at.ts | 4 +- src/style-spec/expression/definitions/case.ts | 2 +- .../expression/definitions/coalesce.ts | 2 +- .../expression/definitions/coercion.ts | 2 +- .../expression/definitions/collator.ts | 8 +- .../expression/definitions/comparison.ts | 8 +- .../expression/definitions/format.ts | 10 +- .../expression/definitions/image.ts | 4 +- src/style-spec/expression/definitions/in.ts | 8 +- .../expression/definitions/index.ts | 248 +++++++++--------- .../expression/definitions/index_of.ts | 10 +- .../expression/definitions/interpolate.ts | 4 +- .../expression/definitions/length.ts | 2 +- .../expression/definitions/match.ts | 2 +- .../expression/definitions/number_format.ts | 12 +- .../expression/definitions/slice.ts | 8 +- src/style-spec/expression/definitions/step.ts | 2 +- .../expression/definitions/within.ts | 2 +- src/style-spec/expression/types.ts | 4 +- 20 files changed, 172 insertions(+), 172 deletions(-) diff --git a/src/style-spec/expression/definitions/assertion.ts b/src/style-spec/expression/definitions/assertion.ts index b5da69d925..d1a820a2ba 100644 --- a/src/style-spec/expression/definitions/assertion.ts +++ b/src/style-spec/expression/definitions/assertion.ts @@ -75,7 +75,7 @@ class Assertion implements Expression { const parsed = []; for (; i < args.length; i++) { - const input = context.parse(args[i], i, ValueType as Type); + const input = context.parse(args[i], i, ValueType); if (!input) return null; parsed.push(input); } diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index be16aaf4e1..875e1543ad 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -23,8 +23,8 @@ class At implements Expression { if (args.length !== 3) return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; - const index = context.parse(args[1], 1, NumberType as Type); - const input = context.parse(args[2], 2, array((context.expectedType || ValueType) as Type)); + const index = context.parse(args[1], 1, NumberType); + const input = context.parse(args[2], 2, array(context.expectedType || ValueType)); if (!index || !input) return null; diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index 62b5fa8fdb..28e343d2b2 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -34,7 +34,7 @@ class Case implements Expression { const branches = []; for (let i = 1; i < args.length - 1; i += 2) { - const test = context.parse(args[i], i, BooleanType as Type); + const test = context.parse(args[i], i, BooleanType); if (!test) return null; const result = context.parse(args[i + 1], i + 1, outputType); diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index b05e6b996d..1eda5d8e90 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -45,7 +45,7 @@ class Coalesce implements Expression { parsedArgs.some(arg => checkSubtype(expectedType, arg.type)); return needsAnnotation ? - new Coalesce(ValueType as Type, parsedArgs) : + new Coalesce(ValueType, parsedArgs) : new Coalesce((outputType as any), parsedArgs); } diff --git a/src/style-spec/expression/definitions/coercion.ts b/src/style-spec/expression/definitions/coercion.ts index ebd6191c21..59e4e90476 100644 --- a/src/style-spec/expression/definitions/coercion.ts +++ b/src/style-spec/expression/definitions/coercion.ts @@ -50,7 +50,7 @@ class Coercion implements Expression { const parsed = []; for (let i = 1; i < args.length; i++) { - const input = context.parse(args[i], i, ValueType as Type); + const input = context.parse(args[i], i, ValueType); if (!input) return null; parsed.push(input); } diff --git a/src/style-spec/expression/definitions/collator.ts b/src/style-spec/expression/definitions/collator.ts index 230ca34595..79f8df7488 100644 --- a/src/style-spec/expression/definitions/collator.ts +++ b/src/style-spec/expression/definitions/collator.ts @@ -13,7 +13,7 @@ export default class CollatorExpression implements Expression { locale: Expression | null; constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) { - this.type = CollatorType as Type; + this.type = CollatorType; this.locale = locale; this.caseSensitive = caseSensitive; this.diacriticSensitive = diacriticSensitive; @@ -28,16 +28,16 @@ export default class CollatorExpression implements Expression { return context.error(`Collator options argument must be an object.`) as null; const caseSensitive = context.parse( - options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType as Type); + options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType); if (!caseSensitive) return null; const diacriticSensitive = context.parse( - options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType as Type); + options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType); if (!diacriticSensitive) return null; let locale = null; if (options['locale']) { - locale = context.parse(options['locale'], 1, StringType as Type); + locale = context.parse(options['locale'], 1, StringType); if (!locale) return null; } diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index 279e3965f6..ef84d95c46 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -68,7 +68,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato hasUntypedArgument: boolean; constructor(lhs: Expression, rhs: Expression, collator?: Expression | null) { - this.type = BooleanType as Type; + this.type = BooleanType; this.lhs = lhs; this.rhs = rhs; this.collator = collator; @@ -81,12 +81,12 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato const op: ComparisonOperator = (args[0] as any); - let lhs = context.parse(args[1], 1, ValueType as Type); + let lhs = context.parse(args[1], 1, ValueType); if (!lhs) return null; if (!isComparableType(op, lhs.type)) { return context.concat(1).error(`"${op}" comparisons are not supported for type '${toString(lhs.type)}'.`) as null; } - let rhs = context.parse(args[2], 2, ValueType as Type); + let rhs = context.parse(args[2], 2, ValueType); if (!rhs) return null; if (!isComparableType(op, rhs.type)) { return context.concat(2).error(`"${op}" comparisons are not supported for type '${toString(rhs.type)}'.`) as null; @@ -121,7 +121,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato ) { return context.error(`Cannot use collator to compare non-string types.`) as null; } - collator = context.parse(args[3], 3, CollatorType as Type); + collator = context.parse(args[3], 3, CollatorType); if (!collator) return null; } diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index 7375dc2289..e081fd6e0e 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -29,7 +29,7 @@ export default class FormatExpression implements Expression { sections: Array; constructor(sections: Array) { - this.type = FormattedType as Type; + this.type = FormattedType; this.sections = sections; } @@ -53,19 +53,19 @@ export default class FormatExpression implements Expression { let scale = null; if (arg['font-scale']) { - scale = context.parse(arg['font-scale'], 1, NumberType as Type); + scale = context.parse(arg['font-scale'], 1, NumberType); if (!scale) return null; } let font = null; if (arg['text-font']) { - font = context.parse(arg['text-font'], 1, array(StringType as Type)); + font = context.parse(arg['text-font'], 1, array(StringType)); if (!font) return null; } let textColor = null; if (arg['text-color']) { - textColor = context.parse(arg['text-color'], 1, ColorType as Type); + textColor = context.parse(arg['text-color'], 1, ColorType); if (!textColor) return null; } @@ -74,7 +74,7 @@ export default class FormatExpression implements Expression { lastExpression.font = font; lastExpression.textColor = textColor; } else { - const content = context.parse(args[i], 1, ValueType as Type); + const content = context.parse(args[i], 1, ValueType); if (!content) return null; const kind = content.type.kind; diff --git a/src/style-spec/expression/definitions/image.ts b/src/style-spec/expression/definitions/image.ts index c1e5c38eb4..6cabef56da 100644 --- a/src/style-spec/expression/definitions/image.ts +++ b/src/style-spec/expression/definitions/image.ts @@ -11,7 +11,7 @@ export default class ImageExpression implements Expression { input: Expression; constructor(input: Expression) { - this.type = ResolvedImageType as Type; + this.type = ResolvedImageType; this.input = input; } @@ -20,7 +20,7 @@ export default class ImageExpression implements Expression { return context.error(`Expected two arguments.`) as null; } - const name = context.parse(args[1], 1, StringType as Type); + const name = context.parse(args[1], 1, StringType); if (!name) return context.error(`No image name provided.`) as null; return new ImageExpression(name); diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index e8dab5bff3..5b85956ae5 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -22,7 +22,7 @@ class In implements Expression { haystack: Expression; constructor(needle: Expression, haystack: Expression) { - this.type = BooleanType as Type; + this.type = BooleanType; this.needle = needle; this.haystack = haystack; } @@ -32,13 +32,13 @@ class In implements Expression { return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`) as null; } - const needle = context.parse(args[1], 1, ValueType as Type); + const needle = context.parse(args[1], 1, ValueType); - const haystack = context.parse(args[2], 2, ValueType as Type); + const haystack = context.parse(args[2], 2, ValueType); if (!needle || !haystack) return null; - if (!isValidType(needle.type, [BooleanType as Type, StringType as Type, NumberType as Type, NullType as Type, ValueType as Type])) { + if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } diff --git a/src/style-spec/expression/definitions/index.ts b/src/style-spec/expression/definitions/index.ts index 73bfc58d02..3767fd9069 100644 --- a/src/style-spec/expression/definitions/index.ts +++ b/src/style-spec/expression/definitions/index.ts @@ -125,99 +125,99 @@ function varargs(type: Type): Varargs { CompoundExpression.register(expressions, { 'error': [ - ErrorType as Type, - [StringType as Type], + ErrorType, + [StringType], (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); } ], 'typeof': [ - StringType as Type, - [ValueType as Type], + StringType, + [ValueType], (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx))) ], 'to-rgba': [ - array(NumberType as Type, 4), - [ColorType as Type], + array(NumberType, 4), + [ColorType], (ctx, [v]) => { return v.evaluate(ctx).toArray(); } ], 'rgb': [ - ColorType as Type, - [NumberType as Type, NumberType as Type, NumberType as Type], + ColorType, + [NumberType, NumberType, NumberType], rgba ], 'rgba': [ - ColorType as Type, - [NumberType as Type, NumberType as Type, NumberType as Type, NumberType as Type], + ColorType, + [NumberType, NumberType, NumberType, NumberType], rgba ], 'has': { - type: (BooleanType as Type), + type: BooleanType, overloads: [ [ - [StringType as Type], + [StringType], (ctx, [key]) => has(key.evaluate(ctx), ctx.properties()) ], [ - [StringType as Type, ObjectType as Type], + [StringType, ObjectType], (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx)) ] ] }, 'get': { - type: (ValueType as Type), + type: ValueType, overloads: [ [ - [StringType as Type], + [StringType], (ctx, [key]) => get(key.evaluate(ctx), ctx.properties()) ], [ - [StringType as Type, ObjectType as Type], + [StringType, ObjectType], (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx)) ] ] }, 'feature-state': [ - ValueType as Type, - [StringType as Type], + ValueType, + [StringType], (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {}) ], 'properties': [ - ObjectType as Type, + ObjectType, [], (ctx) => ctx.properties() ], 'geometry-type': [ - StringType as Type, + StringType, [], (ctx) => ctx.geometryType() ], 'id': [ - ValueType as Type, + ValueType, [], (ctx) => ctx.id() ], 'zoom': [ - NumberType as Type, + NumberType, [], (ctx) => ctx.globals.zoom ], 'heatmap-density': [ - NumberType as Type, + NumberType, [], (ctx) => ctx.globals.heatmapDensity || 0 ], 'line-progress': [ - NumberType as Type, + NumberType, [], (ctx) => ctx.globals.lineProgress || 0 ], 'accumulated': [ - ValueType as Type, + ValueType, [], (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated ], '+': [ - NumberType as Type, - varargs(NumberType as Type), + NumberType, + varargs(NumberType), (ctx, args) => { let result = 0; for (const arg of args) { @@ -227,8 +227,8 @@ CompoundExpression.register(expressions, { } ], '*': [ - NumberType as Type, - varargs(NumberType as Type), + NumberType, + varargs(NumberType), (ctx, args) => { let result = 1; for (const arg of args) { @@ -238,115 +238,115 @@ CompoundExpression.register(expressions, { } ], '-': { - type: (NumberType as Type), + type: NumberType, overloads: [ [ - [NumberType as Type, NumberType as Type], + [NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx) ], [ - [NumberType as Type], + [NumberType], (ctx, [a]) => -a.evaluate(ctx) ] ] }, '/': [ - NumberType as Type, - [NumberType as Type, NumberType as Type], + NumberType, + [NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx) ], '%': [ - NumberType as Type, - [NumberType as Type, NumberType as Type], + NumberType, + [NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx) ], 'ln2': [ - NumberType as Type, + NumberType, [], () => Math.LN2 ], 'pi': [ - NumberType as Type, + NumberType, [], () => Math.PI ], 'e': [ - NumberType as Type, + NumberType, [], () => Math.E ], '^': [ - NumberType as Type, - [NumberType as Type, NumberType as Type], + NumberType, + [NumberType, NumberType], (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx)) ], 'sqrt': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [x]) => Math.sqrt(x.evaluate(ctx)) ], 'log10': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10 ], 'ln': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx)) ], 'log2': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2 ], 'sin': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.sin(n.evaluate(ctx)) ], 'cos': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.cos(n.evaluate(ctx)) ], 'tan': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.tan(n.evaluate(ctx)) ], 'asin': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.asin(n.evaluate(ctx)) ], 'acos': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.acos(n.evaluate(ctx)) ], 'atan': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.atan(n.evaluate(ctx)) ], 'min': [ - NumberType as Type, - varargs(NumberType as Type), + NumberType, + varargs(NumberType), (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx))) ], 'max': [ - NumberType as Type, - varargs(NumberType as Type), + NumberType, + varargs(NumberType), (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx))) ], 'abs': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.abs(n.evaluate(ctx)) ], 'round': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => { const v = n.evaluate(ctx); // Javascript's Math.round() rounds towards +Infinity for halfway @@ -356,33 +356,33 @@ CompoundExpression.register(expressions, { } ], 'floor': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.floor(n.evaluate(ctx)) ], 'ceil': [ - NumberType as Type, - [NumberType as Type], + NumberType, + [NumberType], (ctx, [n]) => Math.ceil(n.evaluate(ctx)) ], 'filter-==': [ - BooleanType as Type, - [StringType as Type, ValueType as Type], + BooleanType, + [StringType, ValueType], (ctx, [k, v]) => ctx.properties()[(k as any).value] === (v as any).value ], 'filter-id-==': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [v]) => ctx.id() === (v as any).value ], 'filter-type-==': [ - BooleanType as Type, - [StringType as Type], + BooleanType, + [StringType], (ctx, [v]) => ctx.geometryType() === (v as any).value ], 'filter-<': [ - BooleanType as Type, - [StringType as Type, ValueType as Type], + BooleanType, + [StringType, ValueType], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -390,8 +390,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id-<': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -399,8 +399,8 @@ CompoundExpression.register(expressions, { } ], 'filter->': [ - BooleanType as Type, - [StringType as Type, ValueType as Type], + BooleanType, + [StringType, ValueType], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -408,8 +408,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id->': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -417,8 +417,8 @@ CompoundExpression.register(expressions, { } ], 'filter-<=': [ - BooleanType as Type, - [StringType as Type, ValueType as Type], + BooleanType, + [StringType, ValueType], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -426,8 +426,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id-<=': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -435,8 +435,8 @@ CompoundExpression.register(expressions, { } ], 'filter->=': [ - BooleanType as Type, - [StringType as Type, ValueType as Type], + BooleanType, + [StringType, ValueType], (ctx, [k, v]) => { const a = ctx.properties()[(k as any).value]; const b = (v as any).value; @@ -444,8 +444,8 @@ CompoundExpression.register(expressions, { } ], 'filter-id->=': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [v]) => { const a = ctx.id(); const b = (v as any).value; @@ -453,46 +453,46 @@ CompoundExpression.register(expressions, { } ], 'filter-has': [ - BooleanType as Type, - [ValueType as Type], + BooleanType, + [ValueType], (ctx, [k]) => (k as any).value in ctx.properties() ], 'filter-has-id': [ - BooleanType as Type, + BooleanType, [], (ctx) => (ctx.id() !== null && ctx.id() !== undefined) ], 'filter-type-in': [ - BooleanType as Type, - [array(StringType as Type)], + BooleanType, + [array(StringType)], (ctx, [v]) => (v as any).value.indexOf(ctx.geometryType()) >= 0 ], 'filter-id-in': [ - BooleanType as Type, - [array(ValueType as Type)], + BooleanType, + [array(ValueType)], (ctx, [v]) => (v as any).value.indexOf(ctx.id()) >= 0 ], 'filter-in-small': [ - BooleanType as Type, - [StringType as Type, array(ValueType as Type)], + BooleanType, + [StringType, array(ValueType)], // assumes v is an array literal (ctx, [k, v]) => (v as any).value.indexOf(ctx.properties()[(k as any).value]) >= 0 ], 'filter-in-large': [ - BooleanType as Type, - [StringType as Type, array(ValueType as Type)], + BooleanType, + [StringType, array(ValueType)], // assumes v is a array literal with values sorted in ascending order and of a single type (ctx, [k, v]) => binarySearch(ctx.properties()[(k as any).value], (v as any).value, 0, (v as any).value.length - 1) ], 'all': { - type: (BooleanType as Type), + type: BooleanType, overloads: [ [ - [BooleanType as Type, BooleanType as Type], + [BooleanType, BooleanType], (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx) ], [ - varargs(BooleanType as Type), + varargs(BooleanType), (ctx, args) => { for (const arg of args) { if (!arg.evaluate(ctx)) @@ -504,14 +504,14 @@ CompoundExpression.register(expressions, { ] }, 'any': { - type: (BooleanType as Type), + type: BooleanType, overloads: [ [ - [BooleanType as Type, BooleanType as Type], + [BooleanType, BooleanType], (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx) ], [ - varargs(BooleanType as Type), + varargs(BooleanType), (ctx, args) => { for (const arg of args) { if (arg.evaluate(ctx)) @@ -523,13 +523,13 @@ CompoundExpression.register(expressions, { ] }, '!': [ - BooleanType as Type, - [BooleanType as Type], + BooleanType, + [BooleanType], (ctx, [b]) => !b.evaluate(ctx) ], 'is-supported-script': [ - BooleanType as Type, - [StringType as Type], + BooleanType, + [StringType], // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant (ctx, [s]) => { const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript; @@ -540,23 +540,23 @@ CompoundExpression.register(expressions, { } ], 'upcase': [ - StringType as Type, - [StringType as Type], + StringType, + [StringType], (ctx, [s]) => s.evaluate(ctx).toUpperCase() ], 'downcase': [ - StringType as Type, - [StringType as Type], + StringType, + [StringType], (ctx, [s]) => s.evaluate(ctx).toLowerCase() ], 'concat': [ - StringType as Type, - varargs(ValueType as Type), + StringType, + varargs(ValueType), (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('') ], 'resolved-locale': [ - StringType as Type, - [CollatorType as Type], + StringType, + [CollatorType], (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale() ] }); diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index 1821840b73..c06b90567c 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -23,7 +23,7 @@ class IndexOf implements Expression { fromIndex: Expression | undefined | null; constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) { - this.type = NumberType as Type; + this.type = NumberType; this.needle = needle; this.haystack = haystack; this.fromIndex = fromIndex; @@ -34,17 +34,17 @@ class IndexOf implements Expression { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } - const needle = context.parse(args[1], 1, ValueType as Type); + const needle = context.parse(args[1], 1, ValueType); - const haystack = context.parse(args[2], 2, ValueType as Type); + const haystack = context.parse(args[2], 2, ValueType); if (!needle || !haystack) return null; - if (!isValidType(needle.type, [BooleanType as Type, StringType as Type, NumberType as Type, NullType as Type, ValueType as Type])) { + if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) { return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`) as null; } if (args.length === 4) { - const fromIndex = context.parse(args[3], 3, NumberType as Type); + const fromIndex = context.parse(args[3], 3, NumberType); if (!fromIndex) return null; return new IndexOf(needle, haystack, fromIndex); } else { diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index c1762bf446..9cf0d603f3 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -100,14 +100,14 @@ class Interpolate implements Expression { return context.error(`Expected an even number of arguments.`) as null; } - input = context.parse(input, 2, NumberType as Type); + input = context.parse(input, 2, NumberType); if (!input) return null; const stops: Stops = []; let outputType: Type = (null as any); if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') { - outputType = ColorType as Type; + outputType = ColorType; } else if (context.expectedType && context.expectedType.kind !== 'value') { outputType = context.expectedType; } diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index 937681f04b..e88258506a 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -13,7 +13,7 @@ class Length implements Expression { input: Expression; constructor(input: Expression) { - this.type = NumberType as Type; + this.type = NumberType; this.input = input; } diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index 07cf3996e6..aeab8a8e76 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -86,7 +86,7 @@ class Match implements Expression { outputs.push(result); } - const input = context.parse(args[1], 1, ValueType as Type); + const input = context.parse(args[1], 1, ValueType); if (!input) return null; const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType); diff --git a/src/style-spec/expression/definitions/number_format.ts b/src/style-spec/expression/definitions/number_format.ts index fc8aa94103..4990e0289a 100644 --- a/src/style-spec/expression/definitions/number_format.ts +++ b/src/style-spec/expression/definitions/number_format.ts @@ -37,7 +37,7 @@ export default class NumberFormat implements Expression { currency: Expression | null, minFractionDigits: Expression | null, maxFractionDigits: Expression | null) { - this.type = StringType as Type; + this.type = StringType; this.number = number; this.locale = locale; this.currency = currency; @@ -49,7 +49,7 @@ export default class NumberFormat implements Expression { if (args.length !== 3) return context.error(`Expected two arguments.`) as null; - const number = context.parse(args[1], 1, NumberType as Type); + const number = context.parse(args[1], 1, NumberType); if (!number) return null; const options = (args[2] as any); @@ -58,25 +58,25 @@ export default class NumberFormat implements Expression { let locale = null; if (options['locale']) { - locale = context.parse(options['locale'], 1, StringType as Type); + locale = context.parse(options['locale'], 1, StringType); if (!locale) return null; } let currency = null; if (options['currency']) { - currency = context.parse(options['currency'], 1, StringType as Type); + currency = context.parse(options['currency'], 1, StringType); if (!currency) return null; } let minFractionDigits = null; if (options['min-fraction-digits']) { - minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType as Type); + minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType); if (!minFractionDigits) return null; } let maxFractionDigits = null; if (options['max-fraction-digits']) { - maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType as Type); + maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType); if (!maxFractionDigits) return null; } diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index cbe29638fe..29b7b14cca 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -34,17 +34,17 @@ class Slice implements Expression { return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`) as null; } - const input = context.parse(args[1], 1, ValueType as Type); - const beginIndex = context.parse(args[2], 2, NumberType as Type); + const input = context.parse(args[1], 1, ValueType); + const beginIndex = context.parse(args[2], 2, NumberType); if (!input || !beginIndex) return null; - if (!isValidType(input.type, [array(ValueType as Type), StringType as Type, ValueType as Type])) { + if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) { return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`) as null; } if (args.length === 4) { - const endIndex = context.parse(args[3], 3, NumberType as Type); + const endIndex = context.parse(args[3], 3, NumberType); if (!endIndex) return null; return new Slice(input.type, input, beginIndex, endIndex); } else { diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index c24876066e..7593581b38 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -36,7 +36,7 @@ class Step implements Expression { return context.error(`Expected an even number of arguments.`) as null; } - const input = context.parse(args[1], 1, NumberType as Type); + const input = context.parse(args[1], 1, NumberType); if (!input) return null; const stops: Stops = []; diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index cf582ca601..c34872d5cd 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -286,7 +286,7 @@ class Within implements Expression { geometries: GeoJSONPolygons; constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) { - this.type = BooleanType as Type; + this.type = BooleanType; this.geojson = geojson; this.geometries = geometries; } diff --git a/src/style-spec/expression/types.ts b/src/style-spec/expression/types.ts index c24e7e5c31..8df6b1ee44 100644 --- a/src/style-spec/expression/types.ts +++ b/src/style-spec/expression/types.ts @@ -84,7 +84,7 @@ const valueMemberTypes = [ ColorType, FormattedType, ObjectType, - array(ValueType as ValueTypeT), + array(ValueType), ResolvedImageType ]; @@ -107,7 +107,7 @@ export function checkSubtype(expected: Type, t: Type): string | undefined | null return null; } else if (expected.kind === 'value') { for (const memberType of valueMemberTypes) { - if (!checkSubtype(memberType as Type, t)) { + if (!checkSubtype(memberType, t)) { return null; } } From a4a60a6eaa23ec03c3f5956653acea5a6988a63e Mon Sep 17 00:00:00 2001 From: Oliver Wipfli Date: Sun, 18 Jul 2021 20:51:56 +0200 Subject: [PATCH 046/142] Cast style-spec types at their source --- src/style-spec/expression/types.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/style-spec/expression/types.ts b/src/style-spec/expression/types.ts index 8df6b1ee44..3d6f3858dc 100644 --- a/src/style-spec/expression/types.ts +++ b/src/style-spec/expression/types.ts @@ -45,17 +45,17 @@ export type ArrayType = { export type NativeType = "number" | "string" | "boolean" | "null" | "array" | "object"; -export const NullType = {kind: 'null'}; -export const NumberType = {kind: 'number'}; -export const StringType = {kind: 'string'}; -export const BooleanType = {kind: 'boolean'}; -export const ColorType = {kind: 'color'}; -export const ObjectType = {kind: 'object'}; -export const ValueType = {kind: 'value'}; -export const ErrorType = {kind: 'error'}; -export const CollatorType = {kind: 'collator'}; -export const FormattedType = {kind: 'formatted'}; -export const ResolvedImageType = {kind: 'resolvedImage'}; +export const NullType = {kind: 'null'} as NullTypeT; +export const NumberType = {kind: 'number'} as NumberTypeT; +export const StringType = {kind: 'string'} as StringTypeT; +export const BooleanType = {kind: 'boolean'} as BooleanTypeT; +export const ColorType = {kind: 'color'} as ColorTypeT; +export const ObjectType = {kind: 'object'} as ObjectTypeT; +export const ValueType = {kind: 'value'} as ValueTypeT; +export const ErrorType = {kind: 'error'} as ErrorTypeT; +export const CollatorType = {kind: 'collator'} as CollatorTypeT; +export const FormattedType = {kind: 'formatted'} as FormattedTypeT; +export const ResolvedImageType = {kind: 'resolvedImage'} as ResolvedImageTypeT; export function array(itemType: Type, N?: number | null): ArrayType { return { From 08ddb2c473419d26197d6e026b52a3b040049cd2 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Fri, 23 Jul 2021 18:18:37 +0900 Subject: [PATCH 047/142] Typescript: Remove @mapbox/geojson-types and replace with @types/GeoJSON' (#221) * remove @mapbox/geojson-types and replace with @types/GeoJSON * update toJSON using spread operator --- flow-typed/vector-tile.js | 5 ++--- package-lock.json | 5 ----- package.json | 1 - src/source/geojson_source.ts | 9 ++++----- src/source/geojson_worker_source.ts | 9 ++++----- .../expression/definitions/within.ts | 7 +++---- src/style/style.ts | 3 +-- src/types/non-typed-modules.d.ts | 5 ++--- src/util/vectortile_to_geojson.ts | 18 ++++++------------ 9 files changed, 22 insertions(+), 40 deletions(-) diff --git a/flow-typed/vector-tile.js b/flow-typed/vector-tile.js index c56b04d33d..a5f62c4a5f 100644 --- a/flow-typed/vector-tile.js +++ b/flow-typed/vector-tile.js @@ -1,6 +1,5 @@ import type Pbf from 'pbf'; import type Point from '@mapbox/point-geometry'; -import type { GeoJSONFeature } from '@mapbox/geojson-types'; declare interface VectorTile { layers: {[_: string]: VectorTileLayer}; @@ -21,7 +20,7 @@ declare interface VectorTileFeature { properties: {[_: string]: string | number | boolean}; loadGeometry(): Array>; - toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; } declare module "@mapbox/vector-tile" { @@ -31,7 +30,7 @@ declare module "@mapbox/vector-tile" { declare class VectorTileFeatureImpl { static types: ['Unknown', 'Point', 'LineString', 'Polygon']; - toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; } declare module.exports: { diff --git a/package-lock.json b/package-lock.json index 74571669b1..b3f7f01adc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1458,11 +1458,6 @@ "minimist": "^1.2.5" } }, - "@mapbox/geojson-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", - "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==" - }, "@mapbox/geojsonhint": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@mapbox/geojsonhint/-/geojsonhint-2.2.0.tgz", diff --git a/package.json b/package.json index c94382d396..da03fb1bdd 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "types": "src/index.d.ts", "dependencies": { "@mapbox/geojson-rewind": "^0.5.0", - "@mapbox/geojson-types": "^1.0.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^1.5.0", "@mapbox/point-geometry": "^0.1.0", diff --git a/src/source/geojson_source.ts b/src/source/geojson_source.ts index 001ac6ee36..04c76ab37d 100644 --- a/src/source/geojson_source.ts +++ b/src/source/geojson_source.ts @@ -11,7 +11,6 @@ import type Dispatcher from '../util/dispatcher'; import type Tile from './tile'; import type Actor from '../util/actor'; import type {Callback} from '../types/callback'; -import type {GeoJSON, GeoJSONFeature} from '@mapbox/geojson-types'; import type {GeoJSONSourceSpecification, PromoteIdSpecification} from '../style-spec/types'; /** @@ -71,7 +70,7 @@ class GeoJSONSource extends Evented implements Source { isTileClipped: boolean; reparseOverscaled: boolean; - _data: GeoJSON | string; + _data: GeoJSON.GeoJSON | string; _options: any; workerOptions: any; map: Map; @@ -181,7 +180,7 @@ class GeoJSONSource extends Evented implements Source { * @param {Object|string} data A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files. * @returns {GeoJSONSource} this */ - setData(data: GeoJSON | string) { + setData(data: GeoJSON.GeoJSON | string) { this._data = data; this.fire(new Event('dataloading', {dataType: 'source'})); this._updateWorkerData((err) => { @@ -220,7 +219,7 @@ class GeoJSONSource extends Evented implements Source { * @param callback A callback to be called when the features are retrieved (`(error, features) => { ... }`). * @returns {GeoJSONSource} this */ - getClusterChildren(clusterId: number, callback: Callback>) { + getClusterChildren(clusterId: number, callback: Callback>) { this.actor.send('geojson.getClusterChildren', {clusterId, source: this.id}, callback); return this; } @@ -250,7 +249,7 @@ class GeoJSONSource extends Evented implements Source { * }) * }); */ - getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback>) { + getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback>) { this.actor.send('geojson.getClusterLeaves', { source: this.id, clusterId, diff --git a/src/source/geojson_worker_source.ts b/src/source/geojson_worker_source.ts index cf1ddf3707..de8281df97 100644 --- a/src/source/geojson_worker_source.ts +++ b/src/source/geojson_worker_source.ts @@ -21,7 +21,6 @@ import type StyleLayerIndex from '../style/style_layer_index'; import type {LoadVectorDataCallback} from './vector_tile_worker_source'; import type {RequestParameters, ResponseCallback} from '../util/ajax'; import type {Callback} from '../types/callback'; -import type {GeoJSONFeature} from '@mapbox/geojson-types'; export type LoadGeoJSONParameters = { request?: RequestParameters, @@ -40,8 +39,8 @@ export interface GeoJSONIndex { getTile(z: number, x: number, y: number): any; // supercluster methods getClusterExpansionZoom(clusterId: number): number; - getChildren(clusterId: number): Array; - getLeaves(clusterId: number, limit: number, offset: number): Array; + getChildren(clusterId: number): Array; + getLeaves(clusterId: number, limit: number, offset: number): Array; } function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataCallback) { @@ -312,7 +311,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { getClusterChildren(params: { clusterId: number - }, callback: Callback>) { + }, callback: Callback>) { try { callback(null, this._geoJSONIndex.getChildren(params.clusterId)); } catch (e) { @@ -324,7 +323,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { clusterId: number, limit: number, offset: number - }, callback: Callback>) { + }, callback: Callback>) { try { callback(null, this._geoJSONIndex.getLeaves(params.clusterId, params.limit, params.offset)); } catch (e) { diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index c34872d5cd..be0d15e7ce 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -4,11 +4,10 @@ import {BooleanType} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; -import type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson-types'; import Point from '@mapbox/point-geometry'; import type {CanonicalTileID} from '../../../source/tile_id'; -type GeoJSONPolygons = GeoJSONPolygon | GeoJSONMultiPolygon; +type GeoJSONPolygons = GeoJSON.Polygon | GeoJSON.MultiPolygon; // minX, minY, maxX, maxY type BBox = [number, number, number, number]; @@ -282,10 +281,10 @@ function linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPol class Within implements Expression { type: Type; - geojson: GeoJSON; + geojson: GeoJSON.GeoJSON; geometries: GeoJSONPolygons; - constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) { + constructor(geojson: GeoJSON.GeoJSON, geometries: GeoJSONPolygons) { this.type = BooleanType; this.geojson = geojson; this.geometries = geometries; diff --git a/src/style/style.ts b/src/style/style.ts index e1230cfb30..12d20d7308 100644 --- a/src/style/style.ts +++ b/src/style/style.ts @@ -52,7 +52,6 @@ import type EvaluationParameters from './evaluation_parameters'; import type {Placement} from '../symbol/placement'; import type {Cancelable} from '../types/cancelable'; import type {RequestParameters, ResponseCallback} from '../util/ajax'; -import type {GeoJSON} from '@mapbox/geojson-types'; import type { LayerSpecification, FilterSpecification, @@ -635,7 +634,7 @@ class Style extends Evented { * @param {string} id id of the source * @param {GeoJSON|string} data GeoJSON source */ - setGeoJSONSourceData(id: string, data: GeoJSON | string) { + setGeoJSONSourceData(id: string, data: GeoJSON.GeoJSON | string) { this._checkLoaded(); assert(this.sourceCaches[id] !== undefined, 'There is no source with this ID'); diff --git a/src/types/non-typed-modules.d.ts b/src/types/non-typed-modules.d.ts index 359275a414..85e6663672 100644 --- a/src/types/non-typed-modules.d.ts +++ b/src/types/non-typed-modules.d.ts @@ -1,6 +1,5 @@ import type Pbf from 'pbf'; import type Point from '@mapbox/point-geometry'; -import type {GeoJSONFeature} from '@mapbox/geojson-types'; declare module "@mapbox/mapbox-gl-supported" { type isSupported = { @@ -151,7 +150,7 @@ declare global { [_: string]: string | number | boolean }; loadGeometry(): Array>; - toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; } } @@ -163,7 +162,7 @@ declare module "@mapbox/vector-tile" { class VectorTileFeatureImpl { static types: ["Unknown", "Point", "LineString", "Polygon"]; - toGeoJSON(x: number, y: number, z: number): GeoJSONFeature; + toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; } let __exports: { diff --git a/src/util/vectortile_to_geojson.ts b/src/util/vectortile_to_geojson.ts index 97c002fcb5..1c732b8582 100644 --- a/src/util/vectortile_to_geojson.ts +++ b/src/util/vectortile_to_geojson.ts @@ -1,8 +1,6 @@ -import type {GeoJSONGeometry} from '@mapbox/geojson-types'; - class Feature { type: "Feature"; - _geometry: GeoJSONGeometry | undefined | null; + _geometry: GeoJSON.Geometry | undefined | null; properties: {}; id: number | string | void; @@ -20,7 +18,7 @@ class Feature { this.id = id; } - get geometry(): GeoJSONGeometry | undefined | null { + get geometry(): GeoJSON.Geometry | undefined | null { if (this._geometry === undefined) { this._geometry = this._vectorTileFeature.toGeoJSON( (this._vectorTileFeature as any)._x, @@ -30,18 +28,14 @@ class Feature { return this._geometry; } - set geometry(g: GeoJSONGeometry | undefined | null) { + set geometry(g: GeoJSON.Geometry | undefined | null) { this._geometry = g; } toJSON() { - const json = { - geometry: this.geometry - }; - for (const i in this) { - if (i === '_geometry' || i === '_vectorTileFeature') continue; - json[i] = (this as any)[i]; - } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const {_geometry, _vectorTileFeature, ...json} = this; + json.geometry = this.geometry; return json; } } From 6e966bdc3bb50f607591bca707774fb49eef1910 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Fri, 23 Jul 2021 23:17:00 +0900 Subject: [PATCH 048/142] add type to import GLSL as strings (#222) --- src/types/glsl.d.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/types/glsl.d.ts diff --git a/src/types/glsl.d.ts b/src/types/glsl.d.ts new file mode 100644 index 0000000000..d15c624d3c --- /dev/null +++ b/src/types/glsl.d.ts @@ -0,0 +1,4 @@ +declare module '*.glsl' { + const value: string; + export default value; +} From 0e57cf8e35be453354511037a9ced9b1df4b3f74 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sat, 24 Jul 2021 03:14:17 +0900 Subject: [PATCH 049/142] Typescript: Use library to handle Window type (#223) * add window type lib * remove internal window type file and use lib --- package-lock.json | 11 ++- package.json | 1 + src/types/window.ts | 167 -------------------------------------------- 3 files changed, 10 insertions(+), 169 deletions(-) delete mode 100644 src/types/window.ts diff --git a/package-lock.json b/package-lock.json index b3f7f01adc..525b0e8915 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2391,8 +2391,7 @@ "@types/node": { "version": "16.3.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.3.tgz", - "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==", - "dev": true + "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==" }, "@types/node-notifier": { "version": "8.0.1", @@ -2664,6 +2663,14 @@ "vfile-message": "*" } }, + "@types/window-or-global": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/window-or-global/-/window-or-global-1.0.4.tgz", + "integrity": "sha512-+tJmApNoyWOxINwhTuMD8b9UegcB8HUSoLzBHPKIxq2XMnmUKCwPV2/+n8qkjkabx2diA68hDSAohESC9uC2kg==", + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "4.28.3", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz", diff --git a/package.json b/package.json index da03fb1bdd..c4dab67ca9 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@mapbox/unitbezier": "^0.0.0", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", + "@types/window-or-global": "^1.0.4", "csscolorparser": "~1.0.3", "earcut": "^2.2.2", "geojson-vt": "^3.2.1", diff --git a/src/types/window.ts b/src/types/window.ts deleted file mode 100644 index 3eb6410fa5..0000000000 --- a/src/types/window.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* global EventTarget, IDBEnvironment */ - -export interface Window extends EventTarget, IDBEnvironment { - readonly caches: CacheStorage; - readonly clientInformation: Navigator; - readonly closed: boolean; - defaultStatus: string; - readonly devicePixelRatio: number; - readonly document: Document; - readonly doNotTrack: string; - readonly frameElement: Element; - readonly frames: Window; - readonly history: History; - readonly innerHeight: number; - readonly innerWidth: number; - readonly isSecureContext: boolean; - readonly length: number; - readonly location: Location; - readonly origin: string; - name: string; - readonly navigator: Navigator; - readonly InstallTrigger: any; - offscreenBuffering: string | boolean; - onabort: (ev: UIEvent) => boolean | undefined | null; - onafterprint: (ev: Event) => boolean | undefined | null; - onbeforeprint: (ev: Event) => boolean | undefined | null; - onbeforeunload: (ev: Event) => boolean | undefined | null; - onblur: (ev: FocusEvent) => boolean | undefined | null; - oncanplay: (ev: Event) => boolean | undefined | null; - oncanplaythrough: (ev: Event) => boolean | undefined | null; - onchange: (ev: Event) => boolean | undefined | null; - onclick: (ev: MouseEvent) => boolean | undefined | null; - oncompassneedscalibration: (ev: Event) => boolean | undefined | null; - oncontextmenu: (ev: Event) => boolean | undefined | null; - ondblclick: (ev: MouseEvent) => boolean | undefined | null; - ondevicelight: (ev: Event) => boolean | undefined | null; - ondevicemotion: (ev: Event) => boolean | undefined | null; - ondeviceorientation: (ev: Event) => boolean | undefined | null; - ondrag: (ev: DragEvent) => boolean | undefined | null; - ondragend: (ev: DragEvent) => boolean | undefined | null; - ondragenter: (ev: DragEvent) => boolean | undefined | null; - ondragleave: (ev: DragEvent) => boolean | undefined | null; - ondragover: (ev: DragEvent) => boolean | undefined | null; - ondragstart: (ev: DragEvent) => boolean | undefined | null; - ondrop: (ev: DragEvent) => boolean | undefined | null; - ondurationchange: (ev: Event) => boolean | undefined | null; - onemptied: (ev: Event) => boolean | undefined | null; - onended: (ev: Event) => boolean | undefined | null; - onerror: (ev: Event) => boolean | undefined | null; - onfocus: (ev: FocusEvent) => boolean | undefined | null; - onhashchange: (ev: Event) => boolean | undefined | null; - oninput: (ev: Event) => boolean | undefined | null; - oninvalid: (ev: Event) => boolean | undefined | null; - onkeydown: (ev: KeyboardEvent) => boolean | undefined | null; - onkeypress: (ev: KeyboardEvent) => boolean | undefined | null; - onkeyup: (ev: KeyboardEvent) => boolean | undefined | null; - onload: (ev: Event) => boolean | undefined | null; - onloadeddata: (ev: Event) => boolean | undefined | null; - onloadedmetadata: (ev: Event) => boolean | undefined | null; - onloadstart: (ev: Event) => boolean | undefined | null; - onmessage: (ev: MessageEvent) => boolean | undefined | null; - onmousedown: (ev: MouseEvent) => boolean | undefined | null; - onmouseenter: (ev: MouseEvent) => boolean | undefined | null; - onmouseleave: (ev: MouseEvent) => boolean | undefined | null; - onmousemove: (ev: MouseEvent) => boolean | undefined | null; - onmouseout: (ev: MouseEvent) => boolean | undefined | null; - onmouseover: (ev: MouseEvent) => boolean | undefined | null; - onmouseup: (ev: MouseEvent) => boolean | undefined | null; - onmousewheel: (ev: WheelEvent) => boolean | undefined | null; - onoffline: (ev: Event) => boolean | undefined | null; - ononline: (ev: Event) => boolean | undefined | null; - onorientationchange: (ev: Event) => boolean | undefined | null; - onpagehide: (ev: Event) => boolean | undefined | null; - onpageshow: (ev: Event) => boolean | undefined | null; - onpause: (ev: Event) => boolean | undefined | null; - onplay: (ev: Event) => boolean | undefined | null; - onplaying: (ev: Event) => boolean | undefined | null; - onpopstate: (ev: Event) => boolean | undefined | null; - onprogress: (ev: ProgressEvent) => boolean | undefined | null; - onratechange: (ev: Event) => boolean | undefined | null; - onreadystatechange: (ev: ProgressEvent) => boolean | undefined | null; - onreset: (ev: Event) => boolean | undefined | null; - onresize: (ev: UIEvent) => boolean | undefined | null; - onscroll: (ev: UIEvent) => boolean | undefined | null; - onseeked: (ev: Event) => boolean | undefined | null; - onseeking: (ev: Event) => boolean | undefined | null; - onselect: (ev: UIEvent) => boolean | undefined | null; - onstalled: (ev: Event) => boolean | undefined | null; - onstorage: (ev: Event) => boolean | undefined | null; - onsubmit: (ev: Event) => boolean | undefined | null; - onsuspend: (ev: Event) => boolean | undefined | null; - ontimeupdate: (ev: Event) => boolean | undefined | null; - ontouchcancel: (ev: TouchEvent) => boolean | undefined | null; - ontouchend: (ev: TouchEvent) => boolean | undefined | null; - ontouchmove: (ev: TouchEvent) => boolean | undefined | null; - ontouchstart: (ev: TouchEvent) => boolean | undefined | null; - onunload: (ev: Event) => boolean | undefined | null; - onvolumechange: (ev: Event) => boolean | undefined | null; - onwaiting: (ev: Event) => boolean | undefined | null; - opener: Window; - orientation: string | number; - readonly outerHeight: number; - readonly outerWidth: number; - readonly pageXOffset: number; - readonly pageYOffset: number; - readonly parent: Window; - readonly performance: Performance; - readonly screen: Screen; - readonly screenLeft: number; - readonly screenTop: number; - readonly screenX: number; - readonly screenY: number; - readonly scrollX: number; - readonly scrollY: number; - readonly self: Window; - status: string; - readonly top: Window; - readonly window: Window; - Blob: typeof Blob; - HTMLImageElement: typeof HTMLImageElement; - HTMLElement: typeof HTMLElement; - HTMLVideoElement: typeof HTMLVideoElement; - HTMLCanvasElement: typeof HTMLCanvasElement; - Image: typeof Image; - ImageData: typeof ImageData; - URL: typeof URL; - URLSearchParams: typeof URLSearchParams; - WebGLFramebuffer: typeof WebGLFramebuffer; - WheelEvent: typeof WheelEvent; - Worker: typeof Worker; - XMLHttpRequest: typeof XMLHttpRequest; - Request: typeof Request; - AbortController: typeof AbortController; - alert(message?: string): void; - blur(): void; - captureEvents(): void; - close(): void; - confirm(message?: string): boolean; - focus(): void; - getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; - getMatchedCSSRules(elt: Element, pseudoElt?: string): CSSRuleList; - getSelection(): Selection; - moveBy(x?: number, y?: number): void; - moveTo(x?: number, y?: number): void; - msWriteProfilerMark(profilerMarkName: string): void; - open(url?: string, target?: string, features?: string, replace?: boolean): Window; - postMessage(message: unknown, targetOrigin: string, transfer?: ArrayBuffer[]): void; - print(): void; - prompt(message?: string, _default?: string): string | null; - releaseEvents(): void; - resizeBy(x?: number, y?: number): void; - resizeTo(x?: number, y?: number): void; - scroll(x?: number, y?: number): void; - scrollBy(x?: number, y?: number): void; - scrollTo(x?: number, y?: number): void; - stop(): void; - clearInterval(intervalId?: number): void; - clearTimeout(timeoutId?: number): void; - setTimeout(callback: () => void, ms?: number): number; - setInterval(callback: () => void, ms?: number): number; - requestAnimationFrame(callback: (timestamp: number) => void): number; - cancelAnimationFrame(handle: number): void; - msRequestAnimationFrame(callback: (timestamp: number) => void): number; - msCancelAnimationFrame(handle: number): void; - webkitRequestAnimationFrame(callback: (timestamp: number) => void): number; - webkitCancelAnimationFrame(handle: number): void; -} From 7bb152f6654c9f9797794c4686c30fdf11dc41d8 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 24 Jul 2021 23:04:59 +0300 Subject: [PATCH 050/142] Fix issues related to possibly evaluated design --- src/data/bucket/fill_bucket.ts | 3 +- src/data/bucket/line_bucket.ts | 4 +- src/data/bucket/pattern_bucket_features.ts | 6 +- src/data/bucket/symbol_bucket.ts | 19 +- .../expression/definitions/format.ts | 2 +- src/style/properties.ts | 79 ++------ src/style/style_layer.ts | 2 +- .../style_layer/background_style_layer.ts | 4 +- .../background_style_layer_properties.ts | 16 +- src/style/style_layer/circle_style_layer.ts | 12 +- .../circle_style_layer_properties.ts | 46 +++-- src/style/style_layer/custom_style_layer.ts | 4 +- .../style_layer/fill_extrusion_style_layer.ts | 10 +- .../fill_extrusion_style_layer_properties.ts | 31 ++- src/style/style_layer/fill_style_layer.ts | 12 +- .../fill_style_layer_properties.ts | 34 +++- src/style/style_layer/heatmap_style_layer.ts | 8 +- .../heatmap_style_layer_properties.ts | 22 ++- .../style_layer/hillshade_style_layer.ts | 4 +- .../hillshade_style_layer_properties.ts | 22 ++- src/style/style_layer/line_style_layer.ts | 12 +- .../line_style_layer_properties.ts | 58 ++++-- src/style/style_layer/raster_style_layer.ts | 4 +- .../raster_style_layer_properties.ts | 28 ++- src/style/style_layer/symbol_style_layer.ts | 15 +- .../symbol_style_layer_properties.ts | 176 ++++++++++++------ 26 files changed, 382 insertions(+), 251 deletions(-) diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index 517cfb32ea..c711d3a1d7 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -29,7 +29,6 @@ import type VertexBuffer from '../../gl/vertex_buffer'; import type Point from '@mapbox/point-geometry'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; -import {PossiblyEvaluatedPropertyValue} from '../../style/properties'; class FillBucket implements Bucket { index: number; @@ -76,7 +75,7 @@ class FillBucket implements Bucket { populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID) { this.hasPattern = hasPattern('fill', this.layers, options); - const fillSortKey = this.layers[0].layout.get('fill-sort-key') as PossiblyEvaluatedPropertyValue; + const fillSortKey = this.layers[0].layout.get('fill-sort-key'); const sortFeaturesByKey = !fillSortKey.isConstant(); const bucketFeatures = []; diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index b516018edc..2735713f88 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -130,7 +130,7 @@ class LineBucket implements Bucket { this.lineClipsArray = []; this.gradients = {}; this.layers.forEach(layer => { - this.gradients[layer.id] = {}; + this.gradients[layer.id] = {} as GradientTexture; }); this.layoutVertexArray = new LineLayoutArray(); @@ -145,7 +145,7 @@ class LineBucket implements Bucket { populate(features: Array, options: PopulateParameters, canonical: CanonicalTileID) { this.hasPattern = hasPattern('line', this.layers, options); - const lineSortKey = this.layers[0].layout.get('line-sort-key') as any; + const lineSortKey = this.layers[0].layout.get('line-sort-key'); const sortFeaturesByKey = !lineSortKey.isConstant(); const bucketFeatures = []; diff --git a/src/data/bucket/pattern_bucket_features.ts b/src/data/bucket/pattern_bucket_features.ts index 5d15084021..7fc7dc9011 100644 --- a/src/data/bucket/pattern_bucket_features.ts +++ b/src/data/bucket/pattern_bucket_features.ts @@ -6,15 +6,17 @@ import type { BucketFeature, PopulateParameters } from '../bucket'; +import {PossiblyEvaluated} from '../../style/properties'; type PatternStyleLayers = Array | Array | Array; +// HM TODO: this is not the right way to do this when it comes to typed code... export function hasPattern(type: string, layers: PatternStyleLayers, options: PopulateParameters) { const patterns = options.patternDependencies; let hasPattern = false; for (const layer of layers) { - const patternProperty = layer.paint.get(`${type}-pattern`) as any; + const patternProperty = (layer.paint as PossiblyEvaluated).get(`${type}-pattern`); if (!patternProperty.isConstant()) { hasPattern = true; } @@ -33,7 +35,7 @@ export function hasPattern(type: string, layers: PatternStyleLayers, options: Po export function addPatternDependencies(type: string, layers: PatternStyleLayers, patternFeature: BucketFeature, zoom: number, options: PopulateParameters) { const patterns = options.patternDependencies; for (const layer of layers) { - const patternProperty = layer.paint.get(`${type}-pattern`); + const patternProperty = (layer.paint as PossiblyEvaluated).get(`${type}-pattern`); const patternPropertyValue = patternProperty.value; if (patternPropertyValue.kind !== "constant") { diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index 824e6729d3..d9a66b3bce 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -47,7 +47,7 @@ import type { PopulateParameters } from '../bucket'; import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types'; -import type {StructArray, StructArrayMember} from '../../util/struct_array'; +import type {StructArray, StructArrayMember, ViewType} from '../../util/struct_array'; import SymbolStyleLayer from '../../style/style_layer/symbol_style_layer'; import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; @@ -56,7 +56,6 @@ import type {SymbolQuad} from '../../symbol/quads'; import type {SizeData} from '../../symbol/symbol_size'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; -import type {PossiblyEvaluatedPropertyValue} from '../../style/properties'; export type SingleCollisionBox = { x1: number, @@ -105,7 +104,7 @@ export type SortKeyRange = { // { name: 'a_fade_opacity', components: 1, type: 'Uint32' } // ]; const shaderOpacityAttributes = [ - {name: 'a_fade_opacity', components: 1, type: 'Uint8', offset: 0} + {name: 'a_fade_opacity', components: 1, type: 'Uint8' as ViewType, offset: 0} ]; function addVertex(array, anchorX, anchorY, ox, oy, tx, ty, sizeVertex, isSDF: boolean, pixelOffsetX, pixelOffsetY, minFontScaleX, minFontScaleY) { @@ -373,7 +372,7 @@ class SymbolBucket implements Bucket { this.iconSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['icon-size']); const layout = this.layers[0].layout; - const sortKey = layout.get('symbol-sort-key') as PossiblyEvaluatedPropertyValue; + const sortKey = layout.get('symbol-sort-key'); const zOrder = layout.get('symbol-z-order'); this.canOverlap = layout.get('text-allow-overlap') || @@ -420,9 +419,9 @@ class SymbolBucket implements Bucket { const layer = this.layers[0]; const layout = layer.layout; - const textFont = layout.get('text-font') as PossiblyEvaluatedPropertyValue; - const textField = layout.get('text-field') as PossiblyEvaluatedPropertyValue; - const iconImage = layout.get('icon-image') as PossiblyEvaluatedPropertyValue; + const textFont = layout.get('text-font'); + const textField = layout.get('text-field'); + const iconImage = layout.get('icon-image'); const hasText = (textField.value.kind !== 'constant' || (textField.value.value instanceof Formatted && !textField.value.value.isEmpty()) || @@ -433,7 +432,7 @@ class SymbolBucket implements Bucket { // the only way to distinguish between null returned from a coalesce statement with no valid images // and null returned because icon-image wasn't defined is to check whether or not iconImage.parameters is an empty object const hasIcon = iconImage.value.kind !== 'constant' || !!iconImage.value.value || Object.keys(iconImage.parameters).length > 0; - const symbolSortKey = layout.get('symbol-sort-key') as PossiblyEvaluatedPropertyValue; + const symbolSortKey = layout.get('symbol-sort-key'); this.features = []; @@ -630,7 +629,7 @@ class SymbolBucket implements Bucket { const indexArray = arrays.indexArray; const layoutVertexArray = arrays.layoutVertexArray; - const segment = arrays.segments.prepareSegment(4 * quads.length, layoutVertexArray, indexArray, this.canOverlap ? feature.sortKey : undefined); + const segment = arrays.segments.prepareSegment(4 * quads.length, layoutVertexArray, indexArray, this.canOverlap ? feature.sortKey as number : undefined); const glyphOffsetArrayStart = this.glyphOffsetArray.length; const vertexStartIndex = segment.vertexLength; @@ -763,7 +762,7 @@ class SymbolBucket implements Bucket { verticalIconEndIndex: number ): CollisionArrays { - const collisionArrays = {}; + const collisionArrays = {} as CollisionArrays; for (let k = textStartIndex; k < textEndIndex; k++) { const box: CollisionBox = (collisionBoxArray.get(k) as any); collisionArrays.textBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, anchorPointX: box.anchorPointX, anchorPointY: box.anchorPointY}; diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index e081fd6e0e..48195b7fdc 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -130,7 +130,7 @@ export default class FormatExpression implements Expression { } serialize() { - const serialized = ["format"]; + const serialized = ["format"] as (string | {})[]; for (const section of this.sections) { serialized.push(section.content.serialize()); const options = {}; diff --git a/src/style/properties.ts b/src/style/properties.ts index 95dd16dcfd..614b19b9a8 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -21,10 +21,6 @@ import type { CompositeExpression } from '../style-spec/expression'; -type $ObjMap any> = { - [K in keyof T]: F extends (v: T[K]) => infer R ? R : never; -}; - type TimePoint = number; export type CrossFaded = { @@ -160,14 +156,6 @@ class TransitionablePropertyValue { } } -/** - * A helper type: given an object type `Properties` whose values are each of type `Property`, it calculates - * an object type with the same keys and values of type `TransitionablePropertyValue`. - * - * @private - */ -type TransitionablePropertyValues = $ObjMap(p: Property) => TransitionablePropertyValue>; - /** * `Transitionable` stores a map of all (property name, `TransitionablePropertyValue`) pairs for paint properties of a * given layer type. It can calculate the `TransitioningPropertyValue`s for all of them at once, producing a @@ -175,7 +163,7 @@ type TransitionablePropertyValues = $ObjMap(p: * * @private */ -export class Transitionable { +export class Transitionable { _properties: Properties; _values: TransitionablePropertyValues; @@ -184,11 +172,11 @@ export class Transitionable { this._values = (Object.create(properties.defaultTransitionablePropertyValues) as any); } - getValue(name: S): PropertyValueSpecification | void { + getValue(name: S): PropertyValueSpecification | void { return clone(this._values[name].value.value); } - setValue(name: S, value: PropertyValueSpecification | void) { + setValue(name: S, value: PropertyValueSpecification | void) { if (!Object.prototype.hasOwnProperty.call(this._values, name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } @@ -197,11 +185,11 @@ export class Transitionable { this._values[name].value = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value)); } - getTransition(name: S): TransitionSpecification | void { + getTransition(name: S): TransitionSpecification | void { return clone(this._values[name].transition); } - setTransition(name: S, value: TransitionSpecification | void) { + setTransition(name: S, value: TransitionSpecification | void) { if (!Object.prototype.hasOwnProperty.call(this._values, name)) { this._values[name] = new TransitionablePropertyValue(this._values[name].property); } @@ -305,14 +293,6 @@ class TransitioningPropertyValue { } } -/** - * A helper type: given an object type `Properties` whose values are each of type `Property`, it calculates - * an object type with the same keys and values of type `TransitioningPropertyValue`. - * - * @private - */ -type TransitioningPropertyValues = $ObjMap(p: Property) => TransitioningPropertyValue>; - /** * `Transitioning` stores a map of all (property name, `TransitioningPropertyValue`) pairs for paint properties of a * given layer type. It can calculate the possibly-evaluated values for all of them at once, producing a @@ -320,7 +300,7 @@ type TransitioningPropertyValues = $ObjMap(p: P * * @private */ -export class Transitioning { +export class Transitioning { _properties: Properties; _values: TransitioningPropertyValues; @@ -353,14 +333,6 @@ export class Transitioning { // ------- Layout ------- -/** - * A helper type: given an object type `Properties` whose values are each of type `Property`, it calculates - * an object type with the same keys and values of type `PropertyValue`. - * - * @private - */ -type PropertyValues = $ObjMap(p: Property) => PropertyValue>; - /** * Because layout properties are not transitionable, they have a simpler representation and evaluation chain than * paint properties: `PropertyValue`s are possibly evaluated, producing possibly evaluated values, which are then @@ -372,7 +344,7 @@ type PropertyValues = $ObjMap(p: Property * * @private */ -export class Layout { +export class Layout { _properties: Properties; _values: PropertyValues; @@ -381,18 +353,18 @@ export class Layout { this._values = (Object.create(properties.defaultPropertyValues) as any); } - getValue(name: S) { + getValue(name: S) { return clone(this._values[name].value); } - setValue(name: S, value: any) { - this._values[name] = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value)); + setValue(name: S, value: any) { + this._values[name] = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value)) as any; } serialize() { const result: any = {}; for (const property of Object.keys(this._values)) { - const value = this.getValue(property); + const value = this.getValue(property as keyof PropertyValues); if (value !== undefined) { result[property] = value; } @@ -482,40 +454,21 @@ export class PossiblyEvaluatedPropertyValue { } } -/** - * A helper type: given an object type `Properties` whose values are each of type `Property`, it calculates - * an object type with the same keys, and values of type `R`. - * - * For properties that don't allow data-driven values, `R` is a scalar type such as `number`, `string`, or `Color`. - * For data-driven properties, it is `PossiblyEvaluatedPropertyValue`. Critically, the type definitions are set up - * in a way that allows flow to know which of these two cases applies for any given property name, and if you attempt - * to use a `PossiblyEvaluatedPropertyValue` as if it was a scalar, or vice versa, you will get a type error. (However, - * there's at least one case in which flow fails to produce a type error that you should be aware of: in a context such - * as `layer.paint.get('foo-opacity') === 0`, if `foo-opacity` is data-driven, than the left-hand side is of type - * `PossiblyEvaluatedPropertyValue`, but flow will not complain about comparing this to a number using `===`. - * See https://github.com/facebook/flow/issues/2359.) - * - * There's also a third, special case possiblity for `R`: for cross-faded properties, it's `?CrossFaded`. - * - * @private - */ -type PossiblyEvaluatedPropertyValues = $ObjMap(p: Property) => R>; - /** * `PossiblyEvaluated` stores a map of all (property name, `R`) pairs for paint or layout properties of a * given layer type. * @private */ -export class PossiblyEvaluated { +export class PossiblyEvaluated { _properties: Properties; - _values: PossiblyEvaluatedPropertyValues; + _values: PossibleEvaluatedProps; constructor(properties: Properties) { this._properties = properties; this._values = (Object.create(properties.defaultPossiblyEvaluatedValues) as any); } - get(name: S): PossiblyEvaluatedPropertyValues[S] { + get(name: S): PossibleEvaluatedProps[S] { return this._values[name]; } } @@ -642,7 +595,7 @@ export class CrossFadedDataDrivenProperty extends DataDrivenProperty { * * @private */ -export class Properties { +export class Properties { properties: Props; defaultPropertyValues: PropertyValues; defaultTransitionablePropertyValues: TransitionablePropertyValues; diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index e8649e05b0..31f57fca47 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -16,7 +16,7 @@ import type {Bucket} from '../data/bucket'; import type Point from '@mapbox/point-geometry'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; -import type EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; +import EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; import type Transform from '../geo/transform'; import type { diff --git a/src/style/style_layer/background_style_layer.ts b/src/style/style_layer/background_style_layer.ts index e70feac55a..e3988c3626 100644 --- a/src/style/style_layer/background_style_layer.ts +++ b/src/style/style_layer/background_style_layer.ts @@ -1,6 +1,6 @@ import StyleLayer from '../style_layer'; -import properties from './background_style_layer_properties'; +import properties, {PaintPropsPossiblyEvaluated} from './background_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import type {PaintProps} from './background_style_layer_properties'; @@ -9,7 +9,7 @@ import type {LayerSpecification} from '../../style-spec/types'; class BackgroundStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); diff --git a/src/style/style_layer/background_style_layer_properties.ts b/src/style/style_layer/background_style_layer_properties.ts index 6b010648ee..be724c6a6e 100644 --- a/src/style/style_layer/background_style_layer_properties.ts +++ b/src/style/style_layer/background_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,6 +18,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type PaintProps = { @@ -25,10 +27,16 @@ export type PaintProps = { "background-opacity": DataConstantProperty }; +export type PaintPropsPossiblyEvaluated = { + "background-color": Color, + "background-pattern": PossiblyEvaluatedPropertyValue, + "background-opacity": number +}; + const paint: Properties = new Properties({ - "background-color": new DataConstantProperty(styleSpec["paint_background"]["background-color"]), - "background-pattern": new CrossFadedProperty(styleSpec["paint_background"]["background-pattern"]), - "background-opacity": new DataConstantProperty(styleSpec["paint_background"]["background-opacity"]), + "background-color": new DataConstantProperty(styleSpec["paint_background"]["background-color"] as any as StylePropertySpecification), + "background-pattern": new CrossFadedProperty(styleSpec["paint_background"]["background-pattern"] as any as StylePropertySpecification), + "background-opacity": new DataConstantProperty(styleSpec["paint_background"]["background-opacity"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/circle_style_layer.ts b/src/style/style_layer/circle_style_layer.ts index 114bef0e91..dc73207bbb 100644 --- a/src/style/style_layer/circle_style_layer.ts +++ b/src/style/style_layer/circle_style_layer.ts @@ -3,7 +3,7 @@ import StyleLayer from '../style_layer'; import CircleBucket from '../../data/bucket/circle_bucket'; import {polygonIntersectsBufferedPoint} from '../../util/intersection_tests'; import {getMaximumPaintValue, translateDistance, translate} from '../query_utils'; -import properties from './circle_style_layer_properties'; +import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './circle_style_layer_properties'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties'; import {vec4} from 'gl-matrix'; import Point from '@mapbox/point-geometry'; @@ -16,11 +16,11 @@ import type {LayerSpecification} from '../../style-spec/types'; class CircleStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; - layout: PossiblyEvaluated; + layout: PossiblyEvaluated; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); @@ -30,14 +30,14 @@ class CircleStyleLayer extends StyleLayer { return new CircleBucket(parameters); } - queryRadius(bucket: Bucket): number { + queryRadius = (bucket: Bucket): number => { const circleBucket: CircleBucket = (bucket as any); return getMaximumPaintValue('circle-radius', this, circleBucket) + getMaximumPaintValue('circle-stroke-width', this, circleBucket) + translateDistance(this.paint.get('circle-translate')); } - queryIntersectsFeature( + queryIntersectsFeature = ( queryGeometry: Array, feature: VectorTileFeature, featureState: FeatureState, @@ -46,7 +46,7 @@ class CircleStyleLayer extends StyleLayer { transform: Transform, pixelsToTileUnits: number, pixelPosMatrix: Float32Array - ): boolean { + ): boolean => { const translatedPolygon = translate(queryGeometry, this.paint.get('circle-translate'), this.paint.get('circle-translate-anchor'), diff --git a/src/style/style_layer/circle_style_layer_properties.ts b/src/style/style_layer/circle_style_layer_properties.ts index ef9a294df1..8a93fa1518 100644 --- a/src/style/style_layer/circle_style_layer_properties.ts +++ b/src/style/style_layer/circle_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,13 +18,18 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type LayoutProps = { "circle-sort-key": DataDrivenProperty }; +export type LayoutPropsPossiblyEvaluated = { + "circle-sort-key": PossiblyEvaluatedPropertyValue +}; + const layout: Properties = new Properties({ - "circle-sort-key": new DataDrivenProperty(styleSpec["layout_circle"]["circle-sort-key"]), + "circle-sort-key": new DataDrivenProperty(styleSpec["layout_circle"]["circle-sort-key"] as any as StylePropertySpecification), }); export type PaintProps = { @@ -40,18 +46,32 @@ export type PaintProps = { "circle-stroke-opacity": DataDrivenProperty }; +export type PaintPropsPossiblyEvaluated = { + "circle-radius": PossiblyEvaluatedPropertyValue, + "circle-color": PossiblyEvaluatedPropertyValue, + "circle-blur": PossiblyEvaluatedPropertyValue, + "circle-opacity": PossiblyEvaluatedPropertyValue, + "circle-translate": [number, number], + "circle-translate-anchor": "map" | "viewport", + "circle-pitch-scale": "map" | "viewport", + "circle-pitch-alignment": "map" | "viewport", + "circle-stroke-width": PossiblyEvaluatedPropertyValue, + "circle-stroke-color": PossiblyEvaluatedPropertyValue, + "circle-stroke-opacity": PossiblyEvaluatedPropertyValue +}; + const paint: Properties = new Properties({ - "circle-radius": new DataDrivenProperty(styleSpec["paint_circle"]["circle-radius"]), - "circle-color": new DataDrivenProperty(styleSpec["paint_circle"]["circle-color"]), - "circle-blur": new DataDrivenProperty(styleSpec["paint_circle"]["circle-blur"]), - "circle-opacity": new DataDrivenProperty(styleSpec["paint_circle"]["circle-opacity"]), - "circle-translate": new DataConstantProperty(styleSpec["paint_circle"]["circle-translate"]), - "circle-translate-anchor": new DataConstantProperty(styleSpec["paint_circle"]["circle-translate-anchor"]), - "circle-pitch-scale": new DataConstantProperty(styleSpec["paint_circle"]["circle-pitch-scale"]), - "circle-pitch-alignment": new DataConstantProperty(styleSpec["paint_circle"]["circle-pitch-alignment"]), - "circle-stroke-width": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-width"]), - "circle-stroke-color": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-color"]), - "circle-stroke-opacity": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-opacity"]), + "circle-radius": new DataDrivenProperty(styleSpec["paint_circle"]["circle-radius"] as any as StylePropertySpecification), + "circle-color": new DataDrivenProperty(styleSpec["paint_circle"]["circle-color"] as any as StylePropertySpecification), + "circle-blur": new DataDrivenProperty(styleSpec["paint_circle"]["circle-blur"] as any as StylePropertySpecification), + "circle-opacity": new DataDrivenProperty(styleSpec["paint_circle"]["circle-opacity"] as any as StylePropertySpecification), + "circle-translate": new DataConstantProperty(styleSpec["paint_circle"]["circle-translate"] as any as StylePropertySpecification), + "circle-translate-anchor": new DataConstantProperty(styleSpec["paint_circle"]["circle-translate-anchor"] as any as StylePropertySpecification), + "circle-pitch-scale": new DataConstantProperty(styleSpec["paint_circle"]["circle-pitch-scale"] as any as StylePropertySpecification), + "circle-pitch-alignment": new DataConstantProperty(styleSpec["paint_circle"]["circle-pitch-alignment"] as any as StylePropertySpecification), + "circle-stroke-width": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-width"] as any as StylePropertySpecification), + "circle-stroke-color": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-color"] as any as StylePropertySpecification), + "circle-stroke-opacity": new DataDrivenProperty(styleSpec["paint_circle"]["circle-stroke-opacity"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/custom_style_layer.ts b/src/style/style_layer/custom_style_layer.ts index faf3c8ceaa..398e2d3f61 100644 --- a/src/style/style_layer/custom_style_layer.ts +++ b/src/style/style_layer/custom_style_layer.ts @@ -205,13 +205,13 @@ class CustomStyleLayer extends StyleLayer { assert(false, "Custom layers cannot be serialized"); } - onAdd(map: Map) { + onAdd = (map: Map) => { if (this.implementation.onAdd) { this.implementation.onAdd(map, map.painter.context.gl); } } - onRemove(map: Map) { + onRemove = (map: Map) => { if (this.implementation.onRemove) { this.implementation.onRemove(map, map.painter.context.gl); } diff --git a/src/style/style_layer/fill_extrusion_style_layer.ts b/src/style/style_layer/fill_extrusion_style_layer.ts index e31ae86b92..6339d32da0 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.ts +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -3,7 +3,7 @@ import StyleLayer from '../style_layer'; import FillExtrusionBucket from '../../data/bucket/fill_extrusion_bucket'; import {polygonIntersectsPolygon, polygonIntersectsMultiPolygon} from '../../util/intersection_tests'; import {translateDistance, translate} from '../query_utils'; -import properties from './fill_extrusion_style_layer_properties'; +import properties, {PaintPropsPossiblyEvaluated} from './fill_extrusion_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import {vec4} from 'gl-matrix'; import Point from '@mapbox/point-geometry'; @@ -17,7 +17,7 @@ import type {LayerSpecification} from '../../style-spec/types'; class FillExtrusionStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); @@ -27,7 +27,7 @@ class FillExtrusionStyleLayer extends StyleLayer { return new FillExtrusionBucket(parameters); } - queryRadius(): number { + queryRadius = (): number => { return translateDistance(this.paint.get('fill-extrusion-translate')); } @@ -35,7 +35,7 @@ class FillExtrusionStyleLayer extends StyleLayer { return true; } - queryIntersectsFeature( + queryIntersectsFeature = ( queryGeometry: Array, feature: VectorTileFeature, featureState: FeatureState, @@ -44,7 +44,7 @@ class FillExtrusionStyleLayer extends StyleLayer { transform: Transform, pixelsToTileUnits: number, pixelPosMatrix: Float32Array - ): boolean | number { + ): boolean | number => { const translatedPolygon = translate(queryGeometry, this.paint.get('fill-extrusion-translate'), diff --git a/src/style/style_layer/fill_extrusion_style_layer_properties.ts b/src/style/style_layer/fill_extrusion_style_layer_properties.ts index 28803d3688..de0734828a 100644 --- a/src/style/style_layer/fill_extrusion_style_layer_properties.ts +++ b/src/style/style_layer/fill_extrusion_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,6 +18,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type PaintProps = { @@ -30,15 +32,26 @@ export type PaintProps = { "fill-extrusion-vertical-gradient": DataConstantProperty }; +export type PaintPropsPossiblyEvaluated = { + "fill-extrusion-opacity": number, + "fill-extrusion-color": PossiblyEvaluatedPropertyValue, + "fill-extrusion-translate": [number, number], + "fill-extrusion-translate-anchor": "map" | "viewport", + "fill-extrusion-pattern": PossiblyEvaluatedPropertyValue, + "fill-extrusion-height": PossiblyEvaluatedPropertyValue, + "fill-extrusion-base": PossiblyEvaluatedPropertyValue, + "fill-extrusion-vertical-gradient": boolean +}; + const paint: Properties = new Properties({ - "fill-extrusion-opacity": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-opacity"]), - "fill-extrusion-color": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-color"]), - "fill-extrusion-translate": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-translate"]), - "fill-extrusion-translate-anchor": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]), - "fill-extrusion-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-pattern"]), - "fill-extrusion-height": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-height"]), - "fill-extrusion-base": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-base"]), - "fill-extrusion-vertical-gradient": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"]), + "fill-extrusion-opacity": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-opacity"] as any as StylePropertySpecification), + "fill-extrusion-color": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-color"] as any as StylePropertySpecification), + "fill-extrusion-translate": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-translate"] as any as StylePropertySpecification), + "fill-extrusion-translate-anchor": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-translate-anchor"] as any as StylePropertySpecification), + "fill-extrusion-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-pattern"] as any as StylePropertySpecification), + "fill-extrusion-height": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-height"] as any as StylePropertySpecification), + "fill-extrusion-base": new DataDrivenProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-base"] as any as StylePropertySpecification), + "fill-extrusion-vertical-gradient": new DataConstantProperty(styleSpec["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/fill_style_layer.ts b/src/style/style_layer/fill_style_layer.ts index 9e6c0db604..e0158567cf 100644 --- a/src/style/style_layer/fill_style_layer.ts +++ b/src/style/style_layer/fill_style_layer.ts @@ -3,7 +3,7 @@ import StyleLayer from '../style_layer'; import FillBucket from '../../data/bucket/fill_bucket'; import {polygonIntersectsMultiPolygon} from '../../util/intersection_tests'; import {translateDistance, translate} from '../query_utils'; -import properties from './fill_style_layer_properties'; +import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './fill_style_layer_properties'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties'; import type {FeatureState} from '../../style-spec/expression'; @@ -16,11 +16,11 @@ import type {LayerSpecification} from '../../style-spec/types'; class FillStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; - layout: PossiblyEvaluated; + layout: PossiblyEvaluated; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); @@ -39,11 +39,11 @@ class FillStyleLayer extends StyleLayer { return new FillBucket(parameters); } - queryRadius(): number { + queryRadius = (): number => { return translateDistance(this.paint.get('fill-translate')); } - queryIntersectsFeature( + queryIntersectsFeature = ( queryGeometry: Array, feature: VectorTileFeature, featureState: FeatureState, @@ -51,7 +51,7 @@ class FillStyleLayer extends StyleLayer { zoom: number, transform: Transform, pixelsToTileUnits: number - ): boolean { + ): boolean => { const translatedPolygon = translate(queryGeometry, this.paint.get('fill-translate'), this.paint.get('fill-translate-anchor'), diff --git a/src/style/style_layer/fill_style_layer_properties.ts b/src/style/style_layer/fill_style_layer_properties.ts index 82c46a2f5d..100b2d2625 100644 --- a/src/style/style_layer/fill_style_layer_properties.ts +++ b/src/style/style_layer/fill_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,13 +18,18 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type LayoutProps = { "fill-sort-key": DataDrivenProperty }; +export type LayoutPropsPossiblyEvaluated = { + "fill-sort-key": PossiblyEvaluatedPropertyValue +}; + const layout: Properties = new Properties({ - "fill-sort-key": new DataDrivenProperty(styleSpec["layout_fill"]["fill-sort-key"]), + "fill-sort-key": new DataDrivenProperty(styleSpec["layout_fill"]["fill-sort-key"] as any as StylePropertySpecification), }); export type PaintProps = { @@ -36,14 +42,24 @@ export type PaintProps = { "fill-pattern": CrossFadedDataDrivenProperty }; +export type PaintPropsPossiblyEvaluated = { + "fill-antialias": PossiblyEvaluatedPropertyValue, + "fill-opacity": PossiblyEvaluatedPropertyValue, + "fill-color": PossiblyEvaluatedPropertyValue, + "fill-outline-color": PossiblyEvaluatedPropertyValue, + "fill-translate": [number, number], + "fill-translate-anchor": "map" | "viewport", + "fill-pattern": PossiblyEvaluatedPropertyValue +}; + const paint: Properties = new Properties({ - "fill-antialias": new DataConstantProperty(styleSpec["paint_fill"]["fill-antialias"]), - "fill-opacity": new DataDrivenProperty(styleSpec["paint_fill"]["fill-opacity"]), - "fill-color": new DataDrivenProperty(styleSpec["paint_fill"]["fill-color"]), - "fill-outline-color": new DataDrivenProperty(styleSpec["paint_fill"]["fill-outline-color"]), - "fill-translate": new DataConstantProperty(styleSpec["paint_fill"]["fill-translate"]), - "fill-translate-anchor": new DataConstantProperty(styleSpec["paint_fill"]["fill-translate-anchor"]), - "fill-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_fill"]["fill-pattern"]), + "fill-antialias": new DataConstantProperty(styleSpec["paint_fill"]["fill-antialias"] as any as StylePropertySpecification), + "fill-opacity": new DataDrivenProperty(styleSpec["paint_fill"]["fill-opacity"] as any as StylePropertySpecification), + "fill-color": new DataDrivenProperty(styleSpec["paint_fill"]["fill-color"] as any as StylePropertySpecification), + "fill-outline-color": new DataDrivenProperty(styleSpec["paint_fill"]["fill-outline-color"] as any as StylePropertySpecification), + "fill-translate": new DataConstantProperty(styleSpec["paint_fill"]["fill-translate"] as any as StylePropertySpecification), + "fill-translate-anchor": new DataConstantProperty(styleSpec["paint_fill"]["fill-translate-anchor"] as any as StylePropertySpecification), + "fill-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_fill"]["fill-pattern"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/heatmap_style_layer.ts b/src/style/style_layer/heatmap_style_layer.ts index 9a194ed1ad..23a247b266 100644 --- a/src/style/style_layer/heatmap_style_layer.ts +++ b/src/style/style_layer/heatmap_style_layer.ts @@ -2,7 +2,7 @@ import StyleLayer from '../style_layer'; import HeatmapBucket from '../../data/bucket/heatmap_bucket'; import {RGBAImage} from '../../util/image'; -import properties from './heatmap_style_layer_properties'; +import properties, {PaintPropsPossiblyEvaluated} from './heatmap_style_layer_properties'; import {renderColorRamp} from '../../util/color_ramp'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; @@ -19,7 +19,7 @@ class HeatmapStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; createBucket(options: any) { return new HeatmapBucket(options); @@ -55,11 +55,11 @@ class HeatmapStyleLayer extends StyleLayer { } } - queryRadius(): number { + queryRadius = (): number => { return 0; } - queryIntersectsFeature(): boolean { + queryIntersectsFeature = (): boolean => { return false; } diff --git a/src/style/style_layer/heatmap_style_layer_properties.ts b/src/style/style_layer/heatmap_style_layer_properties.ts index 7b3512f2fd..0dc5564bb3 100644 --- a/src/style/style_layer/heatmap_style_layer_properties.ts +++ b/src/style/style_layer/heatmap_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,6 +18,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type PaintProps = { @@ -27,12 +29,20 @@ export type PaintProps = { "heatmap-opacity": DataConstantProperty }; +export type PaintPropsPossiblyEvaluated = { + "heatmap-radius": PossiblyEvaluatedPropertyValue, + "heatmap-weight": PossiblyEvaluatedPropertyValue, + "heatmap-intensity": number, + "heatmap-color": ColorRampProperty, + "heatmap-opacity": number +}; + const paint: Properties = new Properties({ - "heatmap-radius": new DataDrivenProperty(styleSpec["paint_heatmap"]["heatmap-radius"]), - "heatmap-weight": new DataDrivenProperty(styleSpec["paint_heatmap"]["heatmap-weight"]), - "heatmap-intensity": new DataConstantProperty(styleSpec["paint_heatmap"]["heatmap-intensity"]), - "heatmap-color": new ColorRampProperty(styleSpec["paint_heatmap"]["heatmap-color"]), - "heatmap-opacity": new DataConstantProperty(styleSpec["paint_heatmap"]["heatmap-opacity"]), + "heatmap-radius": new DataDrivenProperty(styleSpec["paint_heatmap"]["heatmap-radius"] as any as StylePropertySpecification), + "heatmap-weight": new DataDrivenProperty(styleSpec["paint_heatmap"]["heatmap-weight"] as any as StylePropertySpecification), + "heatmap-intensity": new DataConstantProperty(styleSpec["paint_heatmap"]["heatmap-intensity"] as any as StylePropertySpecification), + "heatmap-color": new ColorRampProperty(styleSpec["paint_heatmap"]["heatmap-color"] as any as StylePropertySpecification), + "heatmap-opacity": new DataConstantProperty(styleSpec["paint_heatmap"]["heatmap-opacity"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/hillshade_style_layer.ts b/src/style/style_layer/hillshade_style_layer.ts index 44e60dac93..949c222b25 100644 --- a/src/style/style_layer/hillshade_style_layer.ts +++ b/src/style/style_layer/hillshade_style_layer.ts @@ -1,6 +1,6 @@ import StyleLayer from '../style_layer'; -import properties from './hillshade_style_layer_properties'; +import properties, {PaintPropsPossiblyEvaluated} from './hillshade_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import type {PaintProps} from './hillshade_style_layer_properties'; @@ -9,7 +9,7 @@ import type {LayerSpecification} from '../../style-spec/types'; class HillshadeStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); diff --git a/src/style/style_layer/hillshade_style_layer_properties.ts b/src/style/style_layer/hillshade_style_layer_properties.ts index fbb31bdaa2..9589ddd35c 100644 --- a/src/style/style_layer/hillshade_style_layer_properties.ts +++ b/src/style/style_layer/hillshade_style_layer_properties.ts @@ -17,6 +17,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type PaintProps = { @@ -28,13 +29,22 @@ export type PaintProps = { "hillshade-accent-color": DataConstantProperty }; +export type PaintPropsPossiblyEvaluated = { + "hillshade-illumination-direction": number, + "hillshade-illumination-anchor": "map" | "viewport", + "hillshade-exaggeration": number, + "hillshade-shadow-color": Color, + "hillshade-highlight-color": Color, + "hillshade-accent-color": Color +}; + const paint: Properties = new Properties({ - "hillshade-illumination-direction": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-illumination-direction"]), - "hillshade-illumination-anchor": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-illumination-anchor"]), - "hillshade-exaggeration": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-exaggeration"]), - "hillshade-shadow-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-shadow-color"]), - "hillshade-highlight-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-highlight-color"]), - "hillshade-accent-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-accent-color"]), + "hillshade-illumination-direction": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-illumination-direction"] as any as StylePropertySpecification), + "hillshade-illumination-anchor": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-illumination-anchor"] as any as StylePropertySpecification), + "hillshade-exaggeration": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-exaggeration"] as any as StylePropertySpecification), + "hillshade-shadow-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-shadow-color"] as any as StylePropertySpecification), + "hillshade-highlight-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-highlight-color"] as any as StylePropertySpecification), + "hillshade-accent-color": new DataConstantProperty(styleSpec["paint_hillshade"]["hillshade-accent-color"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/line_style_layer.ts b/src/style/style_layer/line_style_layer.ts index 7fce974dfb..986c702989 100644 --- a/src/style/style_layer/line_style_layer.ts +++ b/src/style/style_layer/line_style_layer.ts @@ -4,7 +4,7 @@ import StyleLayer from '../style_layer'; import LineBucket from '../../data/bucket/line_bucket'; import {polygonIntersectsBufferedMultiLine} from '../../util/intersection_tests'; import {getMaximumPaintValue, translateDistance, translate} from '../query_utils'; -import properties from './line_style_layer_properties'; +import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './line_style_layer_properties'; import {extend, MAX_SAFE_INTEGER} from '../../util/util'; import EvaluationParameters from '../evaluation_parameters'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated, DataDrivenProperty} from '../properties'; @@ -40,14 +40,14 @@ lineFloorwidthProperty.useIntegerZoom = true; class LineStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; - layout: PossiblyEvaluated; + layout: PossiblyEvaluated; gradientVersion: number; stepInterpolant: boolean; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); @@ -77,7 +77,7 @@ class LineStyleLayer extends StyleLayer { return new LineBucket(parameters); } - queryRadius(bucket: Bucket): number { + queryRadius = (bucket: Bucket): number => { const lineBucket: LineBucket = (bucket as any); const width = getLineWidth( getMaximumPaintValue('line-width', this, lineBucket), @@ -86,7 +86,7 @@ class LineStyleLayer extends StyleLayer { return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate')); } - queryIntersectsFeature( + queryIntersectsFeature = ( queryGeometry: Array, feature: VectorTileFeature, featureState: FeatureState, @@ -94,7 +94,7 @@ class LineStyleLayer extends StyleLayer { zoom: number, transform: Transform, pixelsToTileUnits: number - ): boolean { + ): boolean => { const translatedPolygon = translate(queryGeometry, this.paint.get('line-translate'), this.paint.get('line-translate-anchor'), diff --git a/src/style/style_layer/line_style_layer_properties.ts b/src/style/style_layer/line_style_layer_properties.ts index 3ab8939dc8..532dafabab 100644 --- a/src/style/style_layer/line_style_layer_properties.ts +++ b/src/style/style_layer/line_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -17,6 +18,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type LayoutProps = { "line-cap": DataConstantProperty<"butt" | "round" | "square">, @@ -26,12 +28,20 @@ export type LayoutProps = { "line-sort-key": DataDrivenProperty }; +export type LayoutPropsPossiblyEvaluated = { + "line-cap": "butt" | "round" | "square", + "line-join": PossiblyEvaluatedPropertyValue<"bevel" | "round" | "miter">, + "line-miter-limit": number, + "line-round-limit": number, + "line-sort-key": PossiblyEvaluatedPropertyValue +}; + const layout: Properties = new Properties({ - "line-cap": new DataConstantProperty(styleSpec["layout_line"]["line-cap"]), - "line-join": new DataDrivenProperty(styleSpec["layout_line"]["line-join"]), - "line-miter-limit": new DataConstantProperty(styleSpec["layout_line"]["line-miter-limit"]), - "line-round-limit": new DataConstantProperty(styleSpec["layout_line"]["line-round-limit"]), - "line-sort-key": new DataDrivenProperty(styleSpec["layout_line"]["line-sort-key"]), + "line-cap": new DataConstantProperty(styleSpec["layout_line"]["line-cap"] as any as StylePropertySpecification), + "line-join": new DataDrivenProperty(styleSpec["layout_line"]["line-join"] as any as StylePropertySpecification), + "line-miter-limit": new DataConstantProperty(styleSpec["layout_line"]["line-miter-limit"] as any as StylePropertySpecification), + "line-round-limit": new DataConstantProperty(styleSpec["layout_line"]["line-round-limit"] as any as StylePropertySpecification), + "line-sort-key": new DataDrivenProperty(styleSpec["layout_line"]["line-sort-key"] as any as StylePropertySpecification), }); export type PaintProps = { @@ -48,18 +58,32 @@ export type PaintProps = { "line-gradient": ColorRampProperty }; +export type PaintPropsPossiblyEvaluated = { + "line-opacity": PossiblyEvaluatedPropertyValue, + "line-color": PossiblyEvaluatedPropertyValue, + "line-translate": [number, number], + "line-translate-anchor": "map" | "viewport", + "line-width": PossiblyEvaluatedPropertyValue, + "line-gap-width": PossiblyEvaluatedPropertyValue, + "line-offset": PossiblyEvaluatedPropertyValue, + "line-blur": PossiblyEvaluatedPropertyValue, + "line-dasharray": PossiblyEvaluatedPropertyValue>, + "line-pattern": PossiblyEvaluatedPropertyValue, + "line-gradient": ColorRampProperty +}; + const paint: Properties = new Properties({ - "line-opacity": new DataDrivenProperty(styleSpec["paint_line"]["line-opacity"]), - "line-color": new DataDrivenProperty(styleSpec["paint_line"]["line-color"]), - "line-translate": new DataConstantProperty(styleSpec["paint_line"]["line-translate"]), - "line-translate-anchor": new DataConstantProperty(styleSpec["paint_line"]["line-translate-anchor"]), - "line-width": new DataDrivenProperty(styleSpec["paint_line"]["line-width"]), - "line-gap-width": new DataDrivenProperty(styleSpec["paint_line"]["line-gap-width"]), - "line-offset": new DataDrivenProperty(styleSpec["paint_line"]["line-offset"]), - "line-blur": new DataDrivenProperty(styleSpec["paint_line"]["line-blur"]), - "line-dasharray": new CrossFadedProperty(styleSpec["paint_line"]["line-dasharray"]), - "line-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_line"]["line-pattern"]), - "line-gradient": new ColorRampProperty(styleSpec["paint_line"]["line-gradient"]), + "line-opacity": new DataDrivenProperty(styleSpec["paint_line"]["line-opacity"] as any as StylePropertySpecification), + "line-color": new DataDrivenProperty(styleSpec["paint_line"]["line-color"] as any as StylePropertySpecification), + "line-translate": new DataConstantProperty(styleSpec["paint_line"]["line-translate"] as any as StylePropertySpecification), + "line-translate-anchor": new DataConstantProperty(styleSpec["paint_line"]["line-translate-anchor"] as any as StylePropertySpecification), + "line-width": new DataDrivenProperty(styleSpec["paint_line"]["line-width"] as any as StylePropertySpecification), + "line-gap-width": new DataDrivenProperty(styleSpec["paint_line"]["line-gap-width"] as any as StylePropertySpecification), + "line-offset": new DataDrivenProperty(styleSpec["paint_line"]["line-offset"] as any as StylePropertySpecification), + "line-blur": new DataDrivenProperty(styleSpec["paint_line"]["line-blur"] as any as StylePropertySpecification), + "line-dasharray": new CrossFadedProperty(styleSpec["paint_line"]["line-dasharray"] as any as StylePropertySpecification), + "line-pattern": new CrossFadedDataDrivenProperty(styleSpec["paint_line"]["line-pattern"] as any as StylePropertySpecification), + "line-gradient": new ColorRampProperty(styleSpec["paint_line"]["line-gradient"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/raster_style_layer.ts b/src/style/style_layer/raster_style_layer.ts index 23de6a3037..56ca3e3342 100644 --- a/src/style/style_layer/raster_style_layer.ts +++ b/src/style/style_layer/raster_style_layer.ts @@ -1,6 +1,6 @@ import StyleLayer from '../style_layer'; -import properties from './raster_style_layer_properties'; +import properties, {PaintPropsPossiblyEvaluated} from './raster_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import type {PaintProps} from './raster_style_layer_properties'; @@ -9,7 +9,7 @@ import type {LayerSpecification} from '../../style-spec/types'; class RasterStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); diff --git a/src/style/style_layer/raster_style_layer_properties.ts b/src/style/style_layer/raster_style_layer_properties.ts index a26416c2c1..a7811f6da8 100644 --- a/src/style/style_layer/raster_style_layer_properties.ts +++ b/src/style/style_layer/raster_style_layer_properties.ts @@ -17,6 +17,7 @@ import type Color from '../../style-spec/util/color'; import type Formatted from '../../style-spec/expression/types/formatted'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type PaintProps = { @@ -30,15 +31,26 @@ export type PaintProps = { "raster-fade-duration": DataConstantProperty }; +export type PaintPropsPossiblyEvaluated = { + "raster-opacity": number, + "raster-hue-rotate": number, + "raster-brightness-min": number, + "raster-brightness-max": number, + "raster-saturation": number, + "raster-contrast": number, + "raster-resampling": "linear" | "nearest", + "raster-fade-duration": number +}; + const paint: Properties = new Properties({ - "raster-opacity": new DataConstantProperty(styleSpec["paint_raster"]["raster-opacity"]), - "raster-hue-rotate": new DataConstantProperty(styleSpec["paint_raster"]["raster-hue-rotate"]), - "raster-brightness-min": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-min"]), - "raster-brightness-max": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-max"]), - "raster-saturation": new DataConstantProperty(styleSpec["paint_raster"]["raster-saturation"]), - "raster-contrast": new DataConstantProperty(styleSpec["paint_raster"]["raster-contrast"]), - "raster-resampling": new DataConstantProperty(styleSpec["paint_raster"]["raster-resampling"]), - "raster-fade-duration": new DataConstantProperty(styleSpec["paint_raster"]["raster-fade-duration"]), + "raster-opacity": new DataConstantProperty(styleSpec["paint_raster"]["raster-opacity"] as any as StylePropertySpecification), + "raster-hue-rotate": new DataConstantProperty(styleSpec["paint_raster"]["raster-hue-rotate"] as any as StylePropertySpecification), + "raster-brightness-min": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-min"] as any as StylePropertySpecification), + "raster-brightness-max": new DataConstantProperty(styleSpec["paint_raster"]["raster-brightness-max"] as any as StylePropertySpecification), + "raster-saturation": new DataConstantProperty(styleSpec["paint_raster"]["raster-saturation"] as any as StylePropertySpecification), + "raster-contrast": new DataConstantProperty(styleSpec["paint_raster"]["raster-contrast"] as any as StylePropertySpecification), + "raster-resampling": new DataConstantProperty(styleSpec["paint_raster"]["raster-resampling"] as any as StylePropertySpecification), + "raster-fade-duration": new DataConstantProperty(styleSpec["paint_raster"]["raster-fade-duration"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/src/style/style_layer/symbol_style_layer.ts b/src/style/style_layer/symbol_style_layer.ts index a24d078158..0c6cf7ca01 100644 --- a/src/style/style_layer/symbol_style_layer.ts +++ b/src/style/style_layer/symbol_style_layer.ts @@ -3,7 +3,7 @@ import StyleLayer from '../style_layer'; import assert from 'assert'; import SymbolBucket from '../../data/bucket/symbol_bucket'; import resolveTokens from '../../util/resolve_tokens'; -import properties from './symbol_style_layer_properties'; +import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './symbol_style_layer_properties'; import { Transitionable, @@ -37,11 +37,11 @@ import Literal from '../../style-spec/expression/definitions/literal'; class SymbolStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; - layout: PossiblyEvaluated; + layout: PossiblyEvaluated; _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; - paint: PossiblyEvaluated; + paint: PossiblyEvaluated; constructor(layer: LayerSpecification) { super(layer, properties); @@ -105,11 +105,11 @@ class SymbolStyleLayer extends StyleLayer { return new SymbolBucket(parameters); } - queryRadius(): number { + queryRadius = (): number => { return 0; } - queryIntersectsFeature(): boolean { + queryIntersectsFeature= (): boolean => { assert(false); // Should take a different path in FeatureIndex return false; } @@ -119,13 +119,14 @@ class SymbolStyleLayer extends StyleLayer { if (!SymbolStyleLayer.hasPaintOverride(this.layout, overridable)) { continue; } - const overriden = this.paint.get(overridable); + const overriden = this.paint.get(overridable as keyof PaintPropsPossiblyEvaluated) as PossiblyEvaluatedPropertyValue; const override = new FormatSectionOverride(overriden); const styleExpression = new StyleExpression(override, overriden.property.specification); let expression = null; if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') { expression = (new ZoomConstantExpression('source', styleExpression) as SourceExpression); } else { + // HM TODO: this doesn't make sence as the entire codebase doesn't have this member name...??? expression = (new ZoomDependentExpression('composite', styleExpression, overriden.value.zoomStops, @@ -144,7 +145,7 @@ class SymbolStyleLayer extends StyleLayer { return SymbolStyleLayer.hasPaintOverride(this.layout, name); } - static hasPaintOverride(layout: PossiblyEvaluated, propertyName: string): boolean { + static hasPaintOverride(layout: PossiblyEvaluated, propertyName: string): boolean { const textField = layout.get('text-field'); const property = properties.paint.properties[propertyName]; let hasOverrides = false; diff --git a/src/style/style_layer/symbol_style_layer_properties.ts b/src/style/style_layer/symbol_style_layer_properties.ts index 26e4755ebb..6219ac2d35 100644 --- a/src/style/style_layer/symbol_style_layer_properties.ts +++ b/src/style/style_layer/symbol_style_layer_properties.ts @@ -9,7 +9,8 @@ import { DataDrivenProperty, CrossFadedDataDrivenProperty, CrossFadedProperty, - ColorRampProperty + ColorRampProperty, + PossiblyEvaluatedPropertyValue } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -21,6 +22,7 @@ import type ResolvedImage from '../../style-spec/expression/types/resolved_image import { ColorType } from '../../style-spec/expression/types'; +import { StylePropertySpecification } from '../../style-spec/style-spec'; export type LayoutProps = { "symbol-placement": DataConstantProperty<"point" | "line" | "line-center">, @@ -66,48 +68,92 @@ export type LayoutProps = { "text-optional": DataConstantProperty }; +export type LayoutPropsPossiblyEvaluated = { + "symbol-placement": "point" | "line" | "line-center", + "symbol-spacing": number, + "symbol-avoid-edges": boolean, + "symbol-sort-key": PossiblyEvaluatedPropertyValue, + "symbol-z-order": "auto" | "viewport-y" | "source", + "icon-allow-overlap": boolean, + "icon-ignore-placement": boolean, + "icon-optional": boolean, + "icon-rotation-alignment": "map" | "viewport" | "auto", + "icon-size": PossiblyEvaluatedPropertyValue, + "icon-text-fit": "none" | "width" | "height" | "both", + "icon-text-fit-padding": [number, number, number, number], + "icon-image": PossiblyEvaluatedPropertyValue, + "icon-rotate": PossiblyEvaluatedPropertyValue, + "icon-padding": number, + "icon-keep-upright": boolean, + "icon-offset": PossiblyEvaluatedPropertyValue<[number, number]>, + "icon-anchor": PossiblyEvaluatedPropertyValue<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "icon-pitch-alignment": "map" | "viewport" | "auto", + "text-pitch-alignment": "map" | "viewport" | "auto", + "text-rotation-alignment": "map" | "viewport" | "auto", + "text-field": PossiblyEvaluatedPropertyValue, + "text-font": PossiblyEvaluatedPropertyValue>, + "text-size": PossiblyEvaluatedPropertyValue, + "text-max-width": PossiblyEvaluatedPropertyValue, + "text-line-height": number, + "text-letter-spacing": PossiblyEvaluatedPropertyValue, + "text-justify": PossiblyEvaluatedPropertyValue<"auto" | "left" | "center" | "right">, + "text-radial-offset": PossiblyEvaluatedPropertyValue, + "text-variable-anchor": Array<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "text-anchor": PossiblyEvaluatedPropertyValue<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">, + "text-max-angle": number, + "text-writing-mode": Array<"horizontal" | "vertical">, + "text-rotate": PossiblyEvaluatedPropertyValue, + "text-padding": number, + "text-keep-upright": boolean, + "text-transform": PossiblyEvaluatedPropertyValue<"none" | "uppercase" | "lowercase">, + "text-offset": PossiblyEvaluatedPropertyValue<[number, number]>, + "text-allow-overlap": boolean, + "text-ignore-placement": boolean, + "text-optional": boolean +}; + const layout: Properties = new Properties({ - "symbol-placement": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-placement"]), - "symbol-spacing": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-spacing"]), - "symbol-avoid-edges": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-avoid-edges"]), - "symbol-sort-key": new DataDrivenProperty(styleSpec["layout_symbol"]["symbol-sort-key"]), - "symbol-z-order": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-z-order"]), - "icon-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["icon-allow-overlap"]), - "icon-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["icon-ignore-placement"]), - "icon-optional": new DataConstantProperty(styleSpec["layout_symbol"]["icon-optional"]), - "icon-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-rotation-alignment"]), - "icon-size": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-size"]), - "icon-text-fit": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit"]), - "icon-text-fit-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit-padding"]), - "icon-image": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-image"]), - "icon-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-rotate"]), - "icon-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-padding"]), - "icon-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["icon-keep-upright"]), - "icon-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-offset"]), - "icon-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-anchor"]), - "icon-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-pitch-alignment"]), - "text-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-pitch-alignment"]), - "text-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-rotation-alignment"]), - "text-field": new DataDrivenProperty(styleSpec["layout_symbol"]["text-field"]), - "text-font": new DataDrivenProperty(styleSpec["layout_symbol"]["text-font"]), - "text-size": new DataDrivenProperty(styleSpec["layout_symbol"]["text-size"]), - "text-max-width": new DataDrivenProperty(styleSpec["layout_symbol"]["text-max-width"]), - "text-line-height": new DataConstantProperty(styleSpec["layout_symbol"]["text-line-height"]), - "text-letter-spacing": new DataDrivenProperty(styleSpec["layout_symbol"]["text-letter-spacing"]), - "text-justify": new DataDrivenProperty(styleSpec["layout_symbol"]["text-justify"]), - "text-radial-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-radial-offset"]), - "text-variable-anchor": new DataConstantProperty(styleSpec["layout_symbol"]["text-variable-anchor"]), - "text-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["text-anchor"]), - "text-max-angle": new DataConstantProperty(styleSpec["layout_symbol"]["text-max-angle"]), - "text-writing-mode": new DataConstantProperty(styleSpec["layout_symbol"]["text-writing-mode"]), - "text-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["text-rotate"]), - "text-padding": new DataConstantProperty(styleSpec["layout_symbol"]["text-padding"]), - "text-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["text-keep-upright"]), - "text-transform": new DataDrivenProperty(styleSpec["layout_symbol"]["text-transform"]), - "text-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-offset"]), - "text-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["text-allow-overlap"]), - "text-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["text-ignore-placement"]), - "text-optional": new DataConstantProperty(styleSpec["layout_symbol"]["text-optional"]), + "symbol-placement": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-placement"] as any as StylePropertySpecification), + "symbol-spacing": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-spacing"] as any as StylePropertySpecification), + "symbol-avoid-edges": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-avoid-edges"] as any as StylePropertySpecification), + "symbol-sort-key": new DataDrivenProperty(styleSpec["layout_symbol"]["symbol-sort-key"] as any as StylePropertySpecification), + "symbol-z-order": new DataConstantProperty(styleSpec["layout_symbol"]["symbol-z-order"] as any as StylePropertySpecification), + "icon-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["icon-allow-overlap"] as any as StylePropertySpecification), + "icon-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["icon-ignore-placement"] as any as StylePropertySpecification), + "icon-optional": new DataConstantProperty(styleSpec["layout_symbol"]["icon-optional"] as any as StylePropertySpecification), + "icon-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-rotation-alignment"] as any as StylePropertySpecification), + "icon-size": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-size"] as any as StylePropertySpecification), + "icon-text-fit": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit"] as any as StylePropertySpecification), + "icon-text-fit-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-text-fit-padding"] as any as StylePropertySpecification), + "icon-image": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-image"] as any as StylePropertySpecification), + "icon-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-rotate"] as any as StylePropertySpecification), + "icon-padding": new DataConstantProperty(styleSpec["layout_symbol"]["icon-padding"] as any as StylePropertySpecification), + "icon-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["icon-keep-upright"] as any as StylePropertySpecification), + "icon-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-offset"] as any as StylePropertySpecification), + "icon-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["icon-anchor"] as any as StylePropertySpecification), + "icon-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["icon-pitch-alignment"] as any as StylePropertySpecification), + "text-pitch-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-pitch-alignment"] as any as StylePropertySpecification), + "text-rotation-alignment": new DataConstantProperty(styleSpec["layout_symbol"]["text-rotation-alignment"] as any as StylePropertySpecification), + "text-field": new DataDrivenProperty(styleSpec["layout_symbol"]["text-field"] as any as StylePropertySpecification), + "text-font": new DataDrivenProperty(styleSpec["layout_symbol"]["text-font"] as any as StylePropertySpecification), + "text-size": new DataDrivenProperty(styleSpec["layout_symbol"]["text-size"] as any as StylePropertySpecification), + "text-max-width": new DataDrivenProperty(styleSpec["layout_symbol"]["text-max-width"] as any as StylePropertySpecification), + "text-line-height": new DataConstantProperty(styleSpec["layout_symbol"]["text-line-height"] as any as StylePropertySpecification), + "text-letter-spacing": new DataDrivenProperty(styleSpec["layout_symbol"]["text-letter-spacing"] as any as StylePropertySpecification), + "text-justify": new DataDrivenProperty(styleSpec["layout_symbol"]["text-justify"] as any as StylePropertySpecification), + "text-radial-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-radial-offset"] as any as StylePropertySpecification), + "text-variable-anchor": new DataConstantProperty(styleSpec["layout_symbol"]["text-variable-anchor"] as any as StylePropertySpecification), + "text-anchor": new DataDrivenProperty(styleSpec["layout_symbol"]["text-anchor"] as any as StylePropertySpecification), + "text-max-angle": new DataConstantProperty(styleSpec["layout_symbol"]["text-max-angle"] as any as StylePropertySpecification), + "text-writing-mode": new DataConstantProperty(styleSpec["layout_symbol"]["text-writing-mode"] as any as StylePropertySpecification), + "text-rotate": new DataDrivenProperty(styleSpec["layout_symbol"]["text-rotate"] as any as StylePropertySpecification), + "text-padding": new DataConstantProperty(styleSpec["layout_symbol"]["text-padding"] as any as StylePropertySpecification), + "text-keep-upright": new DataConstantProperty(styleSpec["layout_symbol"]["text-keep-upright"] as any as StylePropertySpecification), + "text-transform": new DataDrivenProperty(styleSpec["layout_symbol"]["text-transform"] as any as StylePropertySpecification), + "text-offset": new DataDrivenProperty(styleSpec["layout_symbol"]["text-offset"] as any as StylePropertySpecification), + "text-allow-overlap": new DataConstantProperty(styleSpec["layout_symbol"]["text-allow-overlap"] as any as StylePropertySpecification), + "text-ignore-placement": new DataConstantProperty(styleSpec["layout_symbol"]["text-ignore-placement"] as any as StylePropertySpecification), + "text-optional": new DataConstantProperty(styleSpec["layout_symbol"]["text-optional"] as any as StylePropertySpecification) }); export type PaintProps = { @@ -127,21 +173,39 @@ export type PaintProps = { "text-translate-anchor": DataConstantProperty<"map" | "viewport"> }; +export type PaintPropsPossiblyEvaluated = { + "icon-opacity": PossiblyEvaluatedPropertyValue, + "icon-color": PossiblyEvaluatedPropertyValue, + "icon-halo-color": PossiblyEvaluatedPropertyValue, + "icon-halo-width": PossiblyEvaluatedPropertyValue, + "icon-halo-blur": PossiblyEvaluatedPropertyValue, + "icon-translate": [number, number], + "icon-translate-anchor": "map" | "viewport", + "text-opacity": PossiblyEvaluatedPropertyValue, + "text-color": PossiblyEvaluatedPropertyValue, + "text-halo-color": PossiblyEvaluatedPropertyValue, + "text-halo-width": PossiblyEvaluatedPropertyValue, + "text-halo-blur": PossiblyEvaluatedPropertyValue, + "text-translate": [number, number], + "text-translate-anchor": "map" | "viewport" +}; + + const paint: Properties = new Properties({ - "icon-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-opacity"]), - "icon-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-color"]), - "icon-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-color"]), - "icon-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-width"]), - "icon-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-blur"]), - "icon-translate": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate"]), - "icon-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate-anchor"]), - "text-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["text-opacity"]), - "text-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-color"], { runtimeType: ColorType, getOverride: (o) => o.textColor, hasOverride: (o) => !!o.textColor }), - "text-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-color"]), - "text-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-width"]), - "text-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-blur"]), - "text-translate": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate"]), - "text-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate-anchor"]), + "icon-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-opacity"] as any as StylePropertySpecification), + "icon-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-color"] as any as StylePropertySpecification), + "icon-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-color"] as any as StylePropertySpecification), + "icon-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-width"] as any as StylePropertySpecification), + "icon-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["icon-halo-blur"] as any as StylePropertySpecification), + "icon-translate": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate"] as any as StylePropertySpecification), + "icon-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["icon-translate-anchor"] as any as StylePropertySpecification), + "text-opacity": new DataDrivenProperty(styleSpec["paint_symbol"]["text-opacity"] as any as StylePropertySpecification), + "text-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-color"] as any as StylePropertySpecification, { runtimeType: ColorType, getOverride: (o) => o.textColor, hasOverride: (o) => !!o.textColor }), + "text-halo-color": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-color"] as any as StylePropertySpecification), + "text-halo-width": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-width"] as any as StylePropertySpecification), + "text-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-blur"] as any as StylePropertySpecification), + "text-translate": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate"] as any as StylePropertySpecification), + "text-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate-anchor"] as any as StylePropertySpecification), }); // Note: without adding the explicit type annotation, Flow infers weaker types From c2c5b91aeb547d25d90bc985535f49648f1656d4 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 00:23:37 +0300 Subject: [PATCH 051/142] Move IControl interface to a new class, Fix timeoutID type. --- src/ui/control/attribution_control.ts | 7 ++++--- src/ui/control/control.d.ts | 8 ++++++++ src/ui/control/fullscreen_control.ts | 17 +++++++++-------- src/ui/control/geolocate_control.ts | 5 +++-- src/ui/control/logo_control.ts | 9 +++++---- src/ui/control/navigation_control.ts | 3 ++- src/ui/control/scale_control.ts | 5 +++-- src/ui/handler/scroll_zoom.ts | 4 ++-- src/ui/hash.ts | 2 +- src/ui/map.ts | 19 +++++-------------- src/ui/popup.ts | 6 +++--- src/util/dom.ts | 6 +++--- src/util/throttle.ts | 4 ++-- 13 files changed, 50 insertions(+), 45 deletions(-) create mode 100644 src/ui/control/control.d.ts diff --git a/src/ui/control/attribution_control.ts b/src/ui/control/attribution_control.ts index 0b88383f9a..33592694e9 100644 --- a/src/ui/control/attribution_control.ts +++ b/src/ui/control/attribution_control.ts @@ -3,6 +3,7 @@ import {bindAll} from '../../util/util'; import config from '../../util/config'; import type Map from '../map'; +import { ControlPosition, IControl } from './control'; type Options = { compact?: boolean, @@ -22,7 +23,7 @@ type Options = { * compact: true * })); */ -class AttributionControl { +class AttributionControl implements IControl { options: Options; _map: Map; _container: HTMLElement; @@ -44,7 +45,7 @@ class AttributionControl { ], this); } - getDefaultPosition() { + getDefaultPosition(): ControlPosition { return 'bottom-right'; } @@ -53,7 +54,7 @@ class AttributionControl { this._map = map; this._container = DOM.create('div', 'maplibregl-ctrl maplibregl-ctrl-attrib mapboxgl-ctrl mapboxgl-ctrl-attrib'); - this._compactButton = DOM.create('button', 'maplibregl-ctrl-attrib-button mapboxgl-ctrl-attrib-button', this._container); + this._compactButton = DOM.create('button', 'maplibregl-ctrl-attrib-button mapboxgl-ctrl-attrib-button', this._container) as HTMLButtonElement; this._compactButton.addEventListener('click', this._toggleAttribution); this._compactButton.type = 'button'; this._setElementTitle(this._compactButton, 'ToggleAttribution'); diff --git a/src/ui/control/control.d.ts b/src/ui/control/control.d.ts new file mode 100644 index 0000000000..1bf1cae757 --- /dev/null +++ b/src/ui/control/control.d.ts @@ -0,0 +1,8 @@ +export type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; + +/* eslint-disable no-use-before-define */ +export type IControl = { + onAdd(map: Map): HTMLElement, + onRemove(map: Map): void, + readonly getDefaultPosition?: () => ControlPosition +}; \ No newline at end of file diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index 6087a11b3c..dba5df6744 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -4,6 +4,7 @@ import {bindAll, warnOnce} from '../../util/util'; import window from '../../util/window'; import type Map from '../map'; +import { IControl } from './control'; type Options = { container?: HTMLElement @@ -21,18 +22,18 @@ type Options = { * @see [View a fullscreen map](https://maplibre.org/maplibre-gl-js-docs/example/fullscreen/) */ -class FullscreenControl { +class FullscreenControl implements IControl { _map: Map; _controlContainer: HTMLElement; _fullscreen: boolean; _fullscreenchange: string; - _fullscreenButton: HTMLElement; + _fullscreenButton: HTMLButtonElement; _container: HTMLElement; constructor(options: Options) { this._fullscreen = false; if (options && options.container) { - if (options.container instanceof window.HTMLElement) { + if (options.container instanceof HTMLElement) { this._container = options.container; } else { warnOnce('Full screen control \'container\' must be a DOM element.'); @@ -82,8 +83,8 @@ class FullscreenControl { } _setupUI() { - const button = this._fullscreenButton = DOM.create('button', ((`maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen`)), this._controlContainer); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', true); + const button = this._fullscreenButton = DOM.create('button', ((`maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen`)), this._controlContainer) as HTMLButtonElement; + DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', 'true'); button.type = 'button'; this._updateTitle(); this._fullscreenButton.addEventListener('click', this._onClickFullscreen); @@ -125,11 +126,11 @@ class FullscreenControl { if (this._isFullscreen()) { if (window.document.exitFullscreen) { (window.document as any).exitFullscreen(); - } else if (window.document.mozCancelFullScreen) { + } else if ((window.document as any).mozCancelFullScreen) { (window.document as any).mozCancelFullScreen(); - } else if (window.document.msExitFullscreen) { + } else if ((window.document as any).msExitFullscreen) { (window.document as any).msExitFullscreen(); - } else if (window.document.webkitCancelFullScreen) { + } else if ((window.document as any).webkitCancelFullScreen) { (window.document as any).webkitCancelFullScreen(); } } else if (this._container.requestFullscreen) { diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index 69559f50ea..23958a082e 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -8,6 +8,7 @@ import Marker from '../marker'; import type Map from '../map'; import type {AnimationOptions, CameraOptions} from '../camera'; +import { IControl } from './control'; type Options = { positionOptions?: PositionOptions, @@ -92,7 +93,7 @@ let noTimeout = false; * })); * @see [Locate the user](https://maplibre.org/maplibre-gl-js-docs/example/locate-user/) */ -class GeolocateControl extends Evented { +class GeolocateControl extends Evented implements IControl { _map: Map; options: Options; _container: HTMLElement; @@ -100,7 +101,7 @@ class GeolocateControl extends Evented { _circleElement: HTMLElement; _geolocateButton: HTMLButtonElement; _geolocationWatchID: number; - _timeoutId: TimeoutID | undefined | null; + _timeoutId: ReturnType | undefined | null; _watchState: "OFF" | "ACTIVE_LOCK" | "WAITING_ACTIVE" | "ACTIVE_ERROR" | "BACKGROUND" | "BACKGROUND_ERROR"; _lastKnownPosition: any; _userLocationDotMarker: Marker; diff --git a/src/ui/control/logo_control.ts b/src/ui/control/logo_control.ts index 284e1adb65..002d3b7ad0 100644 --- a/src/ui/control/logo_control.ts +++ b/src/ui/control/logo_control.ts @@ -3,6 +3,7 @@ import DOM from '../../util/dom'; import {bindAll} from '../../util/util'; import type Map from '../map'; +import { ControlPosition, IControl } from './control'; /** * A `LogoControl` is a control that adds the watermark. @@ -11,7 +12,7 @@ import type Map from '../map'; * @private **/ -class LogoControl { +class LogoControl implements IControl { _map: Map; _container: HTMLElement; @@ -23,7 +24,7 @@ class LogoControl { onAdd(map: Map) { this._map = map; this._container = DOM.create('div', 'maplibregl-ctrl mapboxgl-ctrl'); - const anchor = DOM.create('a', 'maplibregl-ctrl-logo mapboxgl-ctrl-logo'); + const anchor = DOM.create('a', 'maplibregl-ctrl-logo mapboxgl-ctrl-logo') as HTMLAnchorElement; anchor.target = "_blank"; anchor.rel = "noopener nofollow"; anchor.href = "https://maplibre.org/"; @@ -33,7 +34,7 @@ class LogoControl { this._container.style.display = 'none'; this._map.on('sourcedata', this._updateLogo); - this._updateLogo(); + this._updateLogo(undefined); this._map.on('resize', this._updateCompact); this._updateCompact(); @@ -47,7 +48,7 @@ class LogoControl { this._map.off('resize', this._updateCompact); } - getDefaultPosition() { + getDefaultPosition(): ControlPosition { return 'bottom-left'; } diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index d86884b81c..343deb333d 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -6,6 +6,7 @@ import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; import window from '../../util/window'; import type Map from '../map'; +import { IControl } from './control'; type Options = { showCompass?: boolean, @@ -33,7 +34,7 @@ const defaultOptions: Options = { * @see [Display map navigation controls](https://maplibre.org/maplibre-gl-js-docs/example/navigation/) * @see [Add a third party vector tile source](https://maplibre.org/maplibre-gl-js-docs/example/third-party/) */ -class NavigationControl { +class NavigationControl implements IControl { _map: Map; options: Options; _container: HTMLElement; diff --git a/src/ui/control/scale_control.ts b/src/ui/control/scale_control.ts index b855f89bd9..eed25e0fd7 100644 --- a/src/ui/control/scale_control.ts +++ b/src/ui/control/scale_control.ts @@ -2,6 +2,7 @@ import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import type Map from '../map'; +import { ControlPosition, IControl } from './control'; type Unit = "imperial" | "metric" | "nautical"; @@ -31,7 +32,7 @@ const defaultOptions: Options = { * * scale.setUnit('metric'); */ -class ScaleControl { +class ScaleControl implements IControl { _map: Map; _container: HTMLElement; options: Options; @@ -45,7 +46,7 @@ class ScaleControl { ], this); } - getDefaultPosition() { + getDefaultPosition(): ControlPosition { return 'bottom-left'; } diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 610e3550fb..52729271ad 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -37,8 +37,8 @@ class ScrollZoomHandler { _aroundPoint: Point; _type: "wheel" | "trackpad" | null; _lastValue: number; - _timeout: TimeoutID | undefined | null; // used for delayed-handling of a single wheel movement - _finishTimeout: TimeoutID | undefined | null; // used to delay final '{move,zoom}end' events + _timeout: ReturnType | undefined | null; // used for delayed-handling of a single wheel movement + _finishTimeout: ReturnType | undefined | null; // used to delay final '{move,zoom}end' events _lastWheelEvent: any; _lastWheelEventTime: number; diff --git a/src/ui/hash.ts b/src/ui/hash.ts index 0e5d80d363..7f00360e5d 100644 --- a/src/ui/hash.ts +++ b/src/ui/hash.ts @@ -12,7 +12,7 @@ import type Map from './map'; */ class Hash { _map: Map; - _updateHash: () => TimeoutID | undefined | null; + _updateHash: () => ReturnType | undefined | null; _hashName: string | undefined | null; constructor(hashName?: string | null) { diff --git a/src/ui/map.ts b/src/ui/map.ts index 94fc25695f..227a15a8ea 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -2,7 +2,6 @@ import {version} from '../../package.json'; import {extend, bindAll, warnOnce, uniqueId} from '../util/util'; import browser from '../util/browser'; import window from '../util/window'; -const {HTMLImageElement, HTMLElement, ImageBitmap} = window; import DOM from '../util/dom'; import {getImage, getJSON, ResourceType} from '../util/ajax'; import {RequestManager} from '../util/mapbox'; @@ -58,15 +57,7 @@ import type { } from '../style-spec/types'; import {Listener} from 'selenium-webdriver'; import {Callback} from '../types/callback'; - -type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; - -/* eslint-disable no-use-before-define */ -type IControl = { - onAdd(map: Map): HTMLElement, - onRemove(map: Map): void, - readonly getDefaultPosition?: () => ControlPosition -}; +import { ControlPosition, IControl } from './control/control'; /* eslint-enable no-use-before-define */ @@ -372,7 +363,7 @@ class Map extends Camera { touchPitch: TouchPitchHandler; constructor(options: MapOptions) { - PerformanceUtils.mark(PerformanceMarkers.create); + PerformanceUtils.mark(PerformanceMarkers.create as keyof typeof PerformanceMarkers); options = extend({}, defaultOptions, options); @@ -2353,7 +2344,7 @@ class Map extends Camera { canvasContainer.classList.add('maplibregl-interactive', 'mapboxgl-interactive'); } - this._canvas = DOM.create('canvas', 'maplibregl-canvas mapboxgl-canvas', canvasContainer); + this._canvas = DOM.create('canvas', 'maplibregl-canvas mapboxgl-canvas', canvasContainer) as HTMLCanvasElement; this._canvas.addEventListener('webglcontextlost', this._contextLost, false); this._canvas.addEventListener('webglcontextrestored', this._contextRestored, false); this._canvas.setAttribute('tabindex', '0'); @@ -2558,7 +2549,7 @@ class Map extends Camera { if (this.loaded() && !this._loaded) { this._loaded = true; - PerformanceUtils.mark(PerformanceMarkers.load); + PerformanceUtils.mark(PerformanceMarkers.load as keyof typeof PerformanceMarkers); this.fire(new Event('load')); } @@ -2614,7 +2605,7 @@ class Map extends Camera { if (this._loaded && !this._fullyLoaded && !somethingDirty) { this._fullyLoaded = true; - PerformanceUtils.mark(PerformanceMarkers.fullLoad); + PerformanceUtils.mark(PerformanceMarkers.fullLoad as keyof typeof PerformanceMarkers); } return this; diff --git a/src/ui/popup.ts b/src/ui/popup.ts index ca2c911100..3ab6741dc0 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -103,7 +103,7 @@ export default class Popup extends Evented { options: PopupOptions; _content: HTMLElement; _container: HTMLElement; - _closeButton: HTMLElement; + _closeButton: HTMLButtonElement; _tip: HTMLElement; _lngLat: LngLat; _trackPointer: boolean; @@ -493,7 +493,7 @@ export default class Popup extends Evented { _createCloseButton() { if (this.options.closeButton) { - this._closeButton = DOM.create('button', 'maplibregl-popup-close-button mapboxgl-popup-close-button', this._content); + this._closeButton = DOM.create('button', 'maplibregl-popup-close-button mapboxgl-popup-close-button', this._content) as HTMLButtonElement; this._closeButton.type = 'button'; this._closeButton.setAttribute('aria-label', 'Close popup'); this._closeButton.innerHTML = '×'; @@ -581,7 +581,7 @@ export default class Popup extends Evented { _focusFirstElement() { if (!this.options.focusAfterOpen || !this._container) return; - const firstFocusable = this._container.querySelector(focusQuerySelector); + const firstFocusable = this._container.querySelector(focusQuerySelector) as HTMLElement; if (firstFocusable) firstFocusable.focus(); } diff --git a/src/util/dom.ts b/src/util/dom.ts index 24d0c4d9ba..6830813ad3 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -4,16 +4,16 @@ import window from './window'; import assert from 'assert'; interface DOMInterface { - create(tagName: string, className: string | undefined | null, container?: HTMLElement): HTMLElement; + create(tagName: string, className?: string | undefined | null, container?: HTMLElement): HTMLElement; createNS(namespaceURI: string, tagName: string); disableDrag(); enableDrag(); setTransform(el: HTMLElement, value: string); - addEventListener(target: any, type: any, callback: any, options?: { + addEventListener(target: any, type: any, callback: any, options?: void | { passive?: boolean, capture?: boolean }); - removeEventListener(target: any, type: any, callback: any, options?: { + removeEventListener(target: any, type: any, callback: any, options?: void | { passive?: boolean, capture?: boolean }); diff --git a/src/util/throttle.ts b/src/util/throttle.ts index 33dd9ead49..0be8744acb 100644 --- a/src/util/throttle.ts +++ b/src/util/throttle.ts @@ -2,9 +2,9 @@ * Throttle the given function to run at most every `period` milliseconds. * @private */ -export default function throttle(fn: () => void, time: number): () => TimeoutID | undefined | null { +export default function throttle(fn: () => void, time: number): () => ReturnType | undefined | null { let pending = false; - let timerId: TimeoutID | undefined | null = null; + let timerId: ReturnType | undefined | null = null; const later = () => { timerId = null; From 33b3f4987d8fc9895f0017505945bc5b667322e3 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sun, 25 Jul 2021 16:39:44 +0900 Subject: [PATCH 052/142] remove flow-typed folder (#225) --- flow-typed/gl.js | 5 ---- flow-typed/jsdom.js | 18 ------------- flow-typed/mapbox-gl-supported.js | 9 ------- flow-typed/mapbox-unitbezier.js | 14 ---------- flow-typed/offscreen-canvas.js | 9 ------- flow-typed/pbf.js | 25 ------------------ flow-typed/point-geometry.js | 44 ------------------------------- flow-typed/potpack.js | 12 --------- flow-typed/sinon.js | 28 -------------------- flow-typed/vector-tile.js | 40 ---------------------------- 10 files changed, 204 deletions(-) delete mode 100644 flow-typed/gl.js delete mode 100644 flow-typed/jsdom.js delete mode 100644 flow-typed/mapbox-gl-supported.js delete mode 100644 flow-typed/mapbox-unitbezier.js delete mode 100644 flow-typed/offscreen-canvas.js delete mode 100644 flow-typed/pbf.js delete mode 100644 flow-typed/point-geometry.js delete mode 100644 flow-typed/potpack.js delete mode 100644 flow-typed/sinon.js delete mode 100644 flow-typed/vector-tile.js diff --git a/flow-typed/gl.js b/flow-typed/gl.js deleted file mode 100644 index 7fe9f46faa..0000000000 --- a/flow-typed/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -// @flow strict -declare module "gl" { - declare function gl(width: number, height: number, attributes: WebGLContextAttributes): WebGLRenderingContext; - declare module.exports: typeof gl; -} diff --git a/flow-typed/jsdom.js b/flow-typed/jsdom.js deleted file mode 100644 index d9aa8c4080..0000000000 --- a/flow-typed/jsdom.js +++ /dev/null @@ -1,18 +0,0 @@ -// @flow strict - -import type Window from '../src/types/window'; - -declare module "jsdom" { - declare class JSDOM { - constructor(content: string, options: Object): JSDOM; - window: Window; - } - declare class VirtualConsole { - constructor(): VirtualConsole; - sendTo(console: typeof console): VirtualConsole; - } - declare module.exports: { - JSDOM: typeof JSDOM, - VirtualConsole: typeof VirtualConsole - }; -} diff --git a/flow-typed/mapbox-gl-supported.js b/flow-typed/mapbox-gl-supported.js deleted file mode 100644 index 71c3430c94..0000000000 --- a/flow-typed/mapbox-gl-supported.js +++ /dev/null @@ -1,9 +0,0 @@ -// @flow -'use strict'; -declare module "@mapbox/mapbox-gl-supported" { - declare type isSupported = { - (options?: {failIfMajorPerformanceCaveat: boolean}): boolean, - webGLContextAttributes: WebGLContextAttributes - }; - declare module.exports: isSupported; -} diff --git a/flow-typed/mapbox-unitbezier.js b/flow-typed/mapbox-unitbezier.js deleted file mode 100644 index cb127d13a2..0000000000 --- a/flow-typed/mapbox-unitbezier.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; -// @flow - -declare module "@mapbox/unitbezier" { - declare class UnitBezier { - constructor(p1x: number, p1y: number, p2x: number, p2y: number): UnitBezier; - sampleCurveX(t: number): number; - sampleCurveY(t: number): number; - sampleCurveDerivativeX(t: number): number; - solveCurveX(x: number, epsilon: number | void): number; - solve(x: number, epsilon: number | void): number; - } - declare module.exports: typeof UnitBezier; -} diff --git a/flow-typed/offscreen-canvas.js b/flow-typed/offscreen-canvas.js deleted file mode 100644 index 6c9617dad1..0000000000 --- a/flow-typed/offscreen-canvas.js +++ /dev/null @@ -1,9 +0,0 @@ -// @flow strict - -declare class OffscreenCanvas { - width: number; - height: number; - - constructor(width: number, height: number): OffscreenCanvas; - getContext(contextType: '2d'): CanvasRenderingContext2D; -} diff --git a/flow-typed/pbf.js b/flow-typed/pbf.js deleted file mode 100644 index ca92463be8..0000000000 --- a/flow-typed/pbf.js +++ /dev/null @@ -1,25 +0,0 @@ -declare module "pbf" { - declare type ReadFunction = (tag: number, result: T, pbf: Pbf) => void; - - declare class Pbf { - constructor(buf?: ArrayBuffer | Uint8Array): Pbf; - - readFields(readField: ReadFunction, result: T, end?: number): T; - readMessage(readField: ReadFunction, result: T): T; - - readFixed32(): number; - readSFixed32(): number; - readFixed64(): number; - readSFixed64(): number; - readFloat(): number; - readDouble(): number; - readVarint(): number; - readVarint64(): number; - readSVarint(): number; - readBoolean(): boolean; - readString(): string; - readBytes(): Uint8Array; - } - - declare module.exports: typeof Pbf -} diff --git a/flow-typed/point-geometry.js b/flow-typed/point-geometry.js deleted file mode 100644 index 38f7a8b85e..0000000000 --- a/flow-typed/point-geometry.js +++ /dev/null @@ -1,44 +0,0 @@ -declare module "@mapbox/point-geometry" { - declare type PointLike = Point | [number, number]; - - declare class Point { - x: number; - y: number; - constructor(x: number, y: number): Point; - clone(): Point; - add(point: Point): Point; - sub(point: Point): Point; - multByPoint(point: Point): Point; - divByPoint(point: Point): Point; - mult(k: number): Point; - div(k: number): Point; - rotate(angle: number): Point; - rotateAround(angle: number, point: Point): Point; - matMult(matrix: [number, number, number, number]): Point; - unit(): Point; - perp(): Point; - round(): Point; - mag(): number; - equals(point: Point): boolean; - dist(point: Point): number; - distSqr(point: Point): number; - angle(): number; - angleTo(point: Point): number; - angleWith(point: Point): number; - angleWithSep(x: number, y: number): number; - _matMult(matrix: [number, number, number, number]): Point; - _add(point: Point): Point; - _sub(point: Point): Point; - _mult(k: number): Point; - _div(k: number): Point; - _multByPoint(point: Point): Point; - _divByPoint(point: Point): Point; - _unit(): Point; - _perp(): Point; - _rotate(angle: number): Point; - _rotateAround(angle: number, point: Point): Point; - _round(): Point; - static convert(a: PointLike): Point; - } - declare module.exports: typeof Point; -} diff --git a/flow-typed/potpack.js b/flow-typed/potpack.js deleted file mode 100644 index 48fe21c825..0000000000 --- a/flow-typed/potpack.js +++ /dev/null @@ -1,12 +0,0 @@ -declare module "potpack" { - declare type Bin = { - x: number, - y: number, - w: number, - h: number - }; - - declare function potpack(bins: Array): {w: number, h: number, fill: number}; - - declare module.exports: typeof potpack; -} diff --git a/flow-typed/sinon.js b/flow-typed/sinon.js deleted file mode 100644 index be0350bd52..0000000000 --- a/flow-typed/sinon.js +++ /dev/null @@ -1,28 +0,0 @@ -// @flow strict -declare module "sinon" { - declare type SpyCall = { - args: Array - }; - declare type Spy = { - (): any, - calledOnce: number, - getCall(i: number): SpyCall - }; - declare type Stub = { - callsFake(fn: mixed): Spy - }; - declare class FakeServer { - xhr: XMLHttpRequest - } - declare type Sandbox = { - xhr: {supportsCORS: boolean}, - fakeServer: {create: () => FakeServer}, - - createSandbox(options: mixed): Sandbox, - stub(obj?: mixed, prop?: string): Stub, - spy(obj?: mixed, prop?: string): Spy, - restore(): void; - }; - - declare module.exports: Sandbox; -} diff --git a/flow-typed/vector-tile.js b/flow-typed/vector-tile.js deleted file mode 100644 index a5f62c4a5f..0000000000 --- a/flow-typed/vector-tile.js +++ /dev/null @@ -1,40 +0,0 @@ -import type Pbf from 'pbf'; -import type Point from '@mapbox/point-geometry'; - -declare interface VectorTile { - layers: {[_: string]: VectorTileLayer}; -} - -declare interface VectorTileLayer { - version?: number; - name: string; - extent: number; - length: number; - feature(i: number): VectorTileFeature; -} - -declare interface VectorTileFeature { - extent: number; - type: 1 | 2 | 3; - id: number; - properties: {[_: string]: string | number | boolean}; - - loadGeometry(): Array>; - toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; -} - -declare module "@mapbox/vector-tile" { - declare class VectorTileImpl { - constructor(pbf: Pbf): VectorTile; - } - - declare class VectorTileFeatureImpl { - static types: ['Unknown', 'Point', 'LineString', 'Polygon']; - toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; - } - - declare module.exports: { - VectorTile: typeof VectorTileImpl; - VectorTileFeature: typeof VectorTileFeatureImpl; - } -} From 9aff2968643e103c0637dcce908ef5fdbb3ec5f5 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sun, 25 Jul 2021 16:55:20 +0900 Subject: [PATCH 053/142] Typescript: Remove reference to @mapbox/point-geometry TBC (#226) * Remove reference to @mapbox/point-geometry and replace with local point module with types Remove commented out types Fix cannot find type Point errors Add static to fix convert does not exist on typeof Point errors * Remove @mapbox/point-geometry from packkage.json --- package.json | 1 - src/data/array_types.ts | 2 +- src/data/bucket.ts | 2 +- src/data/bucket/circle_bucket.ts | 2 +- src/data/bucket/fill_bucket.ts | 2 +- src/data/bucket/fill_extrusion_bucket.ts | 2 +- src/data/bucket/line_bucket.ts | 2 +- src/data/bucket/symbol_bucket.ts | 2 +- src/data/evaluation_feature.ts | 1 + src/data/feature_index.ts | 2 +- src/data/load_geometry.ts | 2 +- src/geo/edge_insets.ts | 2 +- src/geo/transform.ts | 2 +- src/index.ts | 2 +- src/render/draw_symbol.ts | 2 +- src/source/geojson_wrapper.ts | 2 +- src/source/query_features.ts | 1 + src/source/source_cache.ts | 2 +- src/source/tile.ts | 1 + src/source/tile_id.ts | 2 +- .../expression/definitions/within.ts | 10 +- src/style-spec/expression/index.ts | 2 +- src/style/query_utils.ts | 2 +- src/style/style_layer.ts | 2 +- src/style/style_layer/circle_style_layer.ts | 3 +- .../style_layer/fill_extrusion_style_layer.ts | 2 +- src/style/style_layer/fill_style_layer.ts | 2 +- src/style/style_layer/line_style_layer.ts | 2 +- src/symbol/anchor.ts | 4 +- src/symbol/check_max_angle.ts | 2 +- src/symbol/clip_line.ts | 2 +- src/symbol/collision_feature.ts | 2 +- src/symbol/collision_index.ts | 2 +- src/symbol/get_anchors.ts | 2 +- src/symbol/path_interpolator.ts | 2 +- src/symbol/placement.ts | 2 +- src/symbol/point.ts | 337 ++++++++++++++++++ src/symbol/projection.ts | 2 +- src/symbol/quads.ts | 2 +- src/symbol/symbol_layout.ts | 42 +-- src/types/non-typed-modules.d.ts | 46 --- src/ui/camera.ts | 2 +- src/ui/control/navigation_control.ts | 2 +- src/ui/events.ts | 2 +- src/ui/handler/box_zoom.ts | 1 + src/ui/handler/click_zoom.ts | 2 +- src/ui/handler/handler_util.ts | 1 + src/ui/handler/map_event.ts | 2 +- src/ui/handler/mouse.ts | 2 +- src/ui/handler/scroll_zoom.ts | 2 +- src/ui/handler/tap_drag_zoom.ts | 2 +- src/ui/handler/tap_recognizer.ts | 2 +- src/ui/handler/tap_zoom.ts | 2 +- src/ui/handler/touch_pan.ts | 2 +- src/ui/handler/touch_zoom_rotate.ts | 2 +- src/ui/handler_inertia.ts | 2 +- src/ui/handler_manager.ts | 2 +- src/ui/map.ts | 2 +- src/ui/marker.ts | 2 +- src/ui/popup.ts | 2 +- src/util/browser.ts | 16 +- src/util/browser/window.ts | 2 +- src/util/classify_rings.ts | 2 +- src/util/dom.ts | 18 +- src/util/find_pole_of_inaccessibility.ts | 2 +- src/util/intersection_tests.ts | 2 +- src/util/smart_wrap.ts | 2 +- src/util/util.ts | 2 +- src/util/window.ts | 2 +- test/unit/data/fill_bucket.test.js | 2 +- test/unit/data/line_bucket.test.js | 2 +- test/unit/geo/transform.test.js | 2 +- test/unit/source/source_cache.test.js | 2 +- test/unit/style-spec/feature_filter.test.js | 2 +- .../style_layer/fill_extrusion_style_layer.js | 2 +- test/unit/symbol/check_max_angle.test.js | 2 +- test/unit/symbol/clip_line.test.js | 2 +- test/unit/symbol/collision_feature.js | 2 +- test/unit/symbol/get_anchors.test.js | 2 +- test/unit/symbol/mergelines.test.js | 2 +- test/unit/symbol/path_interpolator.test.js | 2 +- test/unit/ui/marker.test.js | 2 +- test/unit/ui/popup.test.js | 2 +- .../util/find_pole_of_inaccessibility.test.js | 2 +- test/unit/util/util.test.js | 2 +- 85 files changed, 461 insertions(+), 163 deletions(-) create mode 100644 src/symbol/point.ts diff --git a/package.json b/package.json index c4dab67ca9..caba60d5fd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "@mapbox/geojson-rewind": "^0.5.0", "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^1.5.0", - "@mapbox/point-geometry": "^0.1.0", "@mapbox/tiny-sdf": "^1.1.1", "@mapbox/unitbezier": "^0.0.0", "@mapbox/vector-tile": "^1.3.1", diff --git a/src/data/array_types.ts b/src/data/array_types.ts index f887381d3a..37646083c7 100644 --- a/src/data/array_types.ts +++ b/src/data/array_types.ts @@ -2,7 +2,7 @@ import assert from 'assert'; import {Struct, StructArray} from '../util/struct_array'; import {register} from '../util/web_worker_transfer'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; /** * Implementation of the StructArray layout: diff --git a/src/data/bucket.ts b/src/data/bucket.ts index 4785aa27f9..815891ab85 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -6,7 +6,7 @@ import type Context from '../gl/context'; import type {FeatureStates} from '../source/source_state'; import type {ImagePosition} from '../render/image_atlas'; import type {CanonicalTileID} from '../source/tile_id'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; export type BucketParameters = { index: number, diff --git a/src/data/bucket/circle_bucket.ts b/src/data/bucket/circle_bucket.ts index 5560f138b7..0d61a4717d 100644 --- a/src/data/bucket/circle_bucket.ts +++ b/src/data/bucket/circle_bucket.ts @@ -23,7 +23,7 @@ import type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer' import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index c711d3a1d7..1b6965a7ab 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -26,7 +26,7 @@ import type FillStyleLayer from '../../style/style_layer/fill_style_layer'; import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_extrusion_bucket.ts b/src/data/bucket/fill_extrusion_bucket.ts index cee289e7e0..fcd144f06a 100644 --- a/src/data/bucket/fill_extrusion_bucket.ts +++ b/src/data/bucket/fill_extrusion_bucket.ts @@ -30,7 +30,7 @@ import type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index 2735713f88..f40af85d2d 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -23,7 +23,7 @@ import type { PopulateParameters } from '../bucket'; import type LineStyleLayer from '../../style/style_layer/line_style_layer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {Segment} from '../segment'; import {RGBAImage} from '../../util/image'; import type Context from '../../gl/context'; diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index d9a66b3bce..ae7275d271 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -16,7 +16,7 @@ import {SymbolLayoutArray, SymbolLineVertexArray } from '../array_types'; -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import SegmentVector from '../segment'; import {ProgramConfigurationSet} from '../program_configuration'; import {TriangleIndexArray, LineIndexArray} from '../index_array_type'; diff --git a/src/data/evaluation_feature.ts b/src/data/evaluation_feature.ts index 90624ff233..0587ed9d3b 100644 --- a/src/data/evaluation_feature.ts +++ b/src/data/evaluation_feature.ts @@ -1,4 +1,5 @@ import loadGeometry from './load_geometry'; +import type Point from '../symbol/point'; type EvaluationFeature = { readonly type: 1 | 2 | 3 | "Unknown" | "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon", diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index e012004839..f01a4df490 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import loadGeometry from './load_geometry'; import toEvaluationFeature from './evaluation_feature'; diff --git a/src/data/load_geometry.ts b/src/data/load_geometry.ts index 6628bf79b2..2dc14e456d 100644 --- a/src/data/load_geometry.ts +++ b/src/data/load_geometry.ts @@ -2,7 +2,7 @@ import {warnOnce, clamp} from '../util/util'; import EXTENT from './extent'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; // These bounds define the minimum and maximum supported coordinate values. // While visible coordinates are within [0, EXTENT], tiles may theoretically diff --git a/src/geo/edge_insets.ts b/src/geo/edge_insets.ts index 425c29041b..dd32f7dd07 100644 --- a/src/geo/edge_insets.ts +++ b/src/geo/edge_insets.ts @@ -1,5 +1,5 @@ import {number} from "../style-spec/util/interpolate"; -import Point from "@mapbox/point-geometry"; +import Point from '../symbol/point'; import {clamp} from "../util/util"; /** diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 232ee65f21..4b963761e6 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -1,7 +1,7 @@ import LngLat from './lng_lat'; import LngLatBounds from './lng_lat_bounds'; import MercatorCoordinate, {mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude} from './mercator_coordinate'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; diff --git a/src/index.ts b/src/index.ts index 7d7b640c78..7bbe474aac 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,7 @@ import Marker from './ui/marker'; import Style from './style/style'; import LngLat from './geo/lng_lat'; import LngLatBounds from './geo/lng_lat_bounds'; -import Point from '@mapbox/point-geometry'; +import Point from './symbol/point'; import MercatorCoordinate from './geo/mercator_coordinate'; import {Evented} from './util/evented'; import config from './util/config'; diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 3148bf1bfe..76813a7d70 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import drawCollisionDebug from './draw_collision_debug'; import SegmentVector from '../data/segment'; diff --git a/src/source/geojson_wrapper.ts b/src/source/geojson_wrapper.ts index 8e56493765..646fa3a279 100644 --- a/src/source/geojson_wrapper.ts +++ b/src/source/geojson_wrapper.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import mvt from '@mapbox/vector-tile'; const toGeoJSON = mvt.VectorTileFeature.prototype.toGeoJSON; diff --git a/src/source/query_features.ts b/src/source/query_features.ts index a84a951773..8524f2c4e4 100644 --- a/src/source/query_features.ts +++ b/src/source/query_features.ts @@ -4,6 +4,7 @@ import type CollisionIndex from '../symbol/collision_index'; import type Transform from '../geo/transform'; import type {RetainedQueryData} from '../symbol/placement'; import type {FilterSpecification} from '../style-spec/types'; +import type Point from '../symbol/point'; import assert from 'assert'; import {mat4} from 'gl-matrix'; diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 3b984b5b64..3ed4b149df 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -7,7 +7,7 @@ import MercatorCoordinate from '../geo/mercator_coordinate'; import {keysDifference, values} from '../util/util'; import EXTENT from '../data/extent'; import Context from '../gl/context'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import browser from '../util/browser'; import {OverscaledTileID} from './tile_id'; import assert from 'assert'; diff --git a/src/source/tile.ts b/src/source/tile.ts index 608afd6d71..b607fc7d63 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -29,6 +29,7 @@ import type Transform from '../geo/transform'; import type {LayerFeatureStates} from './source_state'; import type {Cancelable} from '../types/cancelable'; import type {FilterSpecification} from '../style-spec/types'; +import type Point from '../symbol/point'; export type TileState = // Tile data is in the process of loading. "loading" | // Tile data has been loaded. Tile can be rendered. diff --git a/src/source/tile_id.ts b/src/source/tile_id.ts index fd7a596125..f922b8f39b 100644 --- a/src/source/tile_id.ts +++ b/src/source/tile_id.ts @@ -1,6 +1,6 @@ import {getTileBBox} from '@mapbox/whoots-js'; import EXTENT from '../data/extent'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import MercatorCoordinate from '../geo/mercator_coordinate'; import assert from 'assert'; diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index be0d15e7ce..ff2a673267 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -4,7 +4,7 @@ import {BooleanType} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../symbol/point'; import type {CanonicalTileID} from '../../../source/tile_id'; type GeoJSONPolygons = GeoJSON.Polygon | GeoJSON.MultiPolygon; @@ -225,8 +225,8 @@ function getTileLines(geometry, lineBBox, polyBBox, canonical) { } function pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) { - const pointBBox = [Infinity, Infinity, -Infinity, -Infinity]; - const polyBBox = [Infinity, Infinity, -Infinity, -Infinity]; + const pointBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity]; + const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity]; const canonical = ctx.canonicalID(); @@ -253,8 +253,8 @@ function pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPo } function linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) { - const lineBBox = [Infinity, Infinity, -Infinity, -Infinity]; - const polyBBox = [Infinity, Infinity, -Infinity, -Infinity]; + const lineBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity]; + const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity]; const canonical = ctx.canonicalID(); diff --git a/src/style-spec/expression/index.ts b/src/style-spec/expression/index.ts index d3a610bc13..92ddee4295 100644 --- a/src/style-spec/expression/index.ts +++ b/src/style-spec/expression/index.ts @@ -23,7 +23,7 @@ import type {Result} from '../util/result'; import type {InterpolationType} from './definitions/interpolate'; import type {PropertyValueSpecification} from '../types'; import type {FormattedSection} from './types/formatted'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {CanonicalTileID} from '../../source/tile_id'; export type Feature = { diff --git a/src/style/query_utils.ts b/src/style/query_utils.ts index a021f23c01..8b031f4af3 100644 --- a/src/style/query_utils.ts +++ b/src/style/query_utils.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import type {PossiblyEvaluatedPropertyValue} from "./properties"; import type StyleLayer from '../style/style_layer'; diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index 31f57fca47..dba295d415 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -13,7 +13,7 @@ import {supportsPropertyExpression} from '../style-spec/util/properties'; import type {FeatureState} from '../style-spec/expression'; import type {Bucket} from '../data/bucket'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; import EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; diff --git a/src/style/style_layer/circle_style_layer.ts b/src/style/style_layer/circle_style_layer.ts index dc73207bbb..eb160cf3c1 100644 --- a/src/style/style_layer/circle_style_layer.ts +++ b/src/style/style_layer/circle_style_layer.ts @@ -6,8 +6,7 @@ import {getMaximumPaintValue, translateDistance, translate} from '../query_utils import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './circle_style_layer_properties'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties'; import {vec4} from 'gl-matrix'; -import Point from '@mapbox/point-geometry'; - +import Point from '../../symbol/point'; import type {FeatureState} from '../../style-spec/expression'; import type Transform from '../../geo/transform'; import type {Bucket, BucketParameters} from '../../data/bucket'; diff --git a/src/style/style_layer/fill_extrusion_style_layer.ts b/src/style/style_layer/fill_extrusion_style_layer.ts index 6339d32da0..88989694cc 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.ts +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -6,7 +6,7 @@ import {translateDistance, translate} from '../query_utils'; import properties, {PaintPropsPossiblyEvaluated} from './fill_extrusion_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import {vec4} from 'gl-matrix'; -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import type {FeatureState} from '../../style-spec/expression'; import type {BucketParameters} from '../../data/bucket'; diff --git a/src/style/style_layer/fill_style_layer.ts b/src/style/style_layer/fill_style_layer.ts index e0158567cf..5f565293c1 100644 --- a/src/style/style_layer/fill_style_layer.ts +++ b/src/style/style_layer/fill_style_layer.ts @@ -8,7 +8,7 @@ import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../prope import type {FeatureState} from '../../style-spec/expression'; import type {BucketParameters} from '../../data/bucket'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type {LayoutProps, PaintProps} from './fill_style_layer_properties'; import type EvaluationParameters from '../evaluation_parameters'; import type Transform from '../../geo/transform'; diff --git a/src/style/style_layer/line_style_layer.ts b/src/style/style_layer/line_style_layer.ts index 986c702989..5c32953708 100644 --- a/src/style/style_layer/line_style_layer.ts +++ b/src/style/style_layer/line_style_layer.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import StyleLayer from '../style_layer'; import LineBucket from '../../data/bucket/line_bucket'; diff --git a/src/symbol/anchor.ts b/src/symbol/anchor.ts index 86681bdf07..cc3e5c03e3 100644 --- a/src/symbol/anchor.ts +++ b/src/symbol/anchor.ts @@ -1,10 +1,10 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {register} from '../util/web_worker_transfer'; class Anchor extends Point { angle: any; - segment: number | void; + segment?: number; constructor(x: number, y: number, angle: number, segment?: number) { super(x, y); diff --git a/src/symbol/check_max_angle.ts b/src/symbol/check_max_angle.ts index 92ef76f5b4..8d3a72482a 100644 --- a/src/symbol/check_max_angle.ts +++ b/src/symbol/check_max_angle.ts @@ -1,6 +1,6 @@ export default checkMaxAngle; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; import type Anchor from './anchor'; /** diff --git a/src/symbol/clip_line.ts b/src/symbol/clip_line.ts index ee7157e045..3650127e22 100644 --- a/src/symbol/clip_line.ts +++ b/src/symbol/clip_line.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; export default clipLine; diff --git a/src/symbol/collision_feature.ts b/src/symbol/collision_feature.ts index 285733e175..168b052d25 100644 --- a/src/symbol/collision_feature.ts +++ b/src/symbol/collision_feature.ts @@ -1,5 +1,5 @@ import type {CollisionBoxArray} from '../data/array_types'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import type Anchor from './anchor'; /** diff --git a/src/symbol/collision_index.ts b/src/symbol/collision_index.ts index 676999dbd6..d9c27c60c7 100644 --- a/src/symbol/collision_index.ts +++ b/src/symbol/collision_index.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import clipLine from './clip_line'; import PathInterpolator from './path_interpolator'; diff --git a/src/symbol/get_anchors.ts b/src/symbol/get_anchors.ts index c8c5727048..d4a91efabd 100644 --- a/src/symbol/get_anchors.ts +++ b/src/symbol/get_anchors.ts @@ -3,7 +3,7 @@ import {number as interpolate} from '../style-spec/util/interpolate'; import Anchor from '../symbol/anchor'; import checkMaxAngle from './check_max_angle'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; import type {Shaping, PositionedIcon} from './shaping'; export {getAnchors, getCenterAnchor}; diff --git a/src/symbol/path_interpolator.ts b/src/symbol/path_interpolator.ts index 20ef4a0b7a..3ce23ee9d5 100644 --- a/src/symbol/path_interpolator.ts +++ b/src/symbol/path_interpolator.ts @@ -1,5 +1,5 @@ import {clamp} from '../util/util'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import assert from 'assert'; class PathInterpolator { diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index dd52f6ed87..e789eaff7d 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -7,7 +7,7 @@ import {getAnchorAlignment, WritingMode} from './shaping'; import {mat4} from 'gl-matrix'; import assert from 'assert'; import pixelsToTileUnits from '../source/pixels_to_tile_units'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import type Transform from '../geo/transform'; import type StyleLayer from '../style/style_layer'; diff --git a/src/symbol/point.ts b/src/symbol/point.ts new file mode 100644 index 0000000000..f53b480467 --- /dev/null +++ b/src/symbol/point.ts @@ -0,0 +1,337 @@ +// based on '@mapbox/point-geometry'; + +/* +Copyright (c) 2015, Mapbox <> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +import {register} from '../util/web_worker_transfer'; + +/** + * A standalone point geometry with useful accessor, comparison, and + * modification methods. + * + * @class Point + * @param {Number} x the x-coordinate. this could be longitude or screen + * pixels, or any other sort of unit. + * @param {Number} y the y-coordinate. this could be latitude or screen + * pixels, or any other sort of unit. + * @example + * var point = new Point(-77, 38); + */ + +class Point { + x: number; + y: number; + + constructor(x: number, y: number) { + this.x = x; + this.y = y; + } + + /** + * Clone this point, returning a new point that can be modified + * without affecting the old one. + * @returns {Point} the clone + */ + clone() { return new Point(this.x, this.y); } + + /** + * Add this point's x & y coordinates to another point, + * yielding a new point. + * @param {Point} p the other point + * @returns {Point} output point + */ + add(p) { return this.clone()._add(p); } + + /** + * Subtract this point's x & y coordinates to from point, + * yielding a new point. + * @param {Point} p the other point + * @returns {Point} output point + */ + sub(p) { return this.clone()._sub(p); } + + /** + * Multiply this point's x & y coordinates by point, + * yielding a new point. + * @param {Point} p the other point + * @returns {Point} output point + */ + multByPoint(p) { return this.clone()._multByPoint(p); } + + /** + * Divide this point's x & y coordinates by point, + * yielding a new point. + * @param {Point} p the other point + * @returns {Point} output point + */ + divByPoint(p) { return this.clone()._divByPoint(p); } + + /** + * Multiply this point's x & y coordinates by a factor, + * yielding a new point. + * @param {Point} k factor + * @returns {Point} output point + */ + mult(k) { return this.clone()._mult(k); } + + /** + * Divide this point's x & y coordinates by a factor, + * yielding a new point. + * @param {Point} k factor + * @returns {Point} output point + */ + div(k) { return this.clone()._div(k); } + + /** + * Rotate this point around the 0, 0 origin by an angle a, + * given in radians + * @param {Number} a angle to rotate around, in radians + * @returns {Point} output point + */ + rotate(a) { return this.clone()._rotate(a); } + + /** + * Rotate this point around p point by an angle a, + * given in radians + * @param {Number} a angle to rotate around, in radians + * @param {Point} p Point to rotate around + * @returns {Point} output point + */ + rotateAround(a, p) { return this.clone()._rotateAround(a, p); } + + /** + * Multiply this point by a 4x1 transformation matrix + * @param {Array} m transformation matrix + * @returns {Point} output point + */ + matMult(m) { return this.clone()._matMult(m); } + + /** + * Calculate this point but as a unit vector from 0, 0, meaning + * that the distance from the resulting point to the 0, 0 + * coordinate will be equal to 1 and the angle from the resulting + * point to the 0, 0 coordinate will be the same as before. + * @returns {Point} unit vector point + */ + unit() { return this.clone()._unit(); } + + /** + * Compute a perpendicular point, where the new y coordinate + * is the old x coordinate and the new x coordinate is the old y + * coordinate multiplied by -1 + * @returns {Point} perpendicular point + */ + perp() { return this.clone()._perp(); } + + /** + * Return a version of this point with the x & y coordinates + * rounded to integers. + * @returns {Point} rounded point + */ + round() { return this.clone()._round(); } + + /** + * Return the magitude of this point: this is the Euclidean + * distance from the 0, 0 coordinate to this point's x and y + * coordinates. + * @returns {Number} magnitude + */ + mag() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + + /** + * Judge whether this point is equal to another point, returning + * true or false. + * @param {Point} other the other point + * @returns {boolean} whether the points are equal + */ + equals(other) { + return this.x === other.x && + this.y === other.y; + } + + /** + * Calculate the distance from this point to another point + * @param {Point} p the other point + * @returns {Number} distance + */ + dist(p) { + return Math.sqrt(this.distSqr(p)); + } + + /** + * Calculate the distance from this point to another point, + * without the square root step. Useful if you're comparing + * relative distances. + * @param {Point} p the other point + * @returns {Number} distance + */ + distSqr(p) { + const dx = p.x - this.x; + const dy = p.y - this.y; + return dx * dx + dy * dy; + } + + /** + * Get the angle from the 0, 0 coordinate to this point, in radians + * coordinates. + * @returns {Number} angle + */ + angle() { + return Math.atan2(this.y, this.x); + } + + /** + * Get the angle from this point to another point, in radians + * @param {Point} b the other point + * @returns {Number} angle + */ + angleTo(b) { + return Math.atan2(this.y - b.y, this.x - b.x); + } + + /** + * Get the angle between this point and another point, in radians + * @param {Point} b the other point + * @returns {Number} angle + */ + angleWith(b) { + return this.angleWithSep(b.x, b.y); + } + + /* + * Find the angle of the two vectors, solving the formula for + * the cross product a x b = |a||b|sin(θ) for θ. + * @param {Number} x the x-coordinate + * @param {Number} y the y-coordinate + * @returns {Number} the angle in radians + */ + angleWithSep(x, y) { + return Math.atan2( + this.x * y - this.y * x, + this.x * x + this.y * y); + } + + _matMult(m) { + const x = m[0] * this.x + m[1] * this.y; + const y = m[2] * this.x + m[3] * this.y; + this.x = x; + this.y = y; + return this; + } + + _add(p) { + this.x += p.x; + this.y += p.y; + return this; + } + + _sub(p) { + this.x -= p.x; + this.y -= p.y; + return this; + } + + _mult(k) { + this.x *= k; + this.y *= k; + return this; + } + + _div(k) { + this.x /= k; + this.y /= k; + return this; + } + + _multByPoint(p) { + this.x *= p.x; + this.y *= p.y; + return this; + } + + _divByPoint(p) { + this.x /= p.x; + this.y /= p.y; + return this; + } + + _unit() { + this._div(this.mag()); + return this; + } + + _perp() { + const y = this.y; + this.y = this.x; + this.x = -y; + return this; + } + + _rotate(angle) { + const cos = Math.cos(angle); + const sin = Math.sin(angle); + const x = cos * this.x - sin * this.y; + const y = sin * this.x + cos * this.y; + + this.x = x; + this.y = y; + return this; + } + + _rotateAround(angle, p) { + const cos = Math.cos(angle); + const sin = Math.sin(angle); + const x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y); + const y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y); + + this.x = x; + this.y = y; + return this; + } + + _round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + } + + /** + * Construct a point from an array if necessary, otherwise if the input + * is already a Point, or an unknown type, return it unchanged + * @param {Array|Point|*} a any kind of input value + * @returns {Point} constructed point, or passed-through value. + * @example + * // this + * var point = Point.convert([0, 1]); + * // is equivalent to + * var point = new Point(0, 1); + */ + static convert = function (a) { + if (a instanceof Point) { + return a; + } + if (Array.isArray(a)) { + return new Point(a[0], a[1]); + } + return a; + }; +} + +register('Point', Point); + +export default Point; diff --git a/src/symbol/projection.ts b/src/symbol/projection.ts index ba0ba00275..1a73a12894 100644 --- a/src/symbol/projection.ts +++ b/src/symbol/projection.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {mat4, vec4} from 'gl-matrix'; import * as symbolSize from './symbol_size'; diff --git a/src/symbol/quads.ts b/src/symbol/quads.ts index e149cb9c43..9c3b12983d 100644 --- a/src/symbol/quads.ts +++ b/src/symbol/quads.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf'; diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index e5ee0eb348..59df8c305a 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -28,7 +28,7 @@ import type {ImagePosition} from '../render/image_atlas'; import type {GlyphPosition} from '../render/glyph_atlas'; import type {PossiblyEvaluatedPropertyValue} from '../style/properties'; -import Point from '@mapbox/point-geometry'; +import Point from './point'; import murmur3 from 'murmurhash-js'; // The symbol layout process needs `text-size` evaluated at up to five different zoom levels, and @@ -145,25 +145,27 @@ export function evaluateVariableOffset(anchor: TextAnchor, offset: [number, numb return (offset[1] !== INVALID_TEXT_OFFSET) ? fromTextOffset(anchor, offset[0], offset[1]) : fromRadialOffset(anchor, offset[0]); } -export function performSymbolLayout(bucket: SymbolBucket, - glyphMap: { - [_: string]: { - [x: number]: StyleGlyph | undefined | null - } - }, - glyphPositions: { - [_: string]: { - [x: number]: GlyphPosition - } - }, - imageMap: { - [_: string]: StyleImage - }, - imagePositions: { - [_: string]: ImagePosition - }, - showCollisionBoxes: boolean, - canonical: CanonicalTileID) { +export function performSymbolLayout( + bucket: SymbolBucket, + glyphMap: { + [_: string]: { + [x: number]: StyleGlyph | undefined | null + } + }, + glyphPositions: { + [_: string]: { + [x: number]: GlyphPosition + } + }, + imageMap: { + [_: string]: StyleImage + }, + imagePositions: { + [_: string]: ImagePosition + }, + showCollisionBoxes: boolean, + canonical: CanonicalTileID +) { bucket.createArrays(); const tileSize = 512 * bucket.overscaling; diff --git a/src/types/non-typed-modules.d.ts b/src/types/non-typed-modules.d.ts index 85e6663672..581d60388c 100644 --- a/src/types/non-typed-modules.d.ts +++ b/src/types/non-typed-modules.d.ts @@ -1,5 +1,4 @@ import type Pbf from 'pbf'; -import type Point from '@mapbox/point-geometry'; declare module "@mapbox/mapbox-gl-supported" { type isSupported = { @@ -28,51 +27,6 @@ declare module "@mapbox/unitbezier" { let __exports: typeof UnitBezier; export = __exports } - -declare module "@mapbox/point-geometry" { - type PointLike = Point | [number, number]; - - export default class Point { - x: number; - y: number; - constructor(x: number, y: number); - clone(): Point; - add(point: Point): Point; - sub(point: Point): Point; - multByPoint(point: Point): Point; - divByPoint(point: Point): Point; - mult(k: number): Point; - div(k: number): Point; - rotate(angle: number): Point; - rotateAround(angle: number, point: Point): Point; - matMult(matrix: [number, number, number, number]): Point; - unit(): Point; - perp(): Point; - round(): Point; - mag(): number; - equals(point: Point): boolean; - dist(point: Point): number; - distSqr(point: Point): number; - angle(): number; - angleTo(point: Point): number; - angleWith(point: Point): number; - angleWithSep(x: number, y: number): number; - _matMult(matrix: [number, number, number, number]): Point; - _add(point: Point): Point; - _sub(point: Point): Point; - _mult(k: number): Point; - _div(k: number): Point; - _multByPoint(point: Point): Point; - _divByPoint(point: Point): Point; - _unit(): Point; - _perp(): Point; - _rotate(angle: number): Point; - _rotateAround(angle: number, point: Point): Point; - _round(): Point; - static convert(a: PointLike): Point; - } -} - declare module "potpack" { type Bin = { x: number, diff --git a/src/ui/camera.ts b/src/ui/camera.ts index a9917a9ae2..d4e8271310 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -3,7 +3,7 @@ import {number as interpolate} from '../style-spec/util/interpolate'; import browser from '../util/browser'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {Event, Evented} from '../util/evented'; import assert from 'assert'; import {Debug} from '../util/debug'; diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index 343deb333d..a3edb400b3 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; diff --git a/src/ui/events.ts b/src/ui/events.ts index 360177db06..a5139ae88d 100644 --- a/src/ui/events.ts +++ b/src/ui/events.ts @@ -1,7 +1,7 @@ import {Event} from '../util/evented'; import DOM from '../util/dom'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {extend} from '../util/util'; import type Map from './map'; diff --git a/src/ui/handler/box_zoom.ts b/src/ui/handler/box_zoom.ts index cd308f5b99..10ecfd6797 100644 --- a/src/ui/handler/box_zoom.ts +++ b/src/ui/handler/box_zoom.ts @@ -3,6 +3,7 @@ import DOM from '../../util/dom'; import {Event} from '../../util/evented'; import type Map from '../map'; +import type Point from '../../symbol/point'; /** * The `BoxZoomHandler` allows the user to zoom the map to fit within a bounding box. diff --git a/src/ui/handler/click_zoom.ts b/src/ui/handler/click_zoom.ts index e99c18a5b4..f00d365283 100644 --- a/src/ui/handler/click_zoom.ts +++ b/src/ui/handler/click_zoom.ts @@ -1,4 +1,4 @@ -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type Map from '../map'; export default class ClickZoomHandler { diff --git a/src/ui/handler/handler_util.ts b/src/ui/handler/handler_util.ts index af67c25c46..cd07a476ff 100644 --- a/src/ui/handler/handler_util.ts +++ b/src/ui/handler/handler_util.ts @@ -1,4 +1,5 @@ import assert from 'assert'; +import Point from '../../symbol/point'; export function indexTouches(touches: Array, points: Array) { assert(touches.length === points.length); diff --git a/src/ui/handler/map_event.ts b/src/ui/handler/map_event.ts index 1c531299ca..74095beea5 100644 --- a/src/ui/handler/map_event.ts +++ b/src/ui/handler/map_event.ts @@ -1,6 +1,6 @@ import {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events'; import type Map from '../map'; - +import type Point from '../../symbol/point'; export class MapEventHandler { _mousedownPos: Point; diff --git a/src/ui/handler/mouse.ts b/src/ui/handler/mouse.ts index 6c929eb235..a22563b087 100644 --- a/src/ui/handler/mouse.ts +++ b/src/ui/handler/mouse.ts @@ -1,5 +1,5 @@ import DOM from '../../util/dom'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; const LEFT_BUTTON = 0; const RIGHT_BUTTON = 2; diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 52729271ad..29bda3af1d 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -9,7 +9,7 @@ import LngLat from '../../geo/lng_lat'; import type Map from '../map'; import type HandlerManager from '../handler_manager'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; // deltaY value for mouse scroll wheel identification const wheelZoomDelta = 4.000244140625; diff --git a/src/ui/handler/tap_drag_zoom.ts b/src/ui/handler/tap_drag_zoom.ts index 5496550bea..7e47783f02 100644 --- a/src/ui/handler/tap_drag_zoom.ts +++ b/src/ui/handler/tap_drag_zoom.ts @@ -1,5 +1,5 @@ import {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; export default class TapDragZoomHandler { diff --git a/src/ui/handler/tap_recognizer.ts b/src/ui/handler/tap_recognizer.ts index 445ee35c82..b922802fa1 100644 --- a/src/ui/handler/tap_recognizer.ts +++ b/src/ui/handler/tap_recognizer.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import {indexTouches} from './handler_util'; function getCentroid(points: Array) { diff --git a/src/ui/handler/tap_zoom.ts b/src/ui/handler/tap_zoom.ts index b16c52da46..80c015ab8d 100644 --- a/src/ui/handler/tap_zoom.ts +++ b/src/ui/handler/tap_zoom.ts @@ -1,5 +1,5 @@ import {TapRecognizer} from './tap_recognizer'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../../symbol/point'; import type Map from '../map'; export default class TapZoomHandler { diff --git a/src/ui/handler/touch_pan.ts b/src/ui/handler/touch_pan.ts index d1ad91ddaa..1b14ee9af8 100644 --- a/src/ui/handler/touch_pan.ts +++ b/src/ui/handler/touch_pan.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import {indexTouches} from './handler_util'; export default class TouchPanHandler { diff --git a/src/ui/handler/touch_zoom_rotate.ts b/src/ui/handler/touch_zoom_rotate.ts index ce6eb7b09d..dbf56a5eda 100644 --- a/src/ui/handler/touch_zoom_rotate.ts +++ b/src/ui/handler/touch_zoom_rotate.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../../symbol/point'; import DOM from '../../util/dom'; class TwoTouchHandler { diff --git a/src/ui/handler_inertia.ts b/src/ui/handler_inertia.ts index 2218e5a6f6..cfe94ba2e5 100644 --- a/src/ui/handler_inertia.ts +++ b/src/ui/handler_inertia.ts @@ -1,7 +1,7 @@ import browser from '../util/browser'; import type Map from './map'; import {bezier, clamp, extend} from '../util/util'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import type {DragPanOptions} from './handler/shim/drag_pan'; const defaultInertiaOptions = { diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index fd25cc0134..e12b67d4b7 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -18,7 +18,7 @@ import DragRotateHandler from './handler/shim/drag_rotate'; import TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate'; import {bindAll, extend} from '../util/util'; import window from '../util/window'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import assert from 'assert'; export type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent; diff --git a/src/ui/map.ts b/src/ui/map.ts index 227a15a8ea..3dbf934f8e 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -14,7 +14,7 @@ import HandlerManager from './handler_manager'; import Camera from './camera'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import AttributionControl from './control/attribution_control'; import LogoControl from './control/logo_control'; import isSupported from '@mapbox/mapbox-gl-supported'; diff --git a/src/ui/marker.ts b/src/ui/marker.ts index 60b6c966fc..3789e1a692 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -1,7 +1,7 @@ import DOM from '../util/dom'; import window from '../util/window'; import LngLat from '../geo/lng_lat'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import smartWrap from '../util/smart_wrap'; import {bindAll, extend} from '../util/util'; import {anchorTranslate, applyAnchorClass} from './anchor'; diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 3ab6741dc0..15ef93f14d 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -3,7 +3,7 @@ import {Event, Evented} from '../util/evented'; import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import window from '../util/window'; import smartWrap from '../util/smart_wrap'; import {anchorTranslate, applyAnchorClass} from './anchor'; diff --git a/src/util/browser.ts b/src/util/browser.ts index 1f60006dfb..73465ebb8e 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -5,15 +5,15 @@ const now = window.performance && window.performance.now ? window.performance.now.bind(window.performance) : Date.now.bind(Date); -const raf = window.requestAnimationFrame || - window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || - window.msRequestAnimationFrame; +const raf = window.requestAnimationFrame; // || +// window.mozRequestAnimationFrame || +// window.webkitRequestAnimationFrame || +// window.msRequestAnimationFrame; -const cancel = window.cancelAnimationFrame || - window.mozCancelAnimationFrame || - window.webkitCancelAnimationFrame || - window.msCancelAnimationFrame; +const cancel = window.cancelAnimationFrame; // || +// window.mozCancelAnimationFrame || +// window.webkitCancelAnimationFrame || +// window.msCancelAnimationFrame; let linkEl; diff --git a/src/util/browser/window.ts b/src/util/browser/window.ts index 3a52a02e35..0e93f625c2 100644 --- a/src/util/browser/window.ts +++ b/src/util/browser/window.ts @@ -1,5 +1,5 @@ /* eslint-env browser */ -import type {Window} from '../../types/window'; +// import type {Window} from '../../types/window'; // shim window for the case of requiring the browser bundle in Node export default typeof self !== 'undefined' ? (self as Window) : ({} as any as Window); diff --git a/src/util/classify_rings.ts b/src/util/classify_rings.ts index 9d47a0f45c..cf38750143 100644 --- a/src/util/classify_rings.ts +++ b/src/util/classify_rings.ts @@ -2,7 +2,7 @@ import quickselect from 'quickselect'; import {calculateSignedArea} from './util'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; // classifies an array of rings into polygons with outer rings and holes export default function classifyRings(rings: Array>, maxRings: number) { diff --git a/src/util/dom.ts b/src/util/dom.ts index 6830813ad3..2479ba1354 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -1,4 +1,4 @@ -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import window from './window'; import assert from 'assert'; @@ -152,13 +152,15 @@ DOM.touchPos = function (el: HTMLElement, touches: TouchList) { DOM.mouseButton = function (e: MouseEvent) { assert(e.type === 'mousedown' || e.type === 'mouseup'); - if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey && - window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) { - // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131: - // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when - // using Control + left click - return 0; - } + // this issue is a fix for FF 50 on mac, current version is 90 + // confirm unsupported InstallTrigger does not cause this bug in modern versions + // if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey && + // window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) { + // // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131: + // // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when + // // using Control + left click + // return 0; + // } return e.button; }; diff --git a/src/util/find_pole_of_inaccessibility.ts b/src/util/find_pole_of_inaccessibility.ts index f5ba7deb1e..c7a5a47d4f 100644 --- a/src/util/find_pole_of_inaccessibility.ts +++ b/src/util/find_pole_of_inaccessibility.ts @@ -1,6 +1,6 @@ import Queue from 'tinyqueue'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import {distToSegmentSquared} from './intersection_tests'; /** diff --git a/src/util/intersection_tests.ts b/src/util/intersection_tests.ts index 79d4fb11a4..d7151b495e 100644 --- a/src/util/intersection_tests.ts +++ b/src/util/intersection_tests.ts @@ -1,6 +1,6 @@ import {isCounterClockwise} from './util'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; export {polygonIntersectsBufferedPoint, polygonIntersectsMultiPolygon, polygonIntersectsBufferedMultiLine, polygonIntersectsPolygon, distToSegmentSquared, polygonIntersectsBox}; diff --git a/src/util/smart_wrap.ts b/src/util/smart_wrap.ts index 7d8998eebb..32f642d4a1 100644 --- a/src/util/smart_wrap.ts +++ b/src/util/smart_wrap.ts @@ -1,6 +1,6 @@ import LngLat from '../geo/lng_lat'; -import type Point from '@mapbox/point-geometry'; +import type Point from '../symbol/point'; import type Transform from '../geo/transform'; /** diff --git a/src/util/util.ts b/src/util/util.ts index 37b56b8077..6842f065a1 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -1,6 +1,6 @@ import UnitBezier from '@mapbox/unitbezier'; -import Point from '@mapbox/point-geometry'; +import Point from '../symbol/point'; import window from './window'; import type {Callback} from '../types/callback'; diff --git a/src/util/window.ts b/src/util/window.ts index 5d561a67c2..1de24ccb53 100644 --- a/src/util/window.ts +++ b/src/util/window.ts @@ -9,7 +9,7 @@ import jsdom from 'jsdom'; import gl from 'gl'; import sinon from 'sinon'; -import type {Window} from '../types/window'; +// import type {Window} from '../types/window'; const {window: _window} = new jsdom.JSDOM('', { virtualConsole: new jsdom.VirtualConsole().sendTo(console) diff --git a/test/unit/data/fill_bucket.test.js b/test/unit/data/fill_bucket.test.js index ad18a695be..aa99db50ec 100644 --- a/test/unit/data/fill_bucket.test.js +++ b/test/unit/data/fill_bucket.test.js @@ -3,7 +3,7 @@ import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import segment from '../../../src/data/segment'; import FillBucket from '../../../src/data/bucket/fill_bucket'; import FillStyleLayer from '../../../src/style/style_layer/fill_style_layer'; diff --git a/test/unit/data/line_bucket.test.js b/test/unit/data/line_bucket.test.js index 5660a98a7b..8b39299273 100644 --- a/test/unit/data/line_bucket.test.js +++ b/test/unit/data/line_bucket.test.js @@ -3,7 +3,7 @@ import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import segment from '../../../src/data/segment'; import LineBucket from '../../../src/data/bucket/line_bucket'; import LineStyleLayer from '../../../src/style/style_layer/line_style_layer'; diff --git a/test/unit/geo/transform.test.js b/test/unit/geo/transform.test.js index 8a9632c516..bc3310ae2d 100644 --- a/test/unit/geo/transform.test.js +++ b/test/unit/geo/transform.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import Transform from '../../../src/geo/transform'; import LngLat from '../../../src/geo/lng_lat'; import {OverscaledTileID, CanonicalTileID} from '../../../src/source/tile_id'; diff --git a/test/unit/source/source_cache.test.js b/test/unit/source/source_cache.test.js index 2d8fc7790b..cbf22cee6c 100644 --- a/test/unit/source/source_cache.test.js +++ b/test/unit/source/source_cache.test.js @@ -5,7 +5,7 @@ import Tile from '../../../src/source/tile'; import {OverscaledTileID} from '../../../src/source/tile_id'; import Transform from '../../../src/geo/transform'; import LngLat from '../../../src/geo/lng_lat'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import {Event, ErrorEvent, Evented} from '../../../src/util/evented'; import {extend} from '../../../src/util/util'; import browser from '../../../src/util/browser'; diff --git a/test/unit/style-spec/feature_filter.test.js b/test/unit/style-spec/feature_filter.test.js index d81c910368..18410aa3eb 100644 --- a/test/unit/style-spec/feature_filter.test.js +++ b/test/unit/style-spec/feature_filter.test.js @@ -2,7 +2,7 @@ import {test} from '../../util/test'; import {default as createFilter, isExpressionFilter} from '../../../src/style-spec/feature_filter'; import convertFilter from '../../../src/style-spec/feature_filter/convert'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import MercatorCoordinate from '../../../src/geo/mercator_coordinate'; import EXTENT from '../../../src/data/extent'; diff --git a/test/unit/style/style_layer/fill_extrusion_style_layer.js b/test/unit/style/style_layer/fill_extrusion_style_layer.js index c2d5a1fd06..894891e36d 100644 --- a/test/unit/style/style_layer/fill_extrusion_style_layer.js +++ b/test/unit/style/style_layer/fill_extrusion_style_layer.js @@ -1,6 +1,6 @@ import {test} from '../../../util/test'; import {getIntersectionDistance} from '../../../../src/style/style_layer/fill_extrusion_style_layer'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../../src/symbol/point'; test('getIntersectionDistance', (t) => { const queryPoint = [new Point(100, 100)]; diff --git a/test/unit/symbol/check_max_angle.test.js b/test/unit/symbol/check_max_angle.test.js index addce67cab..c17091bc22 100644 --- a/test/unit/symbol/check_max_angle.test.js +++ b/test/unit/symbol/check_max_angle.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import checkMaxAngle from '../../../src/symbol/check_max_angle'; import Anchor from '../../../src/symbol/anchor'; diff --git a/test/unit/symbol/clip_line.test.js b/test/unit/symbol/clip_line.test.js index 9e33c25a34..7532051517 100644 --- a/test/unit/symbol/clip_line.test.js +++ b/test/unit/symbol/clip_line.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import clipLine from '../../../src/symbol/clip_line'; test('clipLines', (t) => { diff --git a/test/unit/symbol/collision_feature.js b/test/unit/symbol/collision_feature.js index b039c02f0b..fa957225e6 100644 --- a/test/unit/symbol/collision_feature.js +++ b/test/unit/symbol/collision_feature.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; import CollisionFeature from '../../../src/symbol/collision_feature'; import Anchor from '../../../src/symbol/anchor'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import {CollisionBoxArray} from '../../../src/data/array_types'; test('CollisionFeature', (t) => { diff --git a/test/unit/symbol/get_anchors.test.js b/test/unit/symbol/get_anchors.test.js index 1bd083cd39..ba5b59d1c3 100644 --- a/test/unit/symbol/get_anchors.test.js +++ b/test/unit/symbol/get_anchors.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import {getAnchors, getCenterAnchor} from '../../../src/symbol/get_anchors'; const TILE_EXTENT = 4096; diff --git a/test/unit/symbol/mergelines.test.js b/test/unit/symbol/mergelines.test.js index dfdb420df0..9150f2a94a 100644 --- a/test/unit/symbol/mergelines.test.js +++ b/test/unit/symbol/mergelines.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; import mergeLines from '../../../src/symbol/mergelines'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; function makeFeatures(lines) { const features = []; diff --git a/test/unit/symbol/path_interpolator.test.js b/test/unit/symbol/path_interpolator.test.js index ac772d5c63..fffc1de380 100644 --- a/test/unit/symbol/path_interpolator.test.js +++ b/test/unit/symbol/path_interpolator.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import PathInterpolator from '../../../src/symbol/path_interpolator'; test('PathInterpolator', (t) => { diff --git a/test/unit/ui/marker.test.js b/test/unit/ui/marker.test.js index b8b80bf35a..a570db1cab 100644 --- a/test/unit/ui/marker.test.js +++ b/test/unit/ui/marker.test.js @@ -4,7 +4,7 @@ import {createMap as globalCreateMap} from '../../util'; import Marker from '../../../src/ui/marker'; import Popup from '../../../src/ui/popup'; import LngLat from '../../../src/geo/lng_lat'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import simulate from '../../util/simulate_interaction'; function createMap(t, options = {}) { diff --git a/test/unit/ui/popup.test.js b/test/unit/ui/popup.test.js index 0100fa9f2b..b791ddc0ce 100644 --- a/test/unit/ui/popup.test.js +++ b/test/unit/ui/popup.test.js @@ -3,7 +3,7 @@ import window from '../../../src/util/window'; import {createMap as globalCreateMap} from '../../util'; import Popup from '../../../src/ui/popup'; import LngLat from '../../../src/geo/lng_lat'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import simulate from '../../util/simulate_interaction'; const containerWidth = 512; diff --git a/test/unit/util/find_pole_of_inaccessibility.test.js b/test/unit/util/find_pole_of_inaccessibility.test.js index 6265119024..a40d3719ed 100644 --- a/test/unit/util/find_pole_of_inaccessibility.test.js +++ b/test/unit/util/find_pole_of_inaccessibility.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; import findPoleOfInaccessibility from '../../../src/util/find_pole_of_inaccessibility'; test('polygon_poi', (t) => { diff --git a/test/unit/util/util.test.js b/test/unit/util/util.test.js index bad799c54b..4b21386606 100644 --- a/test/unit/util/util.test.js +++ b/test/unit/util/util.test.js @@ -3,7 +3,7 @@ import {test} from '../../util/test'; import {easeCubicInOut, keysDifference, extend, pick, uniqueId, bindAll, asyncAll, clamp, wrap, bezier, endsWith, mapObject, filterObject, deepEqual, clone, arraysIntersect, isCounterClockwise, isClosedPolygon, parseCacheControl, uuid, validateUuid, nextPowerOfTwo, isPowerOfTwo} from '../../../src/util/util'; -import Point from '@mapbox/point-geometry'; +import Point from '../../../src/symbol/point'; test('util', (t) => { t.equal(easeCubicInOut(0), 0, 'easeCubicInOut=0'); From d7c7af3a6b35ff9128da37d09fc20ffae1aa6a14 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 11:07:10 +0300 Subject: [PATCH 054/142] Fix lint --- src/ui/control/attribution_control.ts | 2 +- src/ui/control/control.d.ts | 2 +- src/ui/control/fullscreen_control.ts | 2 +- src/ui/control/geolocate_control.ts | 2 +- src/ui/control/logo_control.ts | 2 +- src/ui/control/navigation_control.ts | 2 +- src/ui/control/scale_control.ts | 2 +- src/ui/map.ts | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ui/control/attribution_control.ts b/src/ui/control/attribution_control.ts index 33592694e9..1eda9e09dc 100644 --- a/src/ui/control/attribution_control.ts +++ b/src/ui/control/attribution_control.ts @@ -3,7 +3,7 @@ import {bindAll} from '../../util/util'; import config from '../../util/config'; import type Map from '../map'; -import { ControlPosition, IControl } from './control'; +import {ControlPosition, IControl} from './control'; type Options = { compact?: boolean, diff --git a/src/ui/control/control.d.ts b/src/ui/control/control.d.ts index 1bf1cae757..448497123d 100644 --- a/src/ui/control/control.d.ts +++ b/src/ui/control/control.d.ts @@ -5,4 +5,4 @@ export type IControl = { onAdd(map: Map): HTMLElement, onRemove(map: Map): void, readonly getDefaultPosition?: () => ControlPosition -}; \ No newline at end of file +}; diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index dba5df6744..fa55ee4889 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -4,7 +4,7 @@ import {bindAll, warnOnce} from '../../util/util'; import window from '../../util/window'; import type Map from '../map'; -import { IControl } from './control'; +import {IControl} from './control'; type Options = { container?: HTMLElement diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index 23958a082e..d791146c82 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -8,7 +8,7 @@ import Marker from '../marker'; import type Map from '../map'; import type {AnimationOptions, CameraOptions} from '../camera'; -import { IControl } from './control'; +import {IControl} from './control'; type Options = { positionOptions?: PositionOptions, diff --git a/src/ui/control/logo_control.ts b/src/ui/control/logo_control.ts index 002d3b7ad0..f3ba5f5d29 100644 --- a/src/ui/control/logo_control.ts +++ b/src/ui/control/logo_control.ts @@ -3,7 +3,7 @@ import DOM from '../../util/dom'; import {bindAll} from '../../util/util'; import type Map from '../map'; -import { ControlPosition, IControl } from './control'; +import {ControlPosition, IControl} from './control'; /** * A `LogoControl` is a control that adds the watermark. diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index a3edb400b3..0f9c45a2d0 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -6,7 +6,7 @@ import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; import window from '../../util/window'; import type Map from '../map'; -import { IControl } from './control'; +import {IControl} from './control'; type Options = { showCompass?: boolean, diff --git a/src/ui/control/scale_control.ts b/src/ui/control/scale_control.ts index eed25e0fd7..28538833a6 100644 --- a/src/ui/control/scale_control.ts +++ b/src/ui/control/scale_control.ts @@ -2,7 +2,7 @@ import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import type Map from '../map'; -import { ControlPosition, IControl } from './control'; +import {ControlPosition, IControl} from './control'; type Unit = "imperial" | "metric" | "nautical"; diff --git a/src/ui/map.ts b/src/ui/map.ts index 3dbf934f8e..d7e9ed22dc 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -57,7 +57,7 @@ import type { } from '../style-spec/types'; import {Listener} from 'selenium-webdriver'; import {Callback} from '../types/callback'; -import { ControlPosition, IControl } from './control/control'; +import {ControlPosition, IControl} from './control/control'; /* eslint-enable no-use-before-define */ From 4c6d8e71ff72b3fadfd59946f6e966151ce5bb0f Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sun, 25 Jul 2021 18:13:23 +0900 Subject: [PATCH 055/142] Typescript: fix lint and update .eslintrc with alternate TS rule (#227) * fix lint and .eslintrc with alternate TS rule * remove comment --- .eslintrc | 4 +++- src/geo/transform.ts | 2 +- src/ui/control/fullscreen_control.ts | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.eslintrc b/.eslintrc index 8dd0ceeadc..397cc5a3a4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -20,6 +20,8 @@ "@typescript-eslint/restrict-plus-operands": "off", "@typescript-eslint/restrict-template-expressions": "off", "@typescript-eslint/explicit-module-boundary-types": "off", + "no-dupe-class-members": "off", + "@typescript-eslint/no-dupe-class-members": ["error"], "@typescript-eslint/no-unused-vars": [ "warn", { "argsIgnorePattern": "^_" } @@ -113,4 +115,4 @@ "es6": true, "browser": false } -} \ No newline at end of file +} diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 4b963761e6..168bafa494 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -5,7 +5,7 @@ import Point from '../symbol/point'; import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; -import {vec4, mat4, mat2, vec2, vec3} from 'gl-matrix'; +import {vec4, mat4, mat2, vec2} from 'gl-matrix'; import {Aabb, Frustum} from "../util/primitives"; import EdgeInsets from './edge_insets'; diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index fa55ee4889..8445e6e5c3 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -22,7 +22,7 @@ type Options = { * @see [View a fullscreen map](https://maplibre.org/maplibre-gl-js-docs/example/fullscreen/) */ -class FullscreenControl implements IControl { +class FullscreenControl implements IControl { _map: Map; _controlContainer: HTMLElement; _fullscreen: boolean; From ac94146ca56d60acbb608f671b25162b1aef72c2 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sun, 25 Jul 2021 19:52:14 +0900 Subject: [PATCH 056/142] Typescript: a number of minor fixes from WIP branch (#228) * fix minor ID type issues * minor casting fix non bool to bool * fix thrown Error message issue * fix a couple of import issues * match date comparison types * remove commented out code * fixes from WIP branch * remove redundant import for lint * more fixes --- src/data/feature_index.ts | 10 ++++++---- src/render/texture.ts | 3 --- src/source/canvas_source.ts | 8 +++++--- src/source/raster_dem_tile_source.ts | 3 +-- src/source/raster_dem_tile_worker_source.ts | 4 +--- src/style-spec/migrate.ts | 4 ++-- src/style/properties.ts | 10 +++++----- src/style/style_layer.ts | 3 ++- src/ui/handler/scroll_zoom.ts | 5 +---- src/ui/handler_manager.ts | 6 +++--- src/ui/marker.ts | 3 +-- src/util/ajax.ts | 15 +++++++-------- src/util/browser.ts | 14 ++------------ src/util/browser/web_worker.ts | 3 +-- src/util/dom.ts | 9 --------- src/util/offscreen_canvas_supported.ts | 8 +++----- src/util/performance.ts | 12 ++++++------ src/util/tile_request_cache.ts | 8 ++++---- src/util/web_worker.ts | 3 ++- src/util/web_worker_transfer.ts | 17 +++++++++++------ 20 files changed, 63 insertions(+), 85 deletions(-) diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index f01a4df490..ca3b3a1890 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -239,7 +239,7 @@ class FeatureIndex { if (!styleLayer) continue; let featureState = {}; - if (id !== undefined && sourceFeatureState) { + if (id && sourceFeatureState) { // `feature-state` expression evaluation requires feature state to be available featureState = sourceFeatureState.getState(styleLayer.sourceLayer || '_geojsonTileLayer', id); } @@ -311,12 +311,14 @@ class FeatureIndex { return false; } - getId(feature: VectorTileFeature, sourceLayerId: string): string | number | void { - let id = feature.id; + // this had void and I changed for boolean, not really sure why either of these would be necessary + // as current input types don't seem to have any way to return falsy, maybe to do with our TS? + getId(feature: VectorTileFeature, sourceLayerId: string): string | number | boolean { + let id: string | number | boolean = feature.id; if (this.promoteId) { const propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId]; id = feature.properties[propName]; - if (typeof id === 'boolean') id = Number(id); + if (typeof id === 'boolean') id = Number(id); } return id; } diff --git a/src/render/texture.ts b/src/render/texture.ts index 1f2710d82f..b868cfbd64 100644 --- a/src/render/texture.ts +++ b/src/render/texture.ts @@ -1,6 +1,3 @@ -import window from '../util/window'; -const {HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageData, ImageBitmap} = window; - import type Context from '../gl/context'; import type {RGBAImage, AlphaImage} from '../util/image'; diff --git a/src/source/canvas_source.ts b/src/source/canvas_source.ts index 1e7bf89a6b..b5cceb6d7d 100644 --- a/src/source/canvas_source.ts +++ b/src/source/canvas_source.ts @@ -86,7 +86,7 @@ class CanvasSource extends ImageSource { if (!options.canvas) { this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'missing required property "canvas"'))); - } else if (typeof options.canvas !== 'string' && !(options.canvas instanceof window.HTMLCanvasElement)) { + } else if (typeof options.canvas !== 'string' && !(options.canvas instanceof HTMLCanvasElement)) { this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, '"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))); } @@ -111,9 +111,11 @@ class CanvasSource extends ImageSource { load() { this._loaded = true; if (!this.canvas) { - this.canvas = (this.options.canvas instanceof window.HTMLCanvasElement) ? + this.canvas = (this.options.canvas instanceof HTMLCanvasElement) ? this.options.canvas : - window.document.getElementById(this.options.canvas); + window.document.getElementById(this.options.canvas) as HTMLCanvasElement; + // cast to HTMLCanvasElement in else of ternary + // should we do a safety check and throw if it's not actually HTMLCanvasElement? } this.width = this.canvas.width; this.height = this.canvas.height; diff --git a/src/source/raster_dem_tile_source.ts b/src/source/raster_dem_tile_source.ts index 62e8e3d172..d603fd7cd1 100644 --- a/src/source/raster_dem_tile_source.ts +++ b/src/source/raster_dem_tile_source.ts @@ -2,7 +2,6 @@ import {getImage, ResourceType} from '../util/ajax'; import {extend} from '../util/util'; import {Evented} from '../util/evented'; import browser from '../util/browser'; -import window from '../util/window'; import offscreenCanvasSupported from '../util/offscreen_canvas_supported'; import {OverscaledTileID} from './tile_id'; import RasterTileSource from './raster_tile_source'; @@ -54,7 +53,7 @@ class RasterDEMTileSource extends RasterTileSource implements Source { if (this.map._refreshExpiredTiles) tile.setExpiryData(img); delete (img as any).cacheControl; delete (img as any).expires; - const transfer = window.ImageBitmap && img instanceof window.ImageBitmap && offscreenCanvasSupported(); + const transfer = ImageBitmap && img instanceof ImageBitmap && offscreenCanvasSupported(); const rawImageData = transfer ? img : browser.getImageData(img, 1); const params = { uid: tile.uid, diff --git a/src/source/raster_dem_tile_worker_source.ts b/src/source/raster_dem_tile_worker_source.ts index f56a6b5e10..1b5696a8fe 100644 --- a/src/source/raster_dem_tile_worker_source.ts +++ b/src/source/raster_dem_tile_worker_source.ts @@ -1,6 +1,5 @@ import DEMData from '../data/dem_data'; import {RGBAImage} from '../util/image'; -import window from '../util/window'; import type Actor from '../util/actor'; import type { @@ -8,7 +7,6 @@ import type { WorkerDEMTileCallback, TileParameters } from './worker_source'; -const {ImageBitmap} = window; class RasterDEMTileWorkerSource { actor: Actor; @@ -25,7 +23,7 @@ class RasterDEMTileWorkerSource { loadTile(params: WorkerDEMTileParameters, callback: WorkerDEMTileCallback) { const {uid, encoding, rawImageData} = params; // Main thread will transfer ImageBitmap if offscreen decode with OffscreenCanvas is supported, else it will transfer an already decoded image. - const imagePixels = (ImageBitmap && rawImageData instanceof ImageBitmap) ? this.getImageData(rawImageData) : rawImageData; + const imagePixels = (ImageBitmap && rawImageData instanceof ImageBitmap) ? this.getImageData(rawImageData) : rawImageData as RGBAImage; const dem = new DEMData(uid, imagePixels, encoding); this.loaded = this.loaded || {}; this.loaded[uid] = dem; diff --git a/src/style-spec/migrate.ts b/src/style-spec/migrate.ts index 883cc677a0..5c7f452967 100644 --- a/src/style-spec/migrate.ts +++ b/src/style-spec/migrate.ts @@ -24,12 +24,12 @@ export default function(style) { } if (style.version === 8) { - migrated = migrateToExpressions(style); + migrated = !!migrateToExpressions(style); migrated = true; } if (!migrated) { - throw new Error('cannot migrate from', style.version); + throw new Error(`Cannot migrate from ${style.version}`); } return style; diff --git a/src/style/properties.ts b/src/style/properties.ts index 614b19b9a8..091abb91a0 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -1,19 +1,19 @@ import assert from 'assert'; import {clone, extend, easeCubicInOut} from '../util/util'; import * as interpolate from '../style-spec/util/interpolate'; -import {normalizePropertyExpression} from '../style-spec/expression'; import Color from '../style-spec/util/color'; import {register} from '../util/web_worker_transfer'; import EvaluationParameters from './evaluation_parameters'; -import type {CanonicalTileID} from '../source/tile_id'; -import type {StylePropertySpecification} from '../style-spec/style-spec'; -import type { +import {CanonicalTileID} from '../source/tile_id'; +import {StylePropertySpecification} from '../style-spec/style-spec'; +import { TransitionSpecification, PropertyValueSpecification } from '../style-spec/types'; -import type { +import { + normalizePropertyExpression, Feature, FeatureState, StylePropertyExpression, diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index dba295d415..295e9196dd 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -16,7 +16,8 @@ import type {Bucket} from '../data/bucket'; import type Point from '../symbol/point'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; -import EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters'; +import EvaluationParameters from './evaluation_parameters'; +import type {CrossfadeParameters} from './evaluation_parameters'; import type Transform from '../geo/transform'; import type { diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 29bda3af1d..42741d97c7 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -3,7 +3,6 @@ import DOM from '../../util/dom'; import {ease as _ease, bindAll, bezier} from '../../util/util'; import browser from '../../util/browser'; -import window from '../../util/window'; import {number as interpolate} from '../../style-spec/util/interpolate'; import LngLat from '../../geo/lng_lat'; @@ -149,9 +148,7 @@ class ScrollZoomHandler { wheel(e: WheelEvent) { if (!this.isEnabled()) return; - - // Remove `any` cast when https://github.com/facebook/flow/issues/4879 is fixed. - let value = e.deltaMode === (window.WheelEvent as any).DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY; + let value = e.deltaMode === WheelEvent.DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY; const now = browser.now(), timeDelta = now - (this._lastWheelEventTime || 0); diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index e12b67d4b7..aea2264282 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -106,10 +106,10 @@ class HandlerManager { _previousActiveHandlers: { [x: string]: Handler }; - _listeners: Array<[HTMLElement, string, void | { + _listeners: Array<[Window | Document | HTMLElement, string, { passive?: boolean, capture?: boolean - }]>; + } | undefined]>; constructor(map: Map, options: { interactive: boolean, @@ -332,7 +332,7 @@ class HandlerManager { for (const {handlerName, handler, allowed} of this._handlers) { if (!handler.isEnabled()) continue; - let data: HandlerResult | void; + let data: HandlerResult; if (this._blockedByActive(activeHandlers, allowed, handlerName)) { handler.reset(); diff --git a/src/ui/marker.ts b/src/ui/marker.ts index 3789e1a692..bf6b9bcd50 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -1,5 +1,4 @@ import DOM from '../util/dom'; -import window from '../util/window'; import LngLat from '../geo/lng_lat'; import Point from '../symbol/point'; import smartWrap from '../util/smart_wrap'; @@ -80,7 +79,7 @@ export default class Marker extends Evented { super(); // For backward compatibility -- the constructor used to accept the element as a // required first argument, before it was made optional. - if (options instanceof window.HTMLElement || legacyOptions) { + if (options instanceof HTMLElement || legacyOptions) { options = extend({element: options}, legacyOptions); } diff --git a/src/util/ajax.ts b/src/util/ajax.ts index c9ec90f5a3..ec8bd95774 100644 --- a/src/util/ajax.ts +++ b/src/util/ajax.ts @@ -119,8 +119,8 @@ export const getReferrer = isWorker() ? const isFileURL = url => /^file:/.test(url) || (/^file:/.test(getReferrer()) && !/^\w+:/.test(url)); function makeFetchRequest(requestParameters: RequestParameters, callback: ResponseCallback): Cancelable { - const controller = new window.AbortController(); - const request = new window.Request(requestParameters.url, { + const controller = new AbortController(); + const request = new Request(requestParameters.url, { method: requestParameters.method || 'GET', body: requestParameters.body, credentials: requestParameters.credentials, @@ -211,7 +211,7 @@ function makeFetchRequest(requestParameters: RequestParameters, callback: Respon } function makeXMLHttpRequest(requestParameters: RequestParameters, callback: ResponseCallback): Cancelable { - const xhr: XMLHttpRequest = new window.XMLHttpRequest(); + const xhr: XMLHttpRequest = new XMLHttpRequest(); xhr.open(requestParameters.method || 'GET', requestParameters.url, true); if (requestParameters.type === 'arrayBuffer') { @@ -267,7 +267,7 @@ export const makeRequest = function(requestParameters: RequestParameters, callba } } if (!isFileURL(requestParameters.url)) { - if ((window as any).fetch && window.Request && window.AbortController && Object.prototype.hasOwnProperty.call(window.Request.prototype, 'signal')) { + if (fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, 'signal')) { return makeFetchRequest(requestParameters, callback); } if (isWorker() && (self as any).worker && (self as any).worker.actor) { @@ -302,8 +302,7 @@ function sameOrigin(url) { const transparentPngUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII='; function arrayBufferToImage(data: ArrayBuffer, callback: (err?: Error | null, image?: HTMLImageElement | null) => void, cacheControl?: string | null, expires?: string | null) { - const img: HTMLImageElement = new window.Image(); - const URL = window.URL; + const img: HTMLImageElement = new Image(); img.onload = () => { callback(null, img); URL.revokeObjectURL(img.src); @@ -314,14 +313,14 @@ function arrayBufferToImage(data: ArrayBuffer, callback: (err?: Error | null, im window.requestAnimationFrame(() => { img.src = transparentPngUrl; }); }; img.onerror = () => callback(new Error('Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.')); - const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'}); + const blob: Blob = new Blob([new Uint8Array(data)], {type: 'image/png'}); (img as any).cacheControl = cacheControl; (img as any).expires = expires; img.src = data.byteLength ? URL.createObjectURL(blob) : transparentPngUrl; } function arrayBufferToImageBitmap(data: ArrayBuffer, callback: (err?: Error | null, image?: ImageBitmap | null) => void) { - const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'}); + const blob: Blob = new Blob([new Uint8Array(data)], {type: 'image/png'}); // HM TODO: check that this works - removing window shouldn't affect this in theory createImageBitmap(blob).then((imgBitmap) => { callback(null, imgBitmap); diff --git a/src/util/browser.ts b/src/util/browser.ts index 73465ebb8e..614eed2c9a 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -5,16 +5,6 @@ const now = window.performance && window.performance.now ? window.performance.now.bind(window.performance) : Date.now.bind(Date); -const raf = window.requestAnimationFrame; // || -// window.mozRequestAnimationFrame || -// window.webkitRequestAnimationFrame || -// window.msRequestAnimationFrame; - -const cancel = window.cancelAnimationFrame; // || -// window.mozCancelAnimationFrame || -// window.webkitCancelAnimationFrame || -// window.msCancelAnimationFrame; - let linkEl; let reducedMotionQuery: MediaQueryList; @@ -30,8 +20,8 @@ const exported = { now, frame(fn: (paintStartTimestamp: number) => void): Cancelable { - const frame = raf(fn); - return {cancel: () => cancel(frame)}; + const frame = requestAnimationFrame(fn); + return {cancel: () => cancelAnimationFrame(frame)}; }, getImageData(img: CanvasImageSource, padding: number = 0): ImageData { diff --git a/src/util/browser/web_worker.ts b/src/util/browser/web_worker.ts index 124f01c752..888c127899 100644 --- a/src/util/browser/web_worker.ts +++ b/src/util/browser/web_worker.ts @@ -1,8 +1,7 @@ -import window from '../window'; import mapboxgl from '../../'; import type {WorkerInterface} from '../web_worker'; export default function(): WorkerInterface { - return new window.Worker(mapboxgl.workerUrl) as any; + return new Worker(mapboxgl.workerUrl) as any; } diff --git a/src/util/dom.ts b/src/util/dom.ts index 2479ba1354..487a6483eb 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -152,15 +152,6 @@ DOM.touchPos = function (el: HTMLElement, touches: TouchList) { DOM.mouseButton = function (e: MouseEvent) { assert(e.type === 'mousedown' || e.type === 'mouseup'); - // this issue is a fix for FF 50 on mac, current version is 90 - // confirm unsupported InstallTrigger does not cause this bug in modern versions - // if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey && - // window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) { - // // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131: - // // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when - // // using Control + left click - // return 0; - // } return e.button; }; diff --git a/src/util/offscreen_canvas_supported.ts b/src/util/offscreen_canvas_supported.ts index 47d4821ad5..44ddadc559 100644 --- a/src/util/offscreen_canvas_supported.ts +++ b/src/util/offscreen_canvas_supported.ts @@ -1,12 +1,10 @@ -import window from './window'; - let supportsOffscreenCanvas: boolean | undefined | null; export default function offscreenCanvasSupported(): boolean { if (supportsOffscreenCanvas == null) { - supportsOffscreenCanvas = window.OffscreenCanvas && - new window.OffscreenCanvas(1, 1).getContext('2d') && - typeof window.createImageBitmap === 'function'; + supportsOffscreenCanvas = OffscreenCanvas && + new OffscreenCanvas(1, 1).getContext('2d') && + typeof createImageBitmap === 'function'; } return supportsOffscreenCanvas; diff --git a/src/util/performance.ts b/src/util/performance.ts index 592782502c..3b14f7e6de 100644 --- a/src/util/performance.ts +++ b/src/util/performance.ts @@ -10,11 +10,11 @@ export type PerformanceMetrics = { percentDroppedFrames: number }; -export const PerformanceMarkers = { - create: 'create', - load: 'load', - fullLoad: 'fullLoad' -}; +export enum PerformanceMarkers { + create = 'create', + load = 'load', + fullLoad = 'fullLoad' +} let lastFrameTime = null; let frameTimes = []; @@ -23,7 +23,7 @@ const minFramerateTarget = 30; const frameTimeTarget = 1000 / minFramerateTarget; export const PerformanceUtils = { - mark(marker: keyof typeof PerformanceMarkers) { + mark(marker: PerformanceMarkers) { performance.mark(marker); }, frame(timestamp: number) { diff --git a/src/util/tile_request_cache.ts b/src/util/tile_request_cache.ts index a0dcaf151e..062214d5fa 100644 --- a/src/util/tile_request_cache.ts +++ b/src/util/tile_request_cache.ts @@ -12,7 +12,7 @@ const MIN_TIME_UNTIL_EXPIRY = 1000 * 60 * 7; // 7 minutes. Skip caching tiles wi export type ResponseOptions = { status: number, statusText: string, - headers: window.Headers + headers: Headers }; // We're using a global shared cache object. Normally, requesting ad-hoc Cache objects is fine, but @@ -58,7 +58,7 @@ export function cachePut(request: Request, response: Response, requestTime: numb const options: ResponseOptions = { status: response.status, statusText: response.statusText, - headers: new window.Headers() + headers: new Headers() }; response.headers.forEach((v, k) => options.headers.set(k, v)); @@ -74,7 +74,7 @@ export function cachePut(request: Request, response: Response, requestTime: numb if (timeUntilExpiry < MIN_TIME_UNTIL_EXPIRY) return; prepareBody(response, body => { - const clonedResponse = new window.Response(body, options); + const clonedResponse = new Response(body, options); cacheOpen(); if (!sharedCache) return; @@ -120,7 +120,7 @@ export function cacheGet(request: Request, callback: (error?: any | null, respon function isFresh(response) { if (!response) return false; - const expires = new Date(response.headers.get('Expires') || 0); + const expires = new Date(response.headers.get('Expires') || 0).getTime(); const cacheControl = parseCacheControl(response.headers.get('Cache-Control') || ''); return expires > Date.now() && !cacheControl['no-cache']; } diff --git a/src/util/web_worker.ts b/src/util/web_worker.ts index 36fbc15ecb..719e3c2fe9 100644 --- a/src/util/web_worker.ts +++ b/src/util/web_worker.ts @@ -10,7 +10,8 @@ import type {WorkerSource} from '../source/worker_source'; type MessageListener = ( a: { - data: any + data: any, + target: any } ) => unknown; diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index ae3ab29858..096abb51c9 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -6,8 +6,6 @@ import {StylePropertyFunction, StyleExpression, ZoomDependentExpression, ZoomCon import CompoundExpression from '../style-spec/expression/compound_expression'; import expressions from '../style-spec/expression/definitions'; import ResolvedImage from '../style-spec/expression/types/resolved_image'; -import window from './window'; -const {ImageData, ImageBitmap} = window; import type {Transferable} from '../types/transferable'; @@ -15,7 +13,7 @@ type SerializedObject = { [_: string]: Serialized }; // eslint-disable-line -export type Serialized = null | void | boolean | number | string | Boolean | Number | String | Date | RegExp | ArrayBuffer | $ArrayBufferView | ImageData | Array | SerializedObject; +export type Serialized = null | void | boolean | number | string | Boolean | Number | String | Date | RegExp | ArrayBuffer | ImageData | Array | SerializedObject; type Registry = { [_: string]: { @@ -134,15 +132,22 @@ export function serialize(input: unknown, transferables?: Array | return input; } - if (isArrayBuffer(input) || isImageBitmap(input)) { + if (isArrayBuffer(input)) { if (transferables) { transferables.push(((input as any as ArrayBuffer))); } - return input; + return input as any as ArrayBuffer; + } + + if (isImageBitmap(input)) { + if (transferables) { + transferables.push(((input as any as ImageBitmap))); + } + return input as ImageBitmap; } if (ArrayBuffer.isView(input)) { - const view: $ArrayBufferView = (input as any); + const view = input; if (transferables) { transferables.push(view.buffer); } From eafe46c3d298507b27b847532e4f61c688fa3dcf Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 18:17:05 +0300 Subject: [PATCH 057/142] Fix small typings issues --- src/data/dem_data.ts | 7 ++++--- src/data/feature_index.ts | 4 +--- src/render/draw_fill.ts | 2 +- src/render/program.ts | 2 +- src/source/raster_dem_tile_worker_source.ts | 2 +- src/source/rtl_text_plugin.ts | 2 +- src/source/tile_bounds.ts | 4 ++-- src/style-spec/expression/compound_expression.ts | 2 +- src/style-spec/expression/definitions/case.ts | 2 +- src/style-spec/expression/definitions/coalesce.ts | 2 +- src/style-spec/expression/definitions/coercion.ts | 2 +- src/style-spec/expression/definitions/comparison.ts | 2 +- src/style-spec/expression/definitions/length.ts | 2 +- src/style-spec/expression/definitions/literal.ts | 2 +- src/style-spec/migrate/v8.ts | 2 +- src/style-spec/validate/validate_array.ts | 2 +- src/style-spec/validate/validate_enum.ts | 2 +- src/style/style_layer/custom_style_layer.ts | 3 ++- src/symbol/quads.ts | 4 ++-- src/util/actor.ts | 8 ++++---- 20 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/data/dem_data.ts b/src/data/dem_data.ts index 18a7db91ca..0ebbce80d8 100644 --- a/src/data/dem_data.ts +++ b/src/data/dem_data.ts @@ -25,9 +25,10 @@ export default class DEMData { constructor(uid: string, data: RGBAImage, encoding: "mapbox" | "terrarium") { this.uid = uid; if (data.height !== data.width) throw new RangeError('DEM tiles must be square'); - if (encoding && encoding !== "mapbox" && encoding !== "terrarium") return warnOnce( - `"${encoding}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".` - ); + if (encoding && encoding !== "mapbox" && encoding !== "terrarium") { + warnOnce(`"${encoding}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`); + return; + } this.stride = data.height; const dim = this.dim = data.height - 2; this.data = new Uint32Array(data.data.buffer); diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index ca3b3a1890..09b30a8e3d 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -311,9 +311,7 @@ class FeatureIndex { return false; } - // this had void and I changed for boolean, not really sure why either of these would be necessary - // as current input types don't seem to have any way to return falsy, maybe to do with our TS? - getId(feature: VectorTileFeature, sourceLayerId: string): string | number | boolean { + getId(feature: VectorTileFeature, sourceLayerId: string): string | number | void { let id: string | number | boolean = feature.id; if (this.promoteId) { const propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId]; diff --git a/src/render/draw_fill.ts b/src/render/draw_fill.ts index 5689821d50..39740992ad 100644 --- a/src/render/draw_fill.ts +++ b/src/render/draw_fill.ts @@ -108,7 +108,7 @@ function drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode } else { indexBuffer = bucket.indexBuffer2; segments = bucket.segments2; - const drawingBufferSize = [gl.drawingBufferWidth, gl.drawingBufferHeight]; + const drawingBufferSize = [gl.drawingBufferWidth, gl.drawingBufferHeight] as [number, number]; uniformValues = (programName === 'fillOutlinePattern' && image) ? fillOutlinePatternUniformValues(tileMatrix, painter, crossfade, tile, drawingBufferSize) : fillOutlineUniformValues(tileMatrix, drawingBufferSize); diff --git a/src/render/program.ts b/src/render/program.ts index 83f8d03887..6632ad75c6 100644 --- a/src/render/program.ts +++ b/src/render/program.ts @@ -133,7 +133,7 @@ class Program { layoutVertexBuffer: VertexBuffer, indexBuffer: IndexBuffer, segments: SegmentVector, - currentProperties: any, + currentProperties?: any, zoom?: number | null, configuration?: ProgramConfiguration | null, dynamicLayoutBuffer?: VertexBuffer | null, diff --git a/src/source/raster_dem_tile_worker_source.ts b/src/source/raster_dem_tile_worker_source.ts index 1b5696a8fe..8505f915da 100644 --- a/src/source/raster_dem_tile_worker_source.ts +++ b/src/source/raster_dem_tile_worker_source.ts @@ -14,7 +14,7 @@ class RasterDEMTileWorkerSource { [_: string]: DEMData }; offscreenCanvas: OffscreenCanvas; - offscreenCanvasContext: CanvasRenderingContext2D; + offscreenCanvasContext: OffscreenCanvasRenderingContext2D; constructor() { this.loaded = {}; diff --git a/src/source/rtl_text_plugin.ts b/src/source/rtl_text_plugin.ts index 611111347c..e0edfc73f6 100644 --- a/src/source/rtl_text_plugin.ts +++ b/src/source/rtl_text_plugin.ts @@ -25,7 +25,7 @@ let _completionCallback = null; let pluginStatus = status.unavailable; let pluginURL = null; -export const triggerPluginCompletionEvent = function(error: Error | undefined | null) { +export const triggerPluginCompletionEvent = function(error: Error | string | undefined | null) { // NetworkError's are not correctly reflected by the plugin status which prevents reloading plugin if (error && typeof error === 'string' && error.indexOf('NetworkError') > -1) { pluginStatus = status.error; diff --git a/src/source/tile_bounds.ts b/src/source/tile_bounds.ts index 804eda7921..13cc2ae00c 100644 --- a/src/source/tile_bounds.ts +++ b/src/source/tile_bounds.ts @@ -1,4 +1,4 @@ -import LngLatBounds from '../geo/lng_lat_bounds'; +import LngLatBounds, { LngLatBoundsLike } from '../geo/lng_lat_bounds'; import {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate'; import type {CanonicalTileID} from './tile_id'; @@ -14,7 +14,7 @@ class TileBounds { this.maxzoom = maxzoom || 24; } - validateBounds(bounds: [number, number, number, number]) { + validateBounds(bounds: [number, number, number, number]): LngLatBoundsLike { // make sure the bounds property contains valid longitude and latitudes if (!Array.isArray(bounds) || bounds.length !== 4) return [-180, -90, 180, 90]; return [Math.max(-180, bounds[0]), Math.max(-90, bounds[1]), Math.min(180, bounds[2]), Math.min(90, bounds[3])]; diff --git a/src/style-spec/expression/compound_expression.ts b/src/style-spec/expression/compound_expression.ts index db51278b20..1788c71900 100644 --- a/src/style-spec/expression/compound_expression.ts +++ b/src/style-spec/expression/compound_expression.ts @@ -49,7 +49,7 @@ class CompoundExpression implements Expression { } serialize(): Array { - return [this.name].concat(this.args.map(arg => arg.serialize())); + return [this.name as unknown].concat(this.args.map(arg => arg.serialize())); } static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index 28e343d2b2..c237745950 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -74,7 +74,7 @@ class Case implements Expression { } serialize() { - const serialized = ["case"]; + const serialized = ["case" as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index 1eda5d8e90..4232d41c47 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -82,7 +82,7 @@ class Coalesce implements Expression { } serialize() { - const serialized = ["coalesce"]; + const serialized = ["coalesce" as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/coercion.ts b/src/style-spec/expression/definitions/coercion.ts index 59e4e90476..26e4c73d90 100644 --- a/src/style-spec/expression/definitions/coercion.ts +++ b/src/style-spec/expression/definitions/coercion.ts @@ -122,7 +122,7 @@ class Coercion implements Expression { return new ImageExpression(this.args[0]).serialize(); } - const serialized = [`to-${this.type.kind}`]; + const serialized = [`to-${this.type.kind}` as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index ef84d95c46..541a77aa91 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -167,7 +167,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato } serialize() { - const serialized = [op]; + const serialized = [op as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index e88258506a..f5e2140f48 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -50,7 +50,7 @@ class Length implements Expression { } serialize() { - const serialized = ["length"]; + const serialized = ["length" as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/literal.ts b/src/style-spec/expression/definitions/literal.ts index 7a98e2b359..f709bf3e31 100644 --- a/src/style-spec/expression/definitions/literal.ts +++ b/src/style-spec/expression/definitions/literal.ts @@ -58,7 +58,7 @@ class Literal implements Expression { // Constant-folding can generate Literal expressions that you // couldn't actually generate with a "literal" expression, // so we have to implement an equivalent serialization here - return ["rgba"].concat(this.value.toArray()); + return ["rgba" as unknown].concat(this.value.toArray()); } else if (this.value instanceof Formatted) { // Same as Color return this.value.serialize(); diff --git a/src/style-spec/migrate/v8.ts b/src/style-spec/migrate/v8.ts index 632b938ee4..acd4c5a06f 100644 --- a/src/style-spec/migrate/v8.ts +++ b/src/style-spec/migrate/v8.ts @@ -39,7 +39,7 @@ export default function(style) { // Rename properties, reverse coordinates in source and layers eachSource(style, (source) => { - if (source.type === 'video' && source.url !== undefined) { + if (source.type === 'video' && source['url'] !== undefined) { renameProperty(source, 'url', 'urls'); } if (source.type === 'video') { diff --git a/src/style-spec/validate/validate_array.ts b/src/style-spec/validate/validate_array.ts index 2f5638a61a..b8b45a9f38 100644 --- a/src/style-spec/validate/validate_array.ts +++ b/src/style-spec/validate/validate_array.ts @@ -29,7 +29,7 @@ export default function validateArray(options) { }; if (styleSpec.$version < 7) { - arrayElementSpec.function = arraySpec.function; + arrayElementSpec['function'] = arraySpec.function; } if (getType(arraySpec.value) === 'object') { diff --git a/src/style-spec/validate/validate_enum.ts b/src/style-spec/validate/validate_enum.ts index 655830c96a..66b9cb3866 100644 --- a/src/style-spec/validate/validate_enum.ts +++ b/src/style-spec/validate/validate_enum.ts @@ -13,7 +13,7 @@ export default function validateEnum(options) { errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`)); } } else { // >=v8 - if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) { + if (Object.keys(valueSpec.values).indexOf(unbundle(value) as string) === -1) { errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`)); } } diff --git a/src/style/style_layer/custom_style_layer.ts b/src/style/style_layer/custom_style_layer.ts index 398e2d3f61..a869496144 100644 --- a/src/style/style_layer/custom_style_layer.ts +++ b/src/style/style_layer/custom_style_layer.ts @@ -199,7 +199,8 @@ class CustomStyleLayer extends StyleLayer { recalculate() {} updateTransitions() {} - hasTransition() {} + // HM TODO: is this correct? there was no return value before I changed this... + hasTransition() { return false } serialize() { assert(false, "Custom layers cannot be serialized"); diff --git a/src/symbol/quads.ts b/src/symbol/quads.ts index 9c3b12983d..1a2af1e0dc 100644 --- a/src/symbol/quads.ts +++ b/src/symbol/quads.ts @@ -268,11 +268,11 @@ export function getGlyphQuads( [positionedGlyph.x + halfAdvance, positionedGlyph.y] : [0, 0]; - let builtInOffset = alongLine ? + let builtInOffset: [number, number] = alongLine ? [0, 0] : [positionedGlyph.x + halfAdvance + textOffset[0], positionedGlyph.y + textOffset[1] - lineOffset]; - let verticalizedLabelOffset = [0, 0]; + let verticalizedLabelOffset = [0, 0] as [number, number]; if (rotateVerticalGlyph) { // Vertical POI labels that are rotated 90deg CW and whose glyphs must preserve upright orientation // need to be rotated 90deg CCW. After a quad is rotated, it is translated to the original built-in offset. diff --git a/src/util/actor.ts b/src/util/actor.ts index 857abb6dbe..74fac25ae0 100644 --- a/src/util/actor.ts +++ b/src/util/actor.ts @@ -39,10 +39,10 @@ class Actor { this.target = target; this.parent = parent; this.mapId = mapId; - this.callbacks = {}; - this.tasks = {}; + this.callbacks = {} as { number: any }; + this.tasks = {} as { number: any }; this.taskQueue = []; - this.cancelCallbacks = {}; + this.cancelCallbacks = {} as { number: Cancelable }; bindAll(['receive', 'process'], this); this.invoker = new ThrottledInvoker(this.process); this.target.addEventListener('message', this.receive, false); @@ -177,7 +177,7 @@ class Actor { } else { let completed = false; const buffers: Array | undefined | null = isSafari(this.globalScope) ? undefined : []; - const done = task.hasCallback ? (err, data) => { + const done = task.hasCallback ? (err: Error, data?: any) => { completed = true; delete this.cancelCallbacks[id]; this.target.postMessage({ From 0306da0739890ad2d32d627bccaaf69733ce8287 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 22:35:43 +0300 Subject: [PATCH 058/142] More typescript fixes --- src/geo/lng_lat_bounds.ts | 7 ++++--- src/render/draw_symbol.ts | 2 +- src/source/geojson_wrapper.ts | 4 ++-- src/source/tile_cache.ts | 6 +++--- src/source/vector_tile_worker_source.ts | 6 +++--- src/style-spec/expression/definitions/assertion.ts | 2 +- src/style-spec/expression/definitions/interpolate.ts | 4 ++-- src/style-spec/expression/definitions/match.ts | 2 +- src/style-spec/expression/definitions/within.ts | 7 +++---- src/style-spec/expression/evaluation_context.ts | 2 +- src/style-spec/feature_filter/convert.ts | 4 ++-- src/style-spec/feature_filter/index.ts | 6 +++--- src/style-spec/migrate/expressions.ts | 6 +++--- src/style-spec/style-spec.ts | 4 ++-- src/style-spec/validate/validate_function.ts | 6 +++--- src/style/style_layer/background_style_layer_properties.ts | 5 +++-- src/style/style_layer/line_style_layer_properties.ts | 7 ++++--- src/ui/handler/scroll_zoom.ts | 4 ++-- src/ui/handler_manager.ts | 5 +++-- src/util/performance.ts | 6 ++++-- 20 files changed, 50 insertions(+), 45 deletions(-) diff --git a/src/geo/lng_lat_bounds.ts b/src/geo/lng_lat_bounds.ts index 5bf2e1852a..c929ce4468 100644 --- a/src/geo/lng_lat_bounds.ts +++ b/src/geo/lng_lat_bounds.ts @@ -24,7 +24,7 @@ class LngLatBounds { _sw: LngLat; // This constructor is too flexible to type. It should not be so flexible. - constructor(sw: any, ne: any) { + constructor(sw?: any, ne?: any) { if (!sw) { // noop } else if (ne) { @@ -81,7 +81,7 @@ class LngLatBounds { } else { if (Array.isArray(obj)) { - if (obj.length === 4 || obj.every(Array.isArray)) { + if (obj.length === 4 || (obj as any[]).every(Array.isArray)) { const lngLatBoundsObj = (obj as any as LngLatBoundsLike); return this.extend(LngLatBounds.convert(lngLatBoundsObj)); } else { @@ -251,7 +251,8 @@ class LngLatBounds { * llb; // = LngLatBounds {_sw: LngLat {lng: -73.9876, lat: 40.7661}, _ne: LngLat {lng: -73.9397, lat: 40.8002}} */ static convert(input: LngLatBoundsLike): LngLatBounds { - if (!input || input instanceof LngLatBounds) return input; + if (input instanceof LngLatBounds) return input; + if (!input) return null; return new LngLatBounds(input); } } diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 76813a7d70..9faf83be01 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -25,7 +25,7 @@ import { import type Painter from './painter'; import type SourceCache from '../source/source_cache'; import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; -import type SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket'; +import SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket'; import type Texture from '../render/texture'; import type {OverscaledTileID} from '../source/tile_id'; diff --git a/src/source/geojson_wrapper.ts b/src/source/geojson_wrapper.ts index 646fa3a279..2b1fca8d75 100644 --- a/src/source/geojson_wrapper.ts +++ b/src/source/geojson_wrapper.ts @@ -8,14 +8,14 @@ import EXTENT from '../data/extent'; // global type and used in module definitions for those two modules. type Feature = { type: 1, - id: unknown, + id: any, tags: { [_: string]: string | number | boolean }, geometry: Array<[number, number]> } | { type: 2 | 3, - id: unknown, + id: any, tags: { [_: string]: string | number | boolean }, diff --git a/src/source/tile_cache.ts b/src/source/tile_cache.ts index e5da3dbe2b..23a73688dd 100644 --- a/src/source/tile_cache.ts +++ b/src/source/tile_cache.ts @@ -13,7 +13,7 @@ class TileCache { data: { [key: string]: Array<{ value: Tile, - timeout: TimeoutID | undefined | null + timeout: ReturnType | undefined | null }> }; order: Array; @@ -72,7 +72,7 @@ class TileCache { if (expiryTimeout !== undefined) { dataWrapper.timeout = setTimeout(() => { this.remove(tileID, dataWrapper); - }, expiryTimeout); + }, expiryTimeout as number); } this.data[key].push(dataWrapper); @@ -158,7 +158,7 @@ class TileCache { */ remove(tileID: OverscaledTileID, value?: { value: Tile, - timeout: TimeoutID | undefined | null + timeout: ReturnType | undefined | null } | null) { if (!this.has(tileID)) { return this; } const key = tileID.wrapped().key; diff --git a/src/source/vector_tile_worker_source.ts b/src/source/vector_tile_worker_source.ts index d2c7c37a98..849427df31 100644 --- a/src/source/vector_tile_worker_source.ts +++ b/src/source/vector_tile_worker_source.ts @@ -121,11 +121,11 @@ class VectorTileWorkerSource implements WorkerSource { } const rawTileData = response.rawData; - const cacheControl = {}; + const cacheControl = {} as {expires: any, cacheControl: any}; if (response.expires) cacheControl.expires = response.expires; if (response.cacheControl) cacheControl.cacheControl = response.cacheControl; - const resourceTiming = {}; + const resourceTiming = {} as {resourceTiming: any}; if (perf) { const resourceTimingData = perf.finish(); // it's necessary to eval the result of getEntriesByName() here via parse/stringify @@ -159,7 +159,7 @@ class VectorTileWorkerSource implements WorkerSource { const workerTile = loaded[uid]; workerTile.showCollisionBoxes = params.showCollisionBoxes; - const done = (err, data) => { + const done = (err?: Error, data?: any) => { const reloadCallback = workerTile.reloadCallback; if (reloadCallback) { delete workerTile.reloadCallback; diff --git a/src/style-spec/expression/definitions/assertion.ts b/src/style-spec/expression/definitions/assertion.ts index d1a820a2ba..2ccaf09484 100644 --- a/src/style-spec/expression/definitions/assertion.ts +++ b/src/style-spec/expression/definitions/assertion.ts @@ -108,7 +108,7 @@ class Assertion implements Expression { serialize(): Array { const type = this.type; - const serialized = [type.kind]; + const serialized = [type.kind as unknown]; if (type.kind === 'array') { const itemType = type.itemType; if (itemType.kind === 'string' || diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index 9cf0d603f3..7b6bfd7a0e 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -144,7 +144,7 @@ class Interpolate implements Expression { return context.error(`Type ${toString(outputType)} is not interpolatable.`) as null; } - return new Interpolate(outputType, (operator as any), interpolation, input, stops); + return new Interpolate(outputType, (operator as any), interpolation as InterpolationType, input as Expression, stops); } evaluate(ctx: EvaluationContext) { @@ -204,7 +204,7 @@ class Interpolate implements Expression { interpolation = ["exponential", this.interpolation.base]; } } else { - interpolation = ["cubic-bezier" ].concat(this.interpolation.controlPoints); + interpolation = ["cubic-bezier" as unknown].concat(this.interpolation.controlPoints); } const serialized = [this.operator, interpolation, this.input.serialize()]; diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index aeab8a8e76..c9252f88e9 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -46,7 +46,7 @@ class Match implements Expression { const cases = {}; const outputs = []; for (let i = 2; i < args.length - 1; i += 2) { - let labels = args[i]; + let labels = args[i] as unknown[]; const value = args[i + 1]; if (!Array.isArray(labels)) { diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index ff2a673267..c04006b561 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -4,7 +4,6 @@ import {BooleanType} from '../types'; import type {Expression} from '../expression'; import type ParsingContext from '../parsing_context'; import type EvaluationContext from '../evaluation_context'; -import Point from '../../../symbol/point'; import type {CanonicalTileID} from '../../../source/tile_id'; type GeoJSONPolygons = GeoJSON.Polygon | GeoJSON.MultiPolygon; @@ -14,7 +13,7 @@ type BBox = [number, number, number, number]; const EXTENT = 8192; -function updateBBox(bbox: BBox, coord: Point) { +function updateBBox(bbox: BBox, coord: [number, number]) { bbox[0] = Math.min(bbox[0], coord[0]); bbox[1] = Math.min(bbox[1], coord[1]); bbox[2] = Math.max(bbox[2], coord[0]); @@ -37,7 +36,7 @@ function boxWithinBox(bbox1: BBox, bbox2: BBox) { return true; } -function getTileCoordinates(p, canonical: CanonicalTileID) { +function getTileCoordinates(p, canonical: CanonicalTileID): [number, number] { const x = mercatorXfromLng(p[0]); const y = mercatorYfromLat(p[1]); const tilesAtZoom = Math.pow(2, canonical.z); @@ -207,7 +206,7 @@ function getTileLines(geometry, lineBBox, polyBBox, canonical) { for (const line of geometry) { const tileLine = []; for (const point of line) { - const p = [point.x + shifts[0], point.y + shifts[1]]; + const p = [point.x + shifts[0], point.y + shifts[1]] as [number, number]; updateBBox(lineBBox, p); tileLine.push(p); } diff --git a/src/style-spec/expression/evaluation_context.ts b/src/style-spec/expression/evaluation_context.ts index e0b4d29ab3..fe7d9cf780 100644 --- a/src/style-spec/expression/evaluation_context.ts +++ b/src/style-spec/expression/evaluation_context.ts @@ -50,7 +50,7 @@ class EvaluationContext { parseColor(input: string): Color | undefined | null { let cached = this._parseColorCache[input]; if (!cached) { - cached = this._parseColorCache[input] = Color.parse(input); + cached = this._parseColorCache[input] = Color.parse(input) as Color; } return cached; } diff --git a/src/style-spec/feature_filter/convert.ts b/src/style-spec/feature_filter/convert.ts index 2eea1376e5..daa934165b 100644 --- a/src/style-spec/feature_filter/convert.ts +++ b/src/style-spec/feature_filter/convert.ts @@ -94,7 +94,7 @@ function _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedType const children = (filter as any).slice(1).map(f => _convertFilter(f, expectedTypes)); return children.length > 1 ? ['all'].concat(children) : [].concat(...children); } else if (op === 'none') { - return ['!', _convertFilter(['any'].concat(filter.slice(1)), {})]; + return ['!', _convertFilter(['any'].concat(filter.slice(1) as any), {})]; } else if (op === 'in') { converted = convertInOp(((filter[1] as any)), filter.slice(2)); } else if (op === '!in') { @@ -192,7 +192,7 @@ function convertInOp(property: string, values: Array, negate = false) { return ['match', get, uniqueValues, !negate, negate]; } - return [ negate ? 'all' : 'any' ].concat( + return [ negate ? 'all' : 'any' as any].concat( values.map(v => [negate ? '!=' : '==', get, v]) ); } diff --git a/src/style-spec/feature_filter/index.ts b/src/style-spec/feature_filter/index.ts index 1ed65240b3..0a2f87be68 100644 --- a/src/style-spec/feature_filter/index.ts +++ b/src/style-spec/feature_filter/index.ts @@ -124,8 +124,8 @@ function convertFilter(filter?: Array | null): unknown { op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : - op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : - op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : + op === 'all' ? ['all' as unknown].concat(filter.slice(1).map(convertFilter)) : + op === 'none' ? ['all' as unknown].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : @@ -147,7 +147,7 @@ function convertComparisonOp(property: string, value: any, op: string) { } function convertDisjunctionOp(filters: Array>) { - return ['any'].concat(filters.map(convertFilter)); + return ['any' as unknown].concat(filters.map(convertFilter)); } function convertInOp(property: string, values: Array) { diff --git a/src/style-spec/migrate/expressions.ts b/src/style-spec/migrate/expressions.ts index 98564cd6e4..1f13342852 100644 --- a/src/style-spec/migrate/expressions.ts +++ b/src/style-spec/migrate/expressions.ts @@ -3,7 +3,7 @@ import {isExpression} from '../expression'; import convertFunction, {convertTokenString} from '../function/convert'; import convertFilter from '../feature_filter/convert'; -import type {StyleSpecification} from '../types'; +import type {FilterSpecification, LayerSpecification, StyleSpecification} from '../types'; /** * Migrate the given style object in place to use expressions. Specifically, @@ -13,7 +13,7 @@ import type {StyleSpecification} from '../types'; export default function(style: StyleSpecification) { const converted = []; - eachLayer(style, (layer) => { + eachLayer(style, (layer: LayerSpecification & { filter?: FilterSpecification }) => { if (layer.filter) { layer.filter = (convertFilter(layer.filter) as any); } @@ -24,7 +24,7 @@ export default function(style: StyleSpecification) { if (typeof value === 'object' && !Array.isArray(value)) { set(convertFunction(value, reference)); converted.push(path.join('.')); - } else if (reference.tokens && typeof value === 'string') { + } else if ((reference as any).tokens && typeof value === 'string') { set(convertTokenString(value)); } }); diff --git a/src/style-spec/style-spec.ts b/src/style-spec/style-spec.ts index 1542550ad9..590ba8292a 100644 --- a/src/style-spec/style-spec.ts +++ b/src/style-spec/style-spec.ts @@ -118,5 +118,5 @@ export { visit }; -validate.parsed = validate; -validate.latest = validate; +(validate as any).parsed = validate; +(validate as any).latest = validate; diff --git a/src/style-spec/validate/validate_function.ts b/src/style-spec/validate/validate_function.ts index 5c2fa42e6f..ff0470c311 100644 --- a/src/style-spec/validate/validate_function.ts +++ b/src/style-spec/validate/validate_function.ts @@ -176,7 +176,7 @@ export default function validateFunction(options) { return [new ValidationError(options.key, reportValue, message)]; } - if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) { + if (functionType === 'categorical' && type === 'number' && (!isFinite(value as number) || Math.floor(value as number) !== value)) { return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)]; } @@ -186,10 +186,10 @@ export default function validateFunction(options) { previousStopDomainValue = value; } - if (functionType === 'categorical' && value in stopDomainValues) { + if (functionType === 'categorical' && (value as any) in stopDomainValues) { return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')]; } else { - stopDomainValues[value] = true; + stopDomainValues[value as any] = true; } return []; diff --git a/src/style/style_layer/background_style_layer_properties.ts b/src/style/style_layer/background_style_layer_properties.ts index be724c6a6e..bde3c92eb9 100644 --- a/src/style/style_layer/background_style_layer_properties.ts +++ b/src/style/style_layer/background_style_layer_properties.ts @@ -10,7 +10,8 @@ import { CrossFadedDataDrivenProperty, CrossFadedProperty, ColorRampProperty, - PossiblyEvaluatedPropertyValue + PossiblyEvaluatedPropertyValue, + CrossFaded } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -29,7 +30,7 @@ export type PaintProps = { export type PaintPropsPossiblyEvaluated = { "background-color": Color, - "background-pattern": PossiblyEvaluatedPropertyValue, + "background-pattern": CrossFaded, "background-opacity": number }; diff --git a/src/style/style_layer/line_style_layer_properties.ts b/src/style/style_layer/line_style_layer_properties.ts index 532dafabab..4479773723 100644 --- a/src/style/style_layer/line_style_layer_properties.ts +++ b/src/style/style_layer/line_style_layer_properties.ts @@ -10,7 +10,8 @@ import { CrossFadedDataDrivenProperty, CrossFadedProperty, ColorRampProperty, - PossiblyEvaluatedPropertyValue + PossiblyEvaluatedPropertyValue, + CrossFaded } from '../properties'; import type Color from '../../style-spec/util/color'; @@ -67,8 +68,8 @@ export type PaintPropsPossiblyEvaluated = { "line-gap-width": PossiblyEvaluatedPropertyValue, "line-offset": PossiblyEvaluatedPropertyValue, "line-blur": PossiblyEvaluatedPropertyValue, - "line-dasharray": PossiblyEvaluatedPropertyValue>, - "line-pattern": PossiblyEvaluatedPropertyValue, + "line-dasharray": CrossFaded>, + "line-pattern": PossiblyEvaluatedPropertyValue>, "line-gradient": ColorRampProperty }; diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 42741d97c7..f0987530fc 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -32,7 +32,7 @@ class ScrollZoomHandler { _active: boolean; _zooming: boolean; _aroundCenter: boolean; - _around: Point; + _around: LngLat; _aroundPoint: Point; _type: "wheel" | "trackpad" | null; _lastValue: number; @@ -129,7 +129,7 @@ class ScrollZoomHandler { * @example * map.scrollZoom.enable({ around: 'center' }) */ - enable(options: any) { + enable(options?: any) { if (this.isEnabled()) return; this._enabled = true; this._aroundCenter = options && options.around === 'center'; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index aea2264282..570db0a88d 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -325,8 +325,9 @@ class HandlerManager { const mergedHandlerResult: HandlerResult = {needsRenderFrame: false}; const eventsInProgress = {}; const activeHandlers = {}; - - const mapTouches = e.touches ? this._getMapTouches((e as any as TouchEvent).touches) : undefined; + const eventTouches = (e as any as TouchEvent).touches; + + const mapTouches = eventTouches ? this._getMapTouches(eventTouches) : undefined; const points = mapTouches ? DOM.touchPos(this._el, mapTouches) : DOM.mousePos(this._el, ((e as any as MouseEvent))); for (const {handlerName, handler, allowed} of this._handlers) { diff --git a/src/util/performance.ts b/src/util/performance.ts index 3b14f7e6de..eff8d81b56 100644 --- a/src/util/performance.ts +++ b/src/util/performance.ts @@ -45,8 +45,10 @@ export const PerformanceUtils = { } }, getPerformanceMetrics(): PerformanceMetrics { - const loadTime = performance.measure('loadTime', PerformanceMarkers.create, PerformanceMarkers.load).duration; - const fullLoadTime = performance.measure('fullLoadTime', PerformanceMarkers.create, PerformanceMarkers.fullLoad).duration; + performance.measure('loadTime', PerformanceMarkers.create, PerformanceMarkers.load); + performance.measure('fullLoadTime', PerformanceMarkers.create, PerformanceMarkers.fullLoad) + const loadTime = performance.getEntriesByName('loadTime')[0].duration; + const fullLoadTime = performance.getEntriesByName('fullLoadTime')[0].duration;; const totalFrames = frameTimes.length; const avgFrameTime = frameTimes.reduce((prev, curr) => prev + curr, 0) / totalFrames / 1000; From 139726f30299421cb2661c496a757dc1545900d9 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 23:39:10 +0300 Subject: [PATCH 059/142] More fixes to typings, lint fixes --- src/data/feature_index.ts | 5 +++-- src/data/program_configuration.ts | 15 +++++++-------- src/geo/transform.ts | 2 +- src/render/draw_symbol.ts | 3 +-- src/source/geojson_worker_source.ts | 9 ++++----- src/source/source_cache.ts | 7 +++---- src/source/tile_bounds.ts | 2 +- src/source/vector_tile_worker_source.ts | 4 ++-- src/source/worker.ts | 6 +++--- src/style/style.ts | 8 ++++---- src/style/style_layer/custom_style_layer.ts | 2 +- src/symbol/placement.ts | 4 ++-- src/symbol/projection.ts | 2 +- src/ui/handler_manager.ts | 2 +- src/ui/map.ts | 10 +++++----- src/util/browser.ts | 8 ++++---- src/util/performance.ts | 4 ++-- 17 files changed, 45 insertions(+), 48 deletions(-) diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index 09b30a8e3d..f9ae24bf86 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -123,7 +123,7 @@ class FeatureIndex { } { this.loadVTLayers(); - const params = args.params || {}, + const params = args.params || {} as { filter: any, layers: string[], availableImages: string[] }, pixelsToTileUnits = EXTENT / args.tileSize / args.scale, filter = featureFilter(params.filter); @@ -185,7 +185,8 @@ class FeatureIndex { result: { [_: string]: Array<{ featureIndex: number, - feature: GeoJSONFeature + feature: GeoJSONFeature, + intersectionZ?: boolean | number }> }, bucketIndex: number, diff --git a/src/data/program_configuration.ts b/src/data/program_configuration.ts index d5b02816f3..ed29eee593 100644 --- a/src/data/program_configuration.ts +++ b/src/data/program_configuration.ts @@ -26,7 +26,6 @@ import type { SourceExpression, CompositeExpression } from '../style-spec/expression'; -import type {PossiblyEvaluated} from '../style/properties'; import type {FeatureStates} from '../source/source_state'; import type {FormattedSection} from '../style-spec/expression/types/formatted'; @@ -444,14 +443,14 @@ export default class ProgramConfiguration { for (const property in layer.paint._values) { if (!filterProperties(property)) continue; - const value = layer.paint.get(property); + const value = (layer.paint as any).get(property); if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) { continue; } const names = paintAttributeNames(property, layer.type); const expression = value.value; const type = value.property.specification.type; - const useIntegerZoom = value.property.useIntegerZoom; + const useIntegerZoom = (value.property as any).useIntegerZoom; const propType = value.property.specification['property-type']; const isCrossFaded = propType === 'cross-faded' || propType === 'cross-faded-data-driven'; @@ -464,8 +463,8 @@ export default class ProgramConfiguration { } else if (expression.kind === 'source' || isCrossFaded) { const StructArrayLayout = layoutType(property, type, 'source'); this.binders[property] = isCrossFaded ? - new CrossFadedCompositeBinder(expression, type, useIntegerZoom, zoom, StructArrayLayout, layer.id) : - new SourceExpressionBinder(expression, names, type, StructArrayLayout); + new CrossFadedCompositeBinder(expression as CompositeExpression, type, useIntegerZoom, zoom, StructArrayLayout, layer.id) : + new SourceExpressionBinder(expression as SourceExpression, names, type, StructArrayLayout); keys.push(`/a_${property}`); } else { @@ -521,7 +520,7 @@ export default class ProgramConfiguration { if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) && (binder as any).expression.isStateDependent === true) { //AHM: Remove after https://github.com/mapbox/mapbox-gl-js/issues/6255 - const value = layer.paint.get(property); + const value = (layer.paint as any).get(property); (binder as any).expression = value.value; (binder as AttributeBinder).updatePaintArray(pos.start, pos.end, feature, featureStates[id], imagePositions); dirty = true; @@ -593,10 +592,10 @@ export default class ProgramConfiguration { return uniforms; } - setUniforms( + setUniforms( context: Context, binderUniforms: Array, - properties: PossiblyEvaluated, + properties: any, globals: GlobalProperties ) { // Uniform state bindings are owned by the Program, but we set them diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 168bafa494..3e5ca63edb 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -58,7 +58,7 @@ class Transform { [_: string]: Float32Array }; - constructor(minZoom: number | undefined | null, maxZoom: number | undefined | null, minPitch: number | undefined | null, maxPitch: number | undefined | null, renderWorldCopies: boolean | void) { + constructor(minZoom: number | undefined | null, maxZoom: number | undefined | null, minPitch: number | undefined | null, maxPitch: number | undefined | null, renderWorldCopies: boolean) { this.tileSize = 512; // constant this.maxValidLatitude = 85.051129; // constant diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 9faf83be01..7acce2a210 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -10,7 +10,7 @@ const identityMat4 = mat4.identity(new Float32Array(16)); import StencilMode from '../gl/stencil_mode'; import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; -import {addDynamicAttributes} from '../data/bucket/symbol_bucket'; +import SymbolBucket, {addDynamicAttributes, SymbolBuffers} from '../data/bucket/symbol_bucket'; import {getAnchorAlignment, WritingMode} from '../symbol/shaping'; import ONE_EM from '../symbol/one_em'; @@ -25,7 +25,6 @@ import { import type Painter from './painter'; import type SourceCache from '../source/source_cache'; import type SymbolStyleLayer from '../style/style_layer/symbol_style_layer'; -import SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket'; import type Texture from '../render/texture'; import type {OverscaledTileID} from '../source/tile_id'; diff --git a/src/source/geojson_worker_source.ts b/src/source/geojson_worker_source.ts index de8281df97..1f036d3666 100644 --- a/src/source/geojson_worker_source.ts +++ b/src/source/geojson_worker_source.ts @@ -43,7 +43,7 @@ export interface GeoJSONIndex { getLeaves(clusterId: number, limit: number, offset: number): Array; } -function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataCallback) { +function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataCallback): (() => void) | void | undefined | null { const canonical = params.tileID.canonical; if (!this._geoJSONIndex) { @@ -87,7 +87,6 @@ export type SourceState = // Source empty or data loaded * @private */ class GeoJSONWorkerSource extends VectorTileWorkerSource { - loadGeoJSON: LoadGeoJSON; _state: SourceState; _pendingCallback: Callback<{ resourceTiming?: { @@ -177,7 +176,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { try { if (params.filter) { - const compiled = createExpression(params.filter, {type: 'boolean', 'property-type': 'data-driven', overridable: false, transition: false}); + const compiled = createExpression(params.filter, {type: 'boolean', 'property-type': 'data-driven', overridable: false, transition: false} as any); if (compiled.result === 'error') throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', ')); @@ -194,7 +193,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { this.loaded = {}; - const result = {}; + const result = {} as { resourceTiming: any }; if (perf) { const resourceTimingData = perf.finish(); // it's necessary to eval the result of getEntriesByName() here via parse/stringify @@ -332,7 +331,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { } } -function getSuperclusterOptions({superclusterOptions, clusterProperties}) { +function getSuperclusterOptions({superclusterOptions, clusterProperties}: { superclusterOptions?: any, clusterProperties?: any}) { if (!clusterProperties || !superclusterOptions) return superclusterOptions; const mapExpressions = {}; diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 3ed4b149df..5e8ff7d65a 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -45,13 +45,13 @@ class SourceCache extends Evented { _tiles: { [_: string]: Tile }; - _prevLng: number | void; + _prevLng: number; _cache: TileCache; _timers: { - [_ in any]: TimeoutID; + [_ in any]: ReturnType; }; _cacheTimers: { - [_ in any]: TimeoutID; + [_ in any]: ReturnType; }; _maxTileCacheSize: number | undefined | null; _paused: boolean; @@ -60,7 +60,6 @@ class SourceCache extends Evented { [_: string]: boolean }; transform: Transform; - _isIdRenderable: (id: string, symbolLayer?: boolean) => boolean; used: boolean; _state: SourceFeatureState; _loadedParentTiles: { diff --git a/src/source/tile_bounds.ts b/src/source/tile_bounds.ts index 13cc2ae00c..471a172d21 100644 --- a/src/source/tile_bounds.ts +++ b/src/source/tile_bounds.ts @@ -1,4 +1,4 @@ -import LngLatBounds, { LngLatBoundsLike } from '../geo/lng_lat_bounds'; +import LngLatBounds, {LngLatBoundsLike} from '../geo/lng_lat_bounds'; import {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate'; import type {CanonicalTileID} from './tile_id'; diff --git a/src/source/vector_tile_worker_source.ts b/src/source/vector_tile_worker_source.ts index 849427df31..967104cc5e 100644 --- a/src/source/vector_tile_worker_source.ts +++ b/src/source/vector_tile_worker_source.ts @@ -34,7 +34,7 @@ export type LoadVectorTileResult = { export type LoadVectorDataCallback = Callback; export type AbortVectorData = () => void; -export type LoadVectorData = (params: WorkerTileParameters, callback: LoadVectorDataCallback) => AbortVectorData | undefined | null; +export type LoadVectorData = (params: WorkerTileParameters, callback: LoadVectorDataCallback) => AbortVectorData | void | undefined | null; /** * @private @@ -144,7 +144,7 @@ class VectorTileWorkerSource implements WorkerSource { this.loaded = this.loaded || {}; this.loaded[uid] = workerTile; - }); + }) as AbortVectorData; } /** diff --git a/src/source/worker.ts b/src/source/worker.ts index 20918642d2..8f71d1688f 100644 --- a/src/source/worker.ts +++ b/src/source/worker.ts @@ -81,8 +81,8 @@ export default class Worker { // This is invoked by the RTL text plugin when the download via the `importScripts` call has finished, and the code has been parsed. this.self.registerRTLTextPlugin = (rtlTextPlugin: { applyArabicShaping: Function, - processBidirectionalText: Function, - processStyledBidirectionalText?: Function + processBidirectionalText: ((b: string, a: Array) => Array) | undefined | null, + processStyledBidirectionalText?: ((c: string, b: Array, a: Array) => Array<[string, Array]>) | undefined | null }) => { if (globalRTLTextPlugin.isParsed()) { throw new Error('RTL text plugin already registered.'); @@ -275,5 +275,5 @@ export default class Worker { if (typeof WorkerGlobalScope !== 'undefined' && typeof self !== 'undefined' && self instanceof WorkerGlobalScope) { - self.worker = new Worker(self); + (self as any).worker = new Worker(self as any); } diff --git a/src/style/style.ts b/src/style/style.ts index 12d20d7308..69a4131e47 100644 --- a/src/style/style.ts +++ b/src/style/style.ts @@ -86,7 +86,7 @@ const ignoredDiffOperations = pick(diffOperations, [ 'setPitch' ]); -const empty = emptyStyle(); +const empty = emptyStyle() as StyleSpecification; export type StyleOptions = { validate?: boolean, @@ -122,7 +122,7 @@ class Style extends Evented { }; zoomHistory: ZoomHistory; _loaded: boolean; - _rtlTextPluginCallback: Function; + _rtlTextPluginCallback: (a: any) => any; _changed: boolean; _updatedSources: { [_: string]: "clear" | "reload" @@ -680,8 +680,8 @@ class Style extends Evented { layer = createStyleLayer(layerObject); } else { - if (typeof layerObject.source === 'object') { - this.addSource(id, layerObject.source); + if (typeof (layerObject as any).source === 'object') { + this.addSource(id, (layerObject as any).source); layerObject = clone(layerObject); layerObject = (extend(layerObject, {source: id}) as any); } diff --git a/src/style/style_layer/custom_style_layer.ts b/src/style/style_layer/custom_style_layer.ts index a869496144..45d4c1f6ad 100644 --- a/src/style/style_layer/custom_style_layer.ts +++ b/src/style/style_layer/custom_style_layer.ts @@ -200,7 +200,7 @@ class CustomStyleLayer extends StyleLayer { recalculate() {} updateTransitions() {} // HM TODO: is this correct? there was no return value before I changed this... - hasTransition() { return false } + hasTransition() { return false; } serialize() { assert(false, "Custom layers cannot be serialized"); diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index e789eaff7d..7a60e5cb4f 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -12,7 +12,7 @@ import type Transform from '../geo/transform'; import type StyleLayer from '../style/style_layer'; import type Tile from '../source/tile'; -import type SymbolBucket, {CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket'; +import SymbolBucket, {CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket'; import type {CollisionBoxArray, CollisionVertexArray, SymbolInstance} from '../data/array_types'; import type FeatureIndex from '../data/feature_index'; @@ -354,7 +354,7 @@ export class Placement { } } | undefined | null { - const textOffset = [symbolInstance.textOffset0, symbolInstance.textOffset1]; + const textOffset = [symbolInstance.textOffset0, symbolInstance.textOffset1] as [number, number]; const shift = calculateVariableLayoutShift(anchor, width, height, textOffset, textBoxScale); const placedGlyphBoxes = this.collisionIndex.placeCollisionBox( diff --git a/src/symbol/projection.ts b/src/symbol/projection.ts index 1a73a12894..64ba5a5103 100644 --- a/src/symbol/projection.ts +++ b/src/symbol/projection.ts @@ -316,7 +316,7 @@ function placeGlyphsAlongLine(symbol, fontSize, flip, keepUpright, posMatrix, la placedGlyphs = [singleGlyph]; } - for (const glyph: any of placedGlyphs) { + for (const glyph of placedGlyphs) { addDynamicAttributes(dynamicLayoutVertexArray, glyph.point, glyph.angle); } return {}; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 570db0a88d..6b95397b8e 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -326,7 +326,7 @@ class HandlerManager { const eventsInProgress = {}; const activeHandlers = {}; const eventTouches = (e as any as TouchEvent).touches; - + const mapTouches = eventTouches ? this._getMapTouches(eventTouches) : undefined; const points = mapTouches ? DOM.touchPos(this._el, mapTouches) : DOM.mousePos(this._el, ((e as any as MouseEvent))); diff --git a/src/ui/map.ts b/src/ui/map.ts index d7e9ed22dc..f53bb85d89 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -363,7 +363,7 @@ class Map extends Camera { touchPitch: TouchPitchHandler; constructor(options: MapOptions) { - PerformanceUtils.mark(PerformanceMarkers.create as keyof typeof PerformanceMarkers); + PerformanceUtils.mark(PerformanceMarkers.create); options = extend({}, defaultOptions, options); @@ -2390,9 +2390,9 @@ class Map extends Camera { return; } - this.painter = new Painter(gl, this.transform); + this.painter = new Painter(gl as WebGLRenderingContext, this.transform); - webpSupported.testSupport(gl); + webpSupported.testSupport(gl as WebGLRenderingContext); } _contextLost(event: any) { @@ -2549,7 +2549,7 @@ class Map extends Camera { if (this.loaded() && !this._loaded) { this._loaded = true; - PerformanceUtils.mark(PerformanceMarkers.load as keyof typeof PerformanceMarkers); + PerformanceUtils.mark(PerformanceMarkers.load); this.fire(new Event('load')); } @@ -2605,7 +2605,7 @@ class Map extends Camera { if (this._loaded && !this._fullyLoaded && !somethingDirty) { this._fullyLoaded = true; - PerformanceUtils.mark(PerformanceMarkers.fullLoad as keyof typeof PerformanceMarkers); + PerformanceUtils.mark(PerformanceMarkers.fullLoad); } return this; diff --git a/src/util/browser.ts b/src/util/browser.ts index 614eed2c9a..65ff371132 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -30,10 +30,10 @@ const exported = { if (!context) { throw new Error('failed to create canvas 2d context'); } - canvas.width = img.width; - canvas.height = img.height; - context.drawImage(img, 0, 0, img.width, img.height); - return context.getImageData(-padding, -padding, img.width + 2 * padding, img.height + 2 * padding); + canvas.width = img.width as number; + canvas.height = img.height as number; + context.drawImage(img, 0, 0, img.width as number, img.height as number); + return context.getImageData(-padding, -padding, img.width as number + 2 * padding, img.height as number + 2 * padding); }, resolveURL(path: string) { diff --git a/src/util/performance.ts b/src/util/performance.ts index eff8d81b56..7980303540 100644 --- a/src/util/performance.ts +++ b/src/util/performance.ts @@ -46,9 +46,9 @@ export const PerformanceUtils = { }, getPerformanceMetrics(): PerformanceMetrics { performance.measure('loadTime', PerformanceMarkers.create, PerformanceMarkers.load); - performance.measure('fullLoadTime', PerformanceMarkers.create, PerformanceMarkers.fullLoad) + performance.measure('fullLoadTime', PerformanceMarkers.create, PerformanceMarkers.fullLoad); const loadTime = performance.getEntriesByName('loadTime')[0].duration; - const fullLoadTime = performance.getEntriesByName('fullLoadTime')[0].duration;; + const fullLoadTime = performance.getEntriesByName('fullLoadTime')[0].duration; const totalFrames = frameTimes.length; const avgFrameTime = frameTimes.reduce((prev, curr) => prev + curr, 0) / totalFrames / 1000; From 58eecb569973dd1cdda00a4453d8a952831e7d07 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 25 Jul 2021 23:48:44 +0300 Subject: [PATCH 060/142] Change base calls to be abstract --- src/render/uniform_binding.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/uniform_binding.ts b/src/render/uniform_binding.ts index 3f3a24d957..ba70edbe16 100644 --- a/src/render/uniform_binding.ts +++ b/src/render/uniform_binding.ts @@ -11,7 +11,7 @@ export type UniformLocations = { [_: string]: WebGLUniformLocation }; -class Uniform { +abstract class Uniform { gl: WebGLRenderingContext; location: WebGLUniformLocation | undefined | null; current: T; @@ -21,7 +21,7 @@ class Uniform { this.location = location; } - readonly set: (v: T) => void; + abstract set(v: T): void; } class Uniform1i extends Uniform { From e633436af63464600542ca24f470a6841a02594c Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 26 Jul 2021 08:43:11 +0300 Subject: [PATCH 061/142] More type fixes --- src/render/texture.ts | 8 +++++--- src/symbol/symbol_layout.ts | 2 +- src/util/web_worker_transfer.ts | 17 +++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/render/texture.ts b/src/render/texture.ts index b868cfbd64..18098c54fc 100644 --- a/src/render/texture.ts +++ b/src/render/texture.ts @@ -11,7 +11,9 @@ type EmptyImage = { data: null }; -export type TextureImage = RGBAImage | AlphaImage | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageData | EmptyImage | ImageBitmap; +type DataTextureImage = RGBAImage | AlphaImage | EmptyImage; +export type TextureImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageData | ImageBitmap | DataTextureImage; + class Texture { context: Context; @@ -57,7 +59,7 @@ class Texture { if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) { gl.texImage2D(gl.TEXTURE_2D, 0, this.format, this.format, gl.UNSIGNED_BYTE, image); } else { - gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, gl.UNSIGNED_BYTE, image.data); + gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, gl.UNSIGNED_BYTE, (image as DataTextureImage).data); } } else { @@ -65,7 +67,7 @@ class Texture { if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) { gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, gl.RGBA, gl.UNSIGNED_BYTE, image); } else { - gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, image.data); + gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, (image as DataTextureImage).data); } } diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index 59df8c305a..028ddf118c 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -363,7 +363,7 @@ export function getAnchorJustification(anchor: TextAnchor): TextJustify { function addFeature(bucket: SymbolBucket, feature: SymbolFeature, shapedTextOrientations: any, - shapedIcon: PositionedIcon | void, + shapedIcon: PositionedIcon, imageMap: { [_: string]: StyleImage }, diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index 096abb51c9..aaac68120f 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -13,12 +13,13 @@ type SerializedObject = { [_: string]: Serialized }; // eslint-disable-line -export type Serialized = null | void | boolean | number | string | Boolean | Number | String | Date | RegExp | ArrayBuffer | ImageData | Array | SerializedObject; +export type Serialized = null | void | boolean | number | string | Boolean | Number | String | Date | RegExp | ArrayBuffer | ArrayBufferView | ImageData | Array | SerializedObject; type Registry = { [_: string]: { klass: { - new (...args: any): any + new (...args: any): any, + deserialize?: (input: Serialized) => unknown }, omit: ReadonlyArray, shallow: ReadonlyArray @@ -55,8 +56,8 @@ export function register( }); registry[name] = { klass, - omit: options.omit || [], - shallow: options.shallow || [] + omit: options.omit as ReadonlyArray || [], + shallow: options.shallow as ReadonlyArray || [] }; } @@ -136,14 +137,14 @@ export function serialize(input: unknown, transferables?: Array | if (transferables) { transferables.push(((input as any as ArrayBuffer))); } - return input as any as ArrayBuffer; + return input as Serialized; } if (isImageBitmap(input)) { if (transferables) { transferables.push(((input as any as ImageBitmap))); } - return input as ImageBitmap; + return input as Serialized; } if (ArrayBuffer.isView(input)) { @@ -151,7 +152,7 @@ export function serialize(input: unknown, transferables?: Array | if (transferables) { transferables.push(view.buffer); } - return view; + return view as Serialized; } if (input instanceof ImageData) { @@ -249,7 +250,7 @@ export function deserialize(input: Serialized): unknown { } if (klass.deserialize) { - return ((klass.deserialize as typeof deserialize))(input); + return klass.deserialize(input); } const result = Object.create(klass.prototype); From 9fd964eba5b246f78ce479e991261ae7f414e8be Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 26 Jul 2021 10:13:54 +0300 Subject: [PATCH 062/142] More types fixes --- src/data/bucket/symbol_bucket.ts | 4 ++-- .../style_layer/fill_extrusion_style_layer.ts | 20 ++++++++++--------- src/symbol/shaping.ts | 20 ++++++++++++------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index ae7275d271..62795775af 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -23,7 +23,7 @@ import {TriangleIndexArray, LineIndexArray} from '../index_array_type'; import transformText from '../../symbol/transform_text'; import mergeLines from '../../symbol/mergelines'; import {allowsVerticalWritingMode, stringContainsRTLText} from '../../util/script_detection'; -import {WritingMode} from '../../symbol/shaping'; +import {WriteModeMap, WritingMode} from '../../symbol/shaping'; import loadGeometry from '../load_geometry'; import toEvaluationFeature from '../evaluation_feature'; import mvt from '@mapbox/vector-tile'; @@ -384,7 +384,7 @@ class SymbolBucket implements Bucket { this.sortFeaturesByY = zOrderByViewportY && this.canOverlap; if (layout.get('symbol-placement') === 'point') { - this.writingModes = layout.get('text-writing-mode').map(wm => WritingMode[wm]); + this.writingModes = layout.get('text-writing-mode').map(wm => WriteModeMap[wm]); } this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id); diff --git a/src/style/style_layer/fill_extrusion_style_layer.ts b/src/style/style_layer/fill_extrusion_style_layer.ts index 88989694cc..617ec5c286 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.ts +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -14,6 +14,8 @@ import type {PaintProps} from './fill_extrusion_style_layer_properties'; import type Transform from '../../geo/transform'; import type {LayerSpecification} from '../../style-spec/types'; +type Point3D = Point & { z: number } + class FillExtrusionStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; @@ -67,7 +69,7 @@ function dot(a, b) { return a.x * b.x + a.y * b.y; } -export function getIntersectionDistance(projectedQueryGeometry: Array, projectedFace: Array) { +export function getIntersectionDistance(projectedQueryGeometry: Array, projectedFace: Array) { if (projectedQueryGeometry.length === 1) { // For point queries calculate the z at which the point intersects the face @@ -130,7 +132,7 @@ export function getIntersectionDistance(projectedQueryGeometry: Array, pr } } -function checkIntersection(projectedBase: Array, projectedTop: Array, projectedQueryGeometry: Array) { +function checkIntersection(projectedBase: Array>, projectedTop: Array>, projectedQueryGeometry: Array) { let closestDistance = Infinity; if (polygonIntersectsMultiPolygon(projectedQueryGeometry, projectedTop)) { @@ -162,9 +164,9 @@ function checkIntersection(projectedBase: Array, projectedTop: Array>, zBase: number, zTop: number, m: Float32Array) { - const projectedBase = []; - const projectedTop = []; +function projectExtrusion(geometry: Array>, zBase: number, zTop: number, m: Float32Array): [Array>, Array>] { + const projectedBase = [] as Array>; + const projectedTop = [] as Array>; const baseXZ = m[8] * zBase; const baseYZ = m[9] * zBase; @@ -176,8 +178,8 @@ function projectExtrusion(geometry: Array>, zBase: number, zTop: nu const topWZ = m[11] * zTop; for (const r of geometry) { - const ringBase = []; - const ringTop = []; + const ringBase = [] as Array; + const ringTop = [] as Array; for (const p of r) { const x = p.x; const y = p.y; @@ -197,11 +199,11 @@ function projectExtrusion(geometry: Array>, zBase: number, zTop: nu const topZ = sZ + topZZ; const topW = sW + topWZ; - const b = new Point(baseX / baseW, baseY / baseW); + const b = new Point(baseX / baseW, baseY / baseW) as Point3D; b.z = baseZ / baseW; ringBase.push(b); - const t = new Point(topX / topW, topY / topW); + const t = new Point(topX / topW, topY / topW) as Point3D; t.z = topZ / topW; ringTop.push(t); } diff --git a/src/symbol/shaping.ts b/src/symbol/shaping.ts index 447b547dbd..76c44a0a96 100644 --- a/src/symbol/shaping.ts +++ b/src/symbol/shaping.ts @@ -16,12 +16,18 @@ import {IMAGE_PADDING} from '../render/image_atlas'; import type {Rect, GlyphPosition} from '../render/glyph_atlas'; import Formatted, {FormattedSection} from '../style-spec/expression/types/formatted'; -const WritingMode = { - horizontal: 1, - vertical: 2, - horizontalOnly: 3 +enum WritingMode { + horizontal = 1, + vertical = 2, + horizontalOnly = 3 }; +export class WriteModeMap { + "horizontal": WritingMode.horizontal; + "vertical": WritingMode.vertical; + "horizontalOnly": WritingMode.horizontalOnly; +} + const SHAPING_DEFAULT_OFFSET = -17; export {shapeText, shapeIcon, fitIconToText, getAnchorAlignment, WritingMode, SHAPING_DEFAULT_OFFSET}; @@ -51,7 +57,7 @@ export type Shaping = { bottom: number, left: number, right: number, - writingMode: 1 | 2, + writingMode: WritingMode.horizontal | WritingMode.vertical, text: string, iconsInText: boolean, verticalizable: boolean @@ -256,7 +262,7 @@ function shapeText( textJustify: TextJustify, spacing: number, translate: [number, number], - writingMode: 1 | 2, + writingMode: WritingMode.horizontal | WritingMode.vertical, allowVerticalPlacement: boolean, symbolPlacement: string, layoutTextSize: number, @@ -609,7 +615,7 @@ function shapeLines(shaping: Shaping, lineHeight: number, textAnchor: SymbolAnchor, textJustify: TextJustify, - writingMode: 1 | 2, + writingMode: WritingMode.horizontal | WritingMode.vertical, spacing: number, allowVerticalPlacement: boolean, layoutTextSizeThisZoom: number) { From a4ede9af5251c2c1d984d2d9cbc9ddad2448543b Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 26 Jul 2021 10:20:50 +0300 Subject: [PATCH 063/142] More types fixes --- src/style-spec/expression/definitions/let.ts | 2 +- src/style-spec/expression/index.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/style-spec/expression/definitions/let.ts b/src/style-spec/expression/definitions/let.ts index 871ecf3861..35e95b45db 100644 --- a/src/style-spec/expression/definitions/let.ts +++ b/src/style-spec/expression/definitions/let.ts @@ -58,7 +58,7 @@ class Let implements Expression { } serialize() { - const serialized = ["let"]; + const serialized = ["let" as unknown]; for (const [name, expr] of this.bindings) { serialized.push(name, expr.serialize()); } diff --git a/src/style-spec/expression/index.ts b/src/style-spec/expression/index.ts index 92ddee4295..bc866ec9f0 100644 --- a/src/style-spec/expression/index.ts +++ b/src/style-spec/expression/index.ts @@ -295,8 +295,8 @@ export type CompositeExpression = { export type StylePropertyExpression = ConstantExpression | SourceExpression | CameraExpression | CompositeExpression; -export function createPropertyExpression(expression: unknown, propertySpec: StylePropertySpecification): Result> { - expression = createExpression(expression, propertySpec); +export function createPropertyExpression(expressionInput: unknown, propertySpec: StylePropertySpecification): Result> { + let expression = createExpression(expressionInput, propertySpec); if (expression.result === 'error') { return expression; } From c48e9702c8897564c92a3b5137fed75f9387e059 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Mon, 26 Jul 2021 20:25:15 +0900 Subject: [PATCH 064/142] update use of mat4 (#219) updating types as gl-matrix more types to gl-matrix cleanup cast vs constructor cleanup more gl-matrix types more using gl-matrix instead of Float32Array fixes from WIP squashed into one commit minor cleanup and comments --- src/data/bucket/symbol_bucket.ts | 5 +- src/data/feature_index.ts | 3 +- src/geo/transform.ts | 70 ++++++++++--------- src/render/draw_symbol.ts | 4 +- src/render/painter.ts | 12 ++-- src/render/program/background_program.ts | 5 +- src/render/program/clipping_mask_program.ts | 3 +- src/render/program/collision_program.ts | 5 +- src/render/program/debug_program.ts | 3 +- src/render/program/fill_extrusion_program.ts | 8 +-- src/render/program/fill_program.ts | 9 +-- src/render/program/heatmap_program.ts | 2 +- src/render/program/raster_program.ts | 3 +- src/render/program/symbol_program.ts | 19 ++--- src/render/uniform_binding.ts | 19 ++--- src/source/query_features.ts | 2 +- src/source/tile.ts | 3 +- src/source/tile_id.ts | 3 +- src/style/style_layer.ts | 3 +- src/style/style_layer/circle_style_layer.ts | 12 ++-- src/style/style_layer/custom_style_layer.ts | 5 +- .../style_layer/fill_extrusion_style_layer.ts | 12 ++-- src/symbol/collision_index.ts | 8 +-- src/symbol/placement.ts | 2 +- src/symbol/projection.ts | 10 +-- src/util/primitives.ts | 16 ++--- src/util/window.ts | 2 +- 27 files changed, 133 insertions(+), 115 deletions(-) diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index 62795775af..d69d1e4735 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -362,8 +362,9 @@ class SymbolBucket implements Bucket { this.sortKeyRanges = []; this.collisionCircleArray = []; - this.placementInvProjMatrix = mat4.identity([]); - this.placementViewportMatrix = mat4.identity([]); + // NOTE mat4.create() creates a mat4.identity() + this.placementInvProjMatrix = mat4.create(); + this.placementViewportMatrix = mat4.create(); const layer = this.layers[0]; const unevaluatedLayoutValues = layer._unevaluatedLayout._values; diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index f9ae24bf86..31e398c48d 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -23,10 +23,11 @@ import type Transform from '../geo/transform'; import type {FilterSpecification, PromoteIdSpecification} from '../style-spec/types'; import {FeatureIndexArray} from './array_types'; +import {mat4} from 'gl-matrix'; type QueryParameters = { scale: number, - pixelPosMatrix: Float32Array, + pixelPosMatrix: mat4, transform: Transform, tileSize: number, queryGeometry: Array, diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 3e5ca63edb..2252ff3bc7 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -5,7 +5,7 @@ import Point from '../symbol/point'; import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; -import {vec4, mat4, mat2, vec2} from 'gl-matrix'; +import {vec4, mat4, mat2, vec2, vec3} from 'gl-matrix'; import {Aabb, Frustum} from "../util/primitives"; import EdgeInsets from './edge_insets'; @@ -27,18 +27,18 @@ class Transform { width: number; height: number; angle: number; - rotationMatrix: Float32Array; + rotationMatrix: mat2; zoomFraction: number; pixelsToGLUnits: [number, number]; cameraToCenterDistance: number; - mercatorMatrix: Array; - projMatrix: Float32Array; - invProjMatrix: Float32Array; - alignedProjMatrix: Float32Array; - pixelMatrix: Float32Array; - pixelMatrixInverse: Float32Array; - glCoordMatrix: Float32Array; - labelPlaneMatrix: Float32Array; + mercatorMatrix: mat4; + projMatrix: mat4; + invProjMatrix: mat4; + alignedProjMatrix: mat4; + pixelMatrix: mat4; + pixelMatrixInverse: mat4; + glCoordMatrix: mat4; + labelPlaneMatrix: mat4; _fov: number; _pitch: number; _zoom: number; @@ -52,17 +52,17 @@ class Transform { _edgeInsets: EdgeInsets; _constraining: boolean; _posMatrixCache: { - [_: string]: Float32Array + [_: string]: mat4 }; _alignedPosMatrixCache: { - [_: string]: Float32Array + [_: string]: mat4 }; constructor(minZoom: number | undefined | null, maxZoom: number | undefined | null, minPitch: number | undefined | null, maxPitch: number | undefined | null, renderWorldCopies: boolean) { this.tileSize = 512; // constant this.maxValidLatitude = 85.051129; // constant - this._renderWorldCopies = renderWorldCopies === undefined ? true : renderWorldCopies; + this._renderWorldCopies = renderWorldCopies === undefined ? true : !!renderWorldCopies; this._minZoom = minZoom || 0; this._maxZoom = maxZoom || 22; @@ -163,7 +163,7 @@ class Transform { this._calcMatrices(); // 2x2 matrix for rotating points - this.rotationMatrix = mat2.create() as Float32Array; + this.rotationMatrix = mat2.create(); mat2.rotate(this.rotationMatrix, this.rotationMatrix, this.angle); } @@ -510,8 +510,8 @@ class Transform { // unproject two points to get a line and then find the point on that // line with z=0 - const coord0 = [p.x, p.y, 0, 1]; - const coord1 = [p.x, p.y, 1, 1]; + const coord0 = vec4.fromValues(p.x, p.y, 0, 1); + const coord1 = vec4.fromValues(p.x, p.y, 1, 1); vec4.transformMat4(coord0, coord0, this.pixelMatrixInverse); vec4.transformMat4(coord1, coord1, this.pixelMatrixInverse); @@ -539,8 +539,8 @@ class Transform { * @private */ coordinatePoint(coord: MercatorCoordinate) { - const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1]; - vec4.transformMat4(p as vec4, p as vec4, this.pixelMatrix); + const p = vec4.fromValues(coord.x * this.worldSize, coord.y * this.worldSize, 0, 1); + vec4.transformMat4(p, p, this.pixelMatrix); return new Point(p[0] / p[3], p[1] / p[3]); } @@ -588,7 +588,7 @@ class Transform { * @param {UnwrappedTileID} unwrappedTileID; * @private */ - calculatePosMatrix(unwrappedTileID: UnwrappedTileID, aligned: boolean = false): Float32Array { + calculatePosMatrix(unwrappedTileID: UnwrappedTileID, aligned: boolean = false): mat4 { const posMatrixKey = unwrappedTileID.key; const cache = aligned ? this._alignedPosMatrixCache : this._posMatrixCache; if (cache[posMatrixKey]) { @@ -599,17 +599,18 @@ class Transform { const scale = this.worldSize / this.zoomScale(canonical.z); const unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap; - const posMatrix = mat4.identity(new Float32Array(16)); + const posMatrix = mat4.create(); mat4.translate(posMatrix, posMatrix, [unwrappedX * scale, canonical.y * scale, 0]); mat4.scale(posMatrix, posMatrix, [scale / EXTENT, scale / EXTENT, 1]); mat4.multiply(posMatrix, aligned ? this.alignedProjMatrix : this.projMatrix, posMatrix); - cache[posMatrixKey] = new Float32Array(posMatrix); + cache[posMatrixKey] = mat4.clone(posMatrix); return cache[posMatrixKey]; } - customLayerMatrix(): Array { - return this.mercatorMatrix.slice(); + customLayerMatrix(): mat4 { + // I assume the previous 'slice' was just to trigger a copy? + return mat4.clone(this.mercatorMatrix); } _constrain() { @@ -713,7 +714,7 @@ class Transform { const nearZ = this.height / 50; // matrix for conversion from location to GL coordinates (-1 .. 1) - let m = new Float32Array(16); + let m = mat4.create(); mat4.perspective(m, this._fov, this.width / this.height, nearZ, farZ); //Apply center of perspective offset @@ -728,13 +729,14 @@ class Transform { // The mercatorMatrix can be used to transform points from mercator coordinates // ([0, 0] nw, [1, 1] se) to GL coordinates. - this.mercatorMatrix = mat4.scale(new Float32Array(), m, [this.worldSize, this.worldSize, this.worldSize]) as number[]; + this.mercatorMatrix = mat4.scale(mat4.create(), m, vec3.fromValues(this.worldSize, this.worldSize, this.worldSize)); // scale vertically to meters per pixel (inverse of ground resolution): - mat4.scale(m, m, [1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize, 1]); + // WARN mat4.scale(m, m, [1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize, 1]); // existing code has extra element in scaling array + mat4.scale(m, m, vec3.fromValues(1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize)); this.projMatrix = m; - this.invProjMatrix = mat4.invert(new Float32Array(), this.projMatrix) as Float32Array; + this.invProjMatrix = mat4.invert(mat4.create(), this.projMatrix); // Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles. // We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional @@ -746,26 +748,26 @@ class Transform { angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle), dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift, dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift; - const alignedM = new Float32Array(m); + const alignedM = mat4.clone(m); mat4.translate(alignedM, alignedM, [ dx > 0.5 ? dx - 1 : dx, dy > 0.5 ? dy - 1 : dy, 0 ]); this.alignedProjMatrix = alignedM; - m = mat4.create() as Float32Array; + m = mat4.create(); mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]); mat4.translate(m, m, [1, -1, 0]); this.labelPlaneMatrix = m; - m = mat4.create() as Float32Array; + m = mat4.create(); mat4.scale(m, m, [1, -1, 1]); mat4.translate(m, m, [-1, -1, 0]); mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]); this.glCoordMatrix = m; // matrix for conversion from location to screen coordinates - this.pixelMatrix = mat4.multiply(new Float32Array(16), this.labelPlaneMatrix, this.projMatrix) as Float32Array; + this.pixelMatrix = mat4.multiply(mat4.create(), this.labelPlaneMatrix, this.projMatrix); // inverse matrix for conversion from screen coordinaes to location - m = mat4.invert(new Float32Array(16), this.pixelMatrix) as Float32Array; + m = mat4.invert(mat4.create(), this.pixelMatrix); if (!m) throw new Error("failed to invert matrix"); this.pixelMatrixInverse = m; @@ -778,8 +780,8 @@ class Transform { if (!this.pixelMatrixInverse) return 1; const coord = this.pointCoordinate(new Point(0, 0)); - const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1]; - const topPoint = vec4.transformMat4(p as vec4, p as vec4, this.pixelMatrix); + const p = vec4.fromValues(coord.x * this.worldSize, coord.y * this.worldSize, 0, 1); + const topPoint = vec4.transformMat4(p, p, this.pixelMatrix); return topPoint[3] / this.cameraToCenterDistance; } diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 7acce2a210..f0df7984ab 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -6,7 +6,6 @@ import pixelsToTileUnits from '../source/pixels_to_tile_units'; import * as symbolProjection from '../symbol/projection'; import * as symbolSize from '../symbol/symbol_size'; import {mat4} from 'gl-matrix'; -const identityMat4 = mat4.identity(new Float32Array(16)); import StencilMode from '../gl/stencil_mode'; import DepthMode from '../gl/depth_mode'; import CullFaceMode from '../gl/cull_face_mode'; @@ -50,6 +49,9 @@ type SymbolTileRenderState = { } }; +// create() creates an identity matrix https://github.com/toji/gl-matrix/blob/master/src/mat4.js#L13 +const identityMat4 = mat4.create(); + function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, variableOffsets: { [_ in CrossTileID]: VariableOffset; }) { diff --git a/src/render/painter.ts b/src/render/painter.ts index 42b3c1c2f8..5c72f05576 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -1,7 +1,7 @@ import browser from '../util/browser'; import window from '../util/window'; -import {mat4} from 'gl-matrix'; +import {mat4, vec3} from 'gl-matrix'; import SourceCache from '../source/source_cache'; import EXTENT from '../data/extent'; import pixelsToTileUnits from '../source/pixels_to_tile_units'; @@ -553,10 +553,10 @@ class Painter { /** * Transform a matrix to incorporate the *-translate and *-translate-anchor properties into it. * @param inViewportPixelUnitsUnits True when the units accepted by the matrix are in viewport pixels instead of tile units. - * @returns {Float32Array} matrix + * @returns {mat4} matrix * @private */ - translatePosMatrix(matrix: Float32Array, tile: Tile, translate: [number, number], translateAnchor: "map" | "viewport", inViewportPixelUnitsUnits?: boolean) { + translatePosMatrix(matrix: mat4, tile: Tile, translate: [number, number], translateAnchor: "map" | "viewport", inViewportPixelUnitsUnits?: boolean) { if (!translate[0] && !translate[1]) return matrix; const angle = inViewportPixelUnitsUnits ? @@ -572,13 +572,13 @@ class Painter { ]; } - const translation = [ + const translation = vec3.fromValues( inViewportPixelUnitsUnits ? translate[0] : pixelsToTileUnits(tile, translate[0], this.transform.zoom), inViewportPixelUnitsUnits ? translate[1] : pixelsToTileUnits(tile, translate[1], this.transform.zoom), 0 - ]; + ); - const translatedMatrix = new Float32Array(16); + const translatedMatrix = mat4.create(); mat4.translate(translatedMatrix, matrix, translation); return translatedMatrix; } diff --git a/src/render/program/background_program.ts b/src/render/program/background_program.ts index 75d009a6f2..b6212eb3d3 100644 --- a/src/render/program/background_program.ts +++ b/src/render/program/background_program.ts @@ -16,6 +16,7 @@ import type {CrossFaded} from '../../style/properties'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; import type {OverscaledTileID} from '../../source/tile_id'; import type ResolvedImage from '../../style-spec/expression/types/resolved_image'; +import {mat4} from 'gl-matrix'; export type BackgroundUniformsType = { 'u_matrix': UniformMatrix4f, @@ -68,14 +69,14 @@ const backgroundPatternUniforms = (context: Context, locations: UniformLocations 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels) }); -const backgroundUniformValues = (matrix: Float32Array, opacity: number, color: Color): UniformValues => ({ +const backgroundUniformValues = (matrix: mat4, opacity: number, color: Color): UniformValues => ({ 'u_matrix': matrix, 'u_opacity': opacity, 'u_color': color }); const backgroundPatternUniformValues = ( - matrix: Float32Array, + matrix: mat4, opacity: number, painter: Painter, image: CrossFaded, diff --git a/src/render/program/clipping_mask_program.ts b/src/render/program/clipping_mask_program.ts index f9071d0d29..415413d9dd 100644 --- a/src/render/program/clipping_mask_program.ts +++ b/src/render/program/clipping_mask_program.ts @@ -2,6 +2,7 @@ import {UniformMatrix4f} from '../uniform_binding'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; +import {mat4} from 'gl-matrix'; export type ClippingMaskUniformsType = { 'u_matrix': UniformMatrix4f @@ -11,7 +12,7 @@ const clippingMaskUniforms = (context: Context, locations: UniformLocations): Cl 'u_matrix': new UniformMatrix4f(context, locations.u_matrix) }); -const clippingMaskUniformValues = (matrix: Float32Array): UniformValues => ({ +const clippingMaskUniformValues = (matrix: mat4): UniformValues => ({ 'u_matrix': matrix }); diff --git a/src/render/program/collision_program.ts b/src/render/program/collision_program.ts index a13f3b5ab5..1d368faf50 100644 --- a/src/render/program/collision_program.ts +++ b/src/render/program/collision_program.ts @@ -5,6 +5,7 @@ import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type Transform from '../../geo/transform'; import type Tile from '../../source/tile'; +import {mat4} from 'gl-matrix'; export type CollisionUniformsType = { 'u_matrix': UniformMatrix4f, @@ -36,7 +37,7 @@ const collisionCircleUniforms = (context: Context, locations: UniformLocations): 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size) }); -const collisionUniformValues = (matrix: Float32Array, transform: Transform, tile: Tile): UniformValues => { +const collisionUniformValues = (matrix: mat4, transform: Transform, tile: Tile): UniformValues => { const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom); const scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ); const overscaleFactor = tile.tileID.overscaleFactor(); @@ -50,7 +51,7 @@ const collisionUniformValues = (matrix: Float32Array, transform: Transform, tile }; }; -const collisionCircleUniformValues = (matrix: Float32Array, invMatrix: Float32Array, transform: Transform): UniformValues => { +const collisionCircleUniformValues = (matrix: mat4, invMatrix: mat4, transform: Transform): UniformValues => { return { 'u_matrix': matrix, 'u_inv_matrix': invMatrix, diff --git a/src/render/program/debug_program.ts b/src/render/program/debug_program.ts index 46e494a13e..9a093c0aff 100644 --- a/src/render/program/debug_program.ts +++ b/src/render/program/debug_program.ts @@ -3,6 +3,7 @@ import {UniformColor, UniformMatrix4f, Uniform1i, Uniform1f} from '../uniform_bi import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type Color from '../../style-spec/util/color'; +import {mat4} from 'gl-matrix'; export type DebugUniformsType = { 'u_color': UniformColor, @@ -18,7 +19,7 @@ const debugUniforms = (context: Context, locations: UniformLocations): DebugUnif 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale) }); -const debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues => ({ +const debugUniformValues = (matrix: mat4, color: Color, scaleRatio: number = 1): UniformValues => ({ 'u_matrix': matrix, 'u_color': color, 'u_overlay': 0, diff --git a/src/render/program/fill_extrusion_program.ts b/src/render/program/fill_extrusion_program.ts index dcdb992417..4db5de6c7c 100644 --- a/src/render/program/fill_extrusion_program.ts +++ b/src/render/program/fill_extrusion_program.ts @@ -7,7 +7,7 @@ import { UniformMatrix4f } from '../uniform_binding'; -import {mat3, vec3} from 'gl-matrix'; +import {mat3, mat4, vec3} from 'gl-matrix'; import {extend} from '../../util/util'; import type Context from '../../gl/context'; @@ -72,14 +72,14 @@ const fillExtrusionPatternUniforms = (context: Context, locations: UniformLocati }); const fillExtrusionUniformValues = ( - matrix: Float32Array, + matrix: mat4, painter: Painter, shouldUseVerticalGradient: boolean, opacity: number ): UniformValues => { const light = painter.style.light; const _lp = light.properties.get('position'); - const lightPos = [_lp.x, _lp.y, _lp.z]; + const lightPos = vec3.fromValues(_lp.x, _lp.y, _lp.z); const lightMat = mat3.create(); if (light.properties.get('anchor') === 'viewport') { mat3.fromRotation(lightMat, -painter.transform.angle); @@ -99,7 +99,7 @@ const fillExtrusionUniformValues = ( }; const fillExtrusionPatternUniformValues = ( - matrix: Float32Array, + matrix: mat4, painter: Painter, shouldUseVerticalGradient: boolean, opacity: number, diff --git a/src/render/program/fill_program.ts b/src/render/program/fill_program.ts index 2e093c1519..ecec95c61b 100644 --- a/src/render/program/fill_program.ts +++ b/src/render/program/fill_program.ts @@ -13,6 +13,7 @@ import type {UniformValues, UniformLocations} from '../uniform_binding'; import type Context from '../../gl/context'; import type {CrossfadeParameters} from '../../style/evaluation_parameters'; import type Tile from '../../source/tile'; +import {mat4} from 'gl-matrix'; export type FillUniformsType = { 'u_matrix': UniformMatrix4f @@ -76,12 +77,12 @@ const fillOutlinePatternUniforms = (context: Context, locations: UniformLocation 'u_fade': new Uniform1f(context, locations.u_fade) }); -const fillUniformValues = (matrix: Float32Array): UniformValues => ({ +const fillUniformValues = (matrix: mat4): UniformValues => ({ 'u_matrix': matrix }); const fillPatternUniformValues = ( - matrix: Float32Array, + matrix: mat4, painter: Painter, crossfade: CrossfadeParameters, tile: Tile @@ -90,13 +91,13 @@ const fillPatternUniformValues = ( patternUniformValues(crossfade, painter, tile) ); -const fillOutlineUniformValues = (matrix: Float32Array, drawingBufferSize: [number, number]): UniformValues => ({ +const fillOutlineUniformValues = (matrix: mat4, drawingBufferSize: [number, number]): UniformValues => ({ 'u_matrix': matrix, 'u_world': drawingBufferSize }); const fillOutlinePatternUniformValues = ( - matrix: Float32Array, + matrix: mat4, painter: Painter, crossfade: CrossfadeParameters, tile: Tile, diff --git a/src/render/program/heatmap_program.ts b/src/render/program/heatmap_program.ts index 6438487498..4b43baaff1 100644 --- a/src/render/program/heatmap_program.ts +++ b/src/render/program/heatmap_program.ts @@ -42,7 +42,7 @@ const heatmapTextureUniforms = (context: Context, locations: UniformLocations): 'u_opacity': new Uniform1f(context, locations.u_opacity) }); -const heatmapUniformValues = (matrix: Float32Array, tile: Tile, zoom: number, intensity: number): UniformValues => ({ +const heatmapUniformValues = (matrix: mat4, tile: Tile, zoom: number, intensity: number): UniformValues => ({ 'u_matrix': matrix, 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom), 'u_intensity': intensity diff --git a/src/render/program/raster_program.ts b/src/render/program/raster_program.ts index eecc8f1e97..ac137b3809 100644 --- a/src/render/program/raster_program.ts +++ b/src/render/program/raster_program.ts @@ -3,6 +3,7 @@ import {Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f} from '../un import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; import type RasterStyleLayer from '../../style/style_layer/raster_style_layer'; +import {mat4} from 'gl-matrix'; export type RasterUniformsType = { 'u_matrix': UniformMatrix4f, @@ -37,7 +38,7 @@ const rasterUniforms = (context: Context, locations: UniformLocations): RasterUn }); const rasterUniformValues = ( - matrix: Float32Array, + matrix: mat4, parentTL: [number, number], parentScaleBy: number, fade: { diff --git a/src/render/program/symbol_program.ts b/src/render/program/symbol_program.ts index ef36a82542..0a7b2ed760 100644 --- a/src/render/program/symbol_program.ts +++ b/src/render/program/symbol_program.ts @@ -5,6 +5,7 @@ import browser from '../../util/browser'; import type Context from '../../gl/context'; import type Painter from '../painter'; import type {UniformValues, UniformLocations} from '../uniform_binding'; +import {mat4} from 'gl-matrix'; export type SymbolIconUniformsType = { 'u_is_size_zoom_constant': Uniform1i, @@ -145,9 +146,9 @@ const symbolIconUniformValues = ( rotateInShader: boolean, pitchWithMap: boolean, painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, + matrix: mat4, + labelPlaneMatrix: mat4, + glCoordMatrix: mat4, isText: boolean, texSize: [number, number] ): UniformValues => { @@ -182,9 +183,9 @@ const symbolSDFUniformValues = ( rotateInShader: boolean, pitchWithMap: boolean, painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, + matrix: mat4, + labelPlaneMatrix: mat4, + glCoordMatrix: mat4, isText: boolean, texSize: [number, number], isHalo: boolean @@ -209,9 +210,9 @@ const symbolTextAndIconUniformValues = ( rotateInShader: boolean, pitchWithMap: boolean, painter: Painter, - matrix: Float32Array, - labelPlaneMatrix: Float32Array, - glCoordMatrix: Float32Array, + matrix: mat4, + labelPlaneMatrix: mat4, + glCoordMatrix: mat4, texSizeSDF: [number, number], texSizeIcon: [number, number] ): UniformValues => { diff --git a/src/render/uniform_binding.ts b/src/render/uniform_binding.ts index ba70edbe16..4978862bf2 100644 --- a/src/render/uniform_binding.ts +++ b/src/render/uniform_binding.ts @@ -1,6 +1,7 @@ import Color from '../style-spec/util/color'; import type Context from '../gl/context'; +import {mat4, vec2, vec3, vec4} from 'gl-matrix'; type $ObjMap any> = { [K in keyof T]: F extends (v: T[K]) => infer R ? R : never; @@ -52,13 +53,13 @@ class Uniform1f extends Uniform { } } -class Uniform2f extends Uniform<[number, number]> { +class Uniform2f extends Uniform { constructor(context: Context, location: WebGLUniformLocation) { super(context, location); this.current = [0, 0]; } - set(v: [number, number]): void { + set(v: vec2): void { if (v[0] !== this.current[0] || v[1] !== this.current[1]) { this.current = v; this.gl.uniform2f(this.location, v[0], v[1]); @@ -66,13 +67,13 @@ class Uniform2f extends Uniform<[number, number]> { } } -class Uniform3f extends Uniform<[number, number, number]> { +class Uniform3f extends Uniform { constructor(context: Context, location: WebGLUniformLocation) { super(context, location); this.current = [0, 0, 0]; } - set(v: [number, number, number]): void { + set(v: vec3): void { if (v[0] !== this.current[0] || v[1] !== this.current[1] || v[2] !== this.current[2]) { this.current = v; this.gl.uniform3f(this.location, v[0], v[1], v[2]); @@ -80,13 +81,13 @@ class Uniform3f extends Uniform<[number, number, number]> { } } -class Uniform4f extends Uniform<[number, number, number, number]> { +class Uniform4f extends Uniform { constructor(context: Context, location: WebGLUniformLocation) { super(context, location); this.current = [0, 0, 0, 0]; } - set(v: [number, number, number, number]): void { + set(v: vec4): void { if (v[0] !== this.current[0] || v[1] !== this.current[1] || v[2] !== this.current[2] || v[3] !== this.current[3]) { this.current = v; @@ -110,14 +111,14 @@ class UniformColor extends Uniform { } } -const emptyMat4 = new Float32Array(16); -class UniformMatrix4f extends Uniform { +const emptyMat4 = mat4.create(); +class UniformMatrix4f extends Uniform { constructor(context: Context, location: WebGLUniformLocation) { super(context, location); this.current = emptyMat4; } - set(v: Float32Array): void { + set(v: mat4): void { // The vast majority of matrix comparisons that will trip this set // happen at i=12 or i=0, so we check those first to avoid lots of // unnecessary iteration: diff --git a/src/source/query_features.ts b/src/source/query_features.ts index 8524f2c4e4..0c0e81e48a 100644 --- a/src/source/query_features.ts +++ b/src/source/query_features.ts @@ -12,7 +12,7 @@ import {mat4} from 'gl-matrix'; * Returns a matrix that can be used to convert from tile coordinates to viewport pixel coordinates. */ function getPixelPosMatrix(transform, tileID) { - const t = mat4.identity([]); + const t = mat4.create(); mat4.translate(t, t, [1, 1, 0]); mat4.scale(t, t, [transform.width * 0.5, transform.height * 0.5, 1]); return mat4.multiply(t, t, transform.calculatePosMatrix(tileID.toUnwrapped())); diff --git a/src/source/tile.ts b/src/source/tile.ts index b607fc7d63..07c21f7809 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -30,6 +30,7 @@ import type {LayerFeatureStates} from './source_state'; import type {Cancelable} from '../types/cancelable'; import type {FilterSpecification} from '../style-spec/types'; import type Point from '../symbol/point'; +import {mat4} from 'gl-matrix'; export type TileState = // Tile data is in the process of loading. "loading" | // Tile data has been loaded. Tile can be rendered. @@ -286,7 +287,7 @@ class Tile { }, transform: Transform, maxPitchScaleFactor: number, - pixelPosMatrix: Float32Array + pixelPosMatrix: mat4 ): { [_: string]: Array<{ featureIndex: number, diff --git a/src/source/tile_id.ts b/src/source/tile_id.ts index f922b8f39b..aa1ff1f19f 100644 --- a/src/source/tile_id.ts +++ b/src/source/tile_id.ts @@ -5,6 +5,7 @@ import MercatorCoordinate from '../geo/mercator_coordinate'; import assert from 'assert'; import {register} from '../util/web_worker_transfer'; +import {mat4} from 'gl-matrix'; export class CanonicalTileID { z: number; @@ -69,7 +70,7 @@ export class OverscaledTileID { wrap: number; canonical: CanonicalTileID; key: string; - posMatrix: Float32Array; + posMatrix: mat4; constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number) { assert(overscaledZ >= z); diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index 295e9196dd..0923876dac 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -27,6 +27,7 @@ import type { import type {CustomLayerInterface} from './style_layer/custom_style_layer'; import type Map from '../ui/map'; import type {StyleSetterOptions} from './style'; +import {mat4} from 'gl-matrix'; const TRANSITION_SUFFIX = '-transition'; @@ -60,7 +61,7 @@ class StyleLayer extends Evented { zoom: number, transform: Transform, pixelsToTileUnits: number, - pixelPosMatrix: Float32Array + pixelPosMatrix: mat4 ) => boolean | number; readonly onAdd: ((map: Map) => void) | undefined | null; diff --git a/src/style/style_layer/circle_style_layer.ts b/src/style/style_layer/circle_style_layer.ts index eb160cf3c1..e847da231c 100644 --- a/src/style/style_layer/circle_style_layer.ts +++ b/src/style/style_layer/circle_style_layer.ts @@ -5,7 +5,7 @@ import {polygonIntersectsBufferedPoint} from '../../util/intersection_tests'; import {getMaximumPaintValue, translateDistance, translate} from '../query_utils'; import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './circle_style_layer_properties'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties'; -import {vec4} from 'gl-matrix'; +import {mat4, vec4} from 'gl-matrix'; import Point from '../../symbol/point'; import type {FeatureState} from '../../style-spec/expression'; import type Transform from '../../geo/transform'; @@ -44,7 +44,7 @@ class CircleStyleLayer extends StyleLayer { zoom: number, transform: Transform, pixelsToTileUnits: number, - pixelPosMatrix: Float32Array + pixelPosMatrix: mat4 ): boolean => { const translatedPolygon = translate(queryGeometry, this.paint.get('circle-translate'), @@ -68,7 +68,7 @@ class CircleStyleLayer extends StyleLayer { const transformedPoint = alignWithMap ? point : projectPoint(point, pixelPosMatrix); let adjustedSize = transformedSize; - const projectedCenter = vec4.transformMat4([], [point.x, point.y, 0, 1], pixelPosMatrix); + const projectedCenter = vec4.transformMat4(vec4.create(), vec4.fromValues(point.x, point.y, 0, 1), pixelPosMatrix); if (this.paint.get('circle-pitch-scale') === 'viewport' && this.paint.get('circle-pitch-alignment') === 'map') { adjustedSize *= projectedCenter[3] / transform.cameraToCenterDistance; } else if (this.paint.get('circle-pitch-scale') === 'map' && this.paint.get('circle-pitch-alignment') === 'viewport') { @@ -83,12 +83,12 @@ class CircleStyleLayer extends StyleLayer { } } -function projectPoint(p: Point, pixelPosMatrix: Float32Array) { - const point = vec4.transformMat4([], [p.x, p.y, 0, 1], pixelPosMatrix); +function projectPoint(p: Point, pixelPosMatrix: mat4) { + const point = vec4.transformMat4(vec4.create(), vec4.fromValues(p.x, p.y, 0, 1), pixelPosMatrix); return new Point(point[0] / point[3], point[1] / point[3]); } -function projectQueryGeometry(queryGeometry: Array, pixelPosMatrix: Float32Array) { +function projectQueryGeometry(queryGeometry: Array, pixelPosMatrix: mat4) { return queryGeometry.map((p) => { return projectPoint(p, pixelPosMatrix); }); diff --git a/src/style/style_layer/custom_style_layer.ts b/src/style/style_layer/custom_style_layer.ts index 45d4c1f6ad..7c3b952488 100644 --- a/src/style/style_layer/custom_style_layer.ts +++ b/src/style/style_layer/custom_style_layer.ts @@ -1,8 +1,11 @@ import StyleLayer from '../style_layer'; import type Map from '../../ui/map'; import assert from 'assert'; +import {mat4} from 'gl-matrix'; -type CustomRenderMethod = (gl: WebGLRenderingContext, matrix: Array) => void; +// careful of this change from matrix from Array to mat4 as custom layer can be 2D or 3D +// this may or may not be an issue, investigate +type CustomRenderMethod = (gl: WebGLRenderingContext, matrix: mat4) => void; /** * Interface for custom style layers. This is a specification for diff --git a/src/style/style_layer/fill_extrusion_style_layer.ts b/src/style/style_layer/fill_extrusion_style_layer.ts index 617ec5c286..482cbe76ee 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.ts +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -5,9 +5,8 @@ import {polygonIntersectsPolygon, polygonIntersectsMultiPolygon} from '../../uti import {translateDistance, translate} from '../query_utils'; import properties, {PaintPropsPossiblyEvaluated} from './fill_extrusion_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; -import {vec4} from 'gl-matrix'; +import {mat4, vec4} from 'gl-matrix'; import Point from '../../symbol/point'; - import type {FeatureState} from '../../style-spec/expression'; import type {BucketParameters} from '../../data/bucket'; import type {PaintProps} from './fill_extrusion_style_layer_properties'; @@ -45,7 +44,7 @@ class FillExtrusionStyleLayer extends StyleLayer { zoom: number, transform: Transform, pixelsToTileUnits: number, - pixelPosMatrix: Float32Array + pixelPosMatrix: mat4 ): boolean | number => { const translatedPolygon = translate(queryGeometry, @@ -164,10 +163,9 @@ function checkIntersection(projectedBase: Array>, projectedTop: A * different points can only be done once. This produced a measurable * performance improvement. */ -function projectExtrusion(geometry: Array>, zBase: number, zTop: number, m: Float32Array): [Array>, Array>] { +function projectExtrusion(geometry: Array>, zBase: number, zTop: number, m: mat4): [Array>, Array>] { const projectedBase = [] as Array>; const projectedTop = [] as Array>; - const baseXZ = m[8] * zBase; const baseYZ = m[9] * zBase; const baseZZ = m[10] * zBase; @@ -213,10 +211,10 @@ function projectExtrusion(geometry: Array>, zBase: number, zTop: nu return [projectedBase, projectedTop]; } -function projectQueryGeometry(queryGeometry: Array, pixelPosMatrix: Float32Array, transform: Transform, z: number) { +function projectQueryGeometry(queryGeometry: Array, pixelPosMatrix: mat4, transform: Transform, z: number) { const projectedQueryGeometry = []; for (const p of queryGeometry) { - const v = [p.x, p.y, z, 1]; + const v = vec4.fromValues(p.x, p.y, z, 1); vec4.transformMat4(v, v, pixelPosMatrix); projectedQueryGeometry.push(new Point(v[0] / v[3], v[1] / v[3])); } diff --git a/src/symbol/collision_index.ts b/src/symbol/collision_index.ts index d9c27c60c7..18f4b965ca 100644 --- a/src/symbol/collision_index.ts +++ b/src/symbol/collision_index.ts @@ -4,7 +4,7 @@ import PathInterpolator from './path_interpolator'; import * as intersectionTests from '../util/intersection_tests'; import Grid from './grid_index'; -import {mat4} from 'gl-matrix'; +import {mat4, vec4} from 'gl-matrix'; import ONE_EM from '../symbol/one_em'; import assert from 'assert'; @@ -348,7 +348,7 @@ class CollisionIndex { } projectAndGetPerspectiveRatio(posMatrix: mat4, x: number, y: number) { - const p = [x, y, 0, 1]; + const p = vec4.fromValues(x, y, 0, 1); projection.xyTransformMat4(p, p, posMatrix); const a = new Point( (((p[0] / p[3] + 1) / 2) * this.transform.width) + viewportPadding, @@ -376,8 +376,8 @@ class CollisionIndex { * Use this function to render e.g. collision circles on the screen. * example transformation: clipPos = glCoordMatrix * viewportMatrix * circle_pos */ - getViewportMatrix(): mat4 { - const m = mat4.identity([]); + getViewportMatrix() { + const m = mat4.create(); // creates identity matrix mat4.translate(m, m, [-viewportPadding, -viewportPadding, 0.0]); return m; } diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index 7a60e5cb4f..9fbd519c0e 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -289,7 +289,7 @@ export class Placement { this.transform, pixelsToTiles); - labelToScreenMatrix = mat4.multiply([], this.transform.labelPlaneMatrix, glMatrix); + labelToScreenMatrix = mat4.multiply(mat4.create(), this.transform.labelPlaneMatrix, glMatrix); } // As long as this placement lives, we have to hold onto this bucket's diff --git a/src/symbol/projection.ts b/src/symbol/projection.ts index 64ba5a5103..f2a71ed664 100644 --- a/src/symbol/projection.ts +++ b/src/symbol/projection.ts @@ -102,7 +102,7 @@ function getGlCoordMatrix(posMatrix: mat4, } function project(point: Point, matrix: mat4) { - const pos = [point.x, point.y, 0, 1]; + const pos = vec4.fromValues(point.x, point.y, 0, 1); xyTransformMat4(pos, pos, matrix); const w = pos[3]; return { @@ -115,7 +115,7 @@ function getPerspectiveRatio(cameraToCenterDistance: number, signedDistanceFromC return 0.5 + 0.5 * (cameraToCenterDistance / signedDistanceFromCamera); } -function isVisible(anchorPos: [number, number, number, number], +function isVisible(anchorPos: vec4, clippingBuffer: [number, number]) { const x = anchorPos[0] / anchorPos[3]; const y = anchorPos[1] / anchorPos[3]; @@ -143,7 +143,7 @@ function updateLineLabels(bucket: SymbolBucket, const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData; const partiallyEvaluatedSize = symbolSize.evaluateSizeForZoom(sizeData, painter.transform.zoom); - const clippingBuffer = [256 / painter.width * 2 + 1, 256 / painter.height * 2 + 1]; + const clippingBuffer: [number, number] = [256 / painter.width * 2 + 1, 256 / painter.height * 2 + 1]; const dynamicLayoutVertexArray = isText ? bucket.text.dynamicLayoutVertexArray : @@ -158,7 +158,7 @@ function updateLineLabels(bucket: SymbolBucket, let useVertical = false; for (let s = 0; s < placedSymbols.length; s++) { - const symbol: any = placedSymbols.get(s); + const symbol = placedSymbols.get(s); // Don't do calculations for vertical glyphs unless the previous symbol was horizontal // and we determined that vertical glyphs were necessary. @@ -170,7 +170,7 @@ function updateLineLabels(bucket: SymbolBucket, // Awkward... but we're counting on the paired "vertical" symbol coming immediately after its horizontal counterpart useVertical = false; - const anchorPos = [symbol.anchorX, symbol.anchorY, 0, 1]; + const anchorPos = vec4.fromValues(symbol.anchorX, symbol.anchorY, 0, 1); vec4.transformMat4(anchorPos, anchorPos, posMatrix); // Don't bother calculating the correct point for invisible labels. diff --git a/src/util/primitives.ts b/src/util/primitives.ts index a83fabedf4..c04a826ce9 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -1,4 +1,4 @@ -import {vec3, vec4} from 'gl-matrix'; +import {mat4, vec3, vec4} from 'gl-matrix'; import assert from 'assert'; class Frustum { @@ -10,7 +10,7 @@ class Frustum { this.planes = planes_; } - static fromInvProjectionMatrix(invProj: Float32Array, worldSize: number, zoom: number): Frustum { + static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { const clipSpaceCorners = [ [-1, 1, -1, 1], [ 1, 1, -1, 1], @@ -26,8 +26,8 @@ class Frustum { // Transform frustum corner points from clip space to tile space const frustumCoords = clipSpaceCorners - .map(v => vec4.transformMat4(new Float32Array(), v as vec4, invProj)) - .map(v => vec4.scale(new Float32Array(), v, 1.0 / v[3] / worldSize * scale)); + .map(v => vec4.transformMat4(vec4.create(), v as vec4, invProj)) + .map(v => vec4.scale(vec4.create(), v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ [0, 1, 2], // near @@ -39,9 +39,9 @@ class Frustum { ]; const frustumPlanes = frustumPlanePointIndices.map((p: Array) => { - const a = vec3.sub(new Float32Array(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); - const b = vec3.sub(new Float32Array(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); - const n = vec3.normalize(new Float32Array(), vec3.cross(new Float32Array(), a, b)); + const a = vec3.sub(vec3.create(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); + const b = vec3.sub(vec3.create(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); + const n = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), a, b)); const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); return (n as number[]).concat(d); }); @@ -58,7 +58,7 @@ class Aabb { constructor(min_: vec3, max_: vec3) { this.min = min_; this.max = max_; - this.center = vec3.scale(new Float32Array(), vec3.add(new Float32Array(), this.min, this.max), 0.5); + this.center = vec3.scale(vec3.create(), vec3.add(vec3.create(), this.min, this.max), 0.5); } quadrant(index: number): Aabb { diff --git a/src/util/window.ts b/src/util/window.ts index 1de24ccb53..9fda847665 100644 --- a/src/util/window.ts +++ b/src/util/window.ts @@ -96,5 +96,5 @@ function restore(): Window { window.WebGLFramebuffer = window.WebGLFramebuffer || Object; Object.assign(_window, window); // eslint-disable-line no-restricted-properties - return window; + return window as Window; } From 8f186658cf1007dfb2252f72ae3810e69304b943 Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 26 Jul 2021 15:08:14 +0300 Subject: [PATCH 065/142] Added some "as any" to places in the code where the typing were not just right and the method are proplemeatic... --- src/render/painter.ts | 5 +++-- src/render/program.ts | 2 +- src/render/texture.ts | 1 - src/shaders/index.ts | 17 ++++++++++------- src/source/geojson_worker_source.ts | 2 +- src/style-spec/expression/index.ts | 6 +++--- src/style-spec/function/convert.ts | 2 +- src/style/style_layer/symbol_style_layer.ts | 2 +- src/symbol/projection.ts | 4 ++-- src/symbol/shaping.ts | 2 +- src/util/web_worker_transfer.ts | 2 +- src/util/window.ts | 4 +--- 12 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/render/painter.ts b/src/render/painter.ts index 5c72f05576..d330f00159 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -12,7 +12,7 @@ import rasterBoundsAttributes from '../data/raster_bounds_attributes'; import posAttributes from '../data/pos_attributes'; import ProgramConfiguration from '../data/program_configuration'; import CrossTileSymbolIndex from '../symbol/cross_tile_symbol_index'; -import * as shaders from '../shaders'; +import * as shaders from '../shaders/shaders'; import Program from './program'; import {programUniforms} from './program/program_uniforms'; import Context from '../gl/context'; @@ -62,6 +62,7 @@ import type VertexBuffer from '../gl/vertex_buffer'; import type IndexBuffer from '../gl/index_buffer'; import type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types'; import type ResolvedImage from '../style-spec/expression/types/resolved_image'; +import type {RGBAImage} from '../util/image'; export type RenderPass = "offscreen" | "opaque" | "translucent"; @@ -217,7 +218,7 @@ class Painter { width: 1, height: 1, data: new Uint8Array([0, 0, 0, 0]) - }, context.gl.RGBA); + } as RGBAImage, context.gl.RGBA); const gl = this.context.gl; this.stencilClearMode = new StencilMode({func: gl.ALWAYS, mask: 0}, 0x0, 0xFF, gl.ZERO, gl.ZERO, gl.ZERO); diff --git a/src/render/program.ts b/src/render/program.ts index 6632ad75c6..8b77e5ed67 100644 --- a/src/render/program.ts +++ b/src/render/program.ts @@ -1,4 +1,4 @@ -import {prelude} from '../shaders'; +import {prelude} from '../shaders/shaders'; import assert from 'assert'; import ProgramConfiguration from '../data/program_configuration'; import VertexArrayObject from './vertex_array_object'; diff --git a/src/render/texture.ts b/src/render/texture.ts index 18098c54fc..0b5bf28c25 100644 --- a/src/render/texture.ts +++ b/src/render/texture.ts @@ -14,7 +14,6 @@ type EmptyImage = { type DataTextureImage = RGBAImage | AlphaImage | EmptyImage; export type TextureImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageData | ImageBitmap | DataTextureImage; - class Texture { context: Context; size: [number, number]; diff --git a/src/shaders/index.ts b/src/shaders/index.ts index f2dba503ce..1c67fde359 100644 --- a/src/shaders/index.ts +++ b/src/shaders/index.ts @@ -6,15 +6,18 @@ /* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ -const fs = require('fs'); +// HM TODO: this doesn't work, it needs to be added back when starting to understand how the tests work... +// Also we want to remove esm too... +//const fs = require('fs'); // enable ES Modules in Node -require = require("esm")(module); +//require = require("esm")(module); // enable requiring GLSL in Node -require.extensions['.glsl'] = function (module, filename) { - const content = fs.readFileSync(filename, 'utf8'); - module._compile(`module.exports = \`${content}\``, filename); -}; +//require.extensions['.glsl'] = function (module, filename) { +// const content = fs.readFileSync(filename, 'utf8'); +// module._compile(`module.exports = \`${content}\``, filename); +//}; -module.exports = require("./shaders.js"); +//module.exports = require("./shaders.js"); +export {}; diff --git a/src/source/geojson_worker_source.ts b/src/source/geojson_worker_source.ts index 1f036d3666..21981fa969 100644 --- a/src/source/geojson_worker_source.ts +++ b/src/source/geojson_worker_source.ts @@ -290,7 +290,7 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource { removeSource(params: { source: string - }, callback: Callback) { + }, callback: WorkerTileCallback) { if (this._pendingCallback) { // Don't leak callbacks this._pendingCallback(null, {abandoned: true}); diff --git a/src/style-spec/expression/index.ts b/src/style-spec/expression/index.ts index bc866ec9f0..4236deaa35 100644 --- a/src/style-spec/expression/index.ts +++ b/src/style-spec/expression/index.ts @@ -296,7 +296,7 @@ export type CompositeExpression = { export type StylePropertyExpression = ConstantExpression | SourceExpression | CameraExpression | CompositeExpression; export function createPropertyExpression(expressionInput: unknown, propertySpec: StylePropertySpecification): Result> { - let expression = createExpression(expressionInput, propertySpec); + const expression = createExpression(expressionInput, propertySpec); if (expression.result === 'error') { return expression; } @@ -355,14 +355,14 @@ export class StylePropertyFunction { extend(this, createFunction(this._parameters, this._specification)); } - static deserialize(serialized: { + static deserialize(serialized: { _parameters: PropertyValueSpecification, _specification: StylePropertySpecification }) { return new StylePropertyFunction(serialized._parameters, serialized._specification) as StylePropertyFunction; } - static serialize(input: StylePropertyFunction) { + static serialize(input: StylePropertyFunction) { return { _parameters: input._parameters, _specification: input._specification diff --git a/src/style-spec/function/convert.ts b/src/style-spec/function/convert.ts index 1241d2cab8..9f81bc232f 100644 --- a/src/style-spec/function/convert.ts +++ b/src/style-spec/function/convert.ts @@ -19,7 +19,7 @@ function convertFunction(parameters: any, propertySpec: StylePropertySpecificati const zoomDependent = zoomAndFeatureDependent || !featureDependent; stops = stops.map((stop) => { - if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') { + if (!featureDependent && (propertySpec as any).tokens && typeof stop[1] === 'string') { return [stop[0], convertTokenString(stop[1])]; } return [stop[0], convertLiteral(stop[1])]; diff --git a/src/style/style_layer/symbol_style_layer.ts b/src/style/style_layer/symbol_style_layer.ts index 0c6cf7ca01..f4a8255e91 100644 --- a/src/style/style_layer/symbol_style_layer.ts +++ b/src/style/style_layer/symbol_style_layer.ts @@ -130,7 +130,7 @@ class SymbolStyleLayer extends StyleLayer { expression = (new ZoomDependentExpression('composite', styleExpression, overriden.value.zoomStops, - overriden.value._interpolationType) as CompositeExpression); + (overriden.value as any)._interpolationType) as CompositeExpression); } this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property, expression, diff --git a/src/symbol/projection.ts b/src/symbol/projection.ts index f2a71ed664..ccc0dcce46 100644 --- a/src/symbol/projection.ts +++ b/src/symbol/projection.ts @@ -196,8 +196,8 @@ function updateLineLabels(bucket: SymbolBucket, if (placeUnflipped.notEnoughRoom || useVertical || (placeUnflipped.needsFlipping && - placeGlyphsAlongLine(symbol, pitchScaledFontSize, true /*flipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, - bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio).notEnoughRoom)) { + (placeGlyphsAlongLine(symbol, pitchScaledFontSize, true /*flipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, + bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio) as any).notEnoughRoom)) { hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray); } } diff --git a/src/symbol/shaping.ts b/src/symbol/shaping.ts index 76c44a0a96..128ae5007d 100644 --- a/src/symbol/shaping.ts +++ b/src/symbol/shaping.ts @@ -20,7 +20,7 @@ enum WritingMode { horizontal = 1, vertical = 2, horizontalOnly = 3 -}; +} export class WriteModeMap { "horizontal": WritingMode.horizontal; diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index aaac68120f..a31de26464 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -203,7 +203,7 @@ export function serialize(input: unknown, transferables?: Array | } } else { // make sure statically serialized object survives transfer of $name property - assert(!transferables || properties !== transferables[transferables.length - 1]); + assert(!transferables || properties as any !== transferables[transferables.length - 1]); } if (properties.$name) { diff --git a/src/util/window.ts b/src/util/window.ts index 9fda847665..9a6373fae6 100644 --- a/src/util/window.ts +++ b/src/util/window.ts @@ -9,8 +9,6 @@ import jsdom from 'jsdom'; import gl from 'gl'; import sinon from 'sinon'; -// import type {Window} from '../types/window'; - const {window: _window} = new jsdom.JSDOM('', { virtualConsole: new jsdom.VirtualConsole().sendTo(console) }); @@ -67,7 +65,7 @@ function restore(): Window { }; window.useFakeXMLHttpRequest = function() { - sinon.xhr.supportsCORS = true; + (sinon as any).xhr.supportsCORS = true; this.server = sinon.fakeServer.create(); this.XMLHttpRequest = this.server.xhr; }; From 3e5768e154fe7c3e1a44f94b772b55e5fee1db08 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 17:18:36 +0300 Subject: [PATCH 066/142] More types fixing, not perfect but good enough. --- src/style/light.ts | 21 ++++++++++++++------- src/style/properties.ts | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/style/light.ts b/src/style/light.ts index d3e4cbea53..8c40cda1dc 100644 --- a/src/style/light.ts +++ b/src/style/light.ts @@ -33,7 +33,7 @@ class LightPositionProperty implements Property<[number, number, number], LightP specification: StylePropertySpecification; constructor() { - this.specification = styleSpec.light.position; + this.specification = styleSpec.light.position as StylePropertySpecification; } possiblyEvaluate( @@ -59,11 +59,18 @@ type Props = { "intensity": DataConstantProperty }; +type PropsPossiblyEvaluated = { + "anchor": "map" | "viewport", + "position": LightPosition, + "color": Color, + "intensity": number +}; + const properties: Properties = new Properties({ - "anchor": new DataConstantProperty(styleSpec.light.anchor), + "anchor": new DataConstantProperty(styleSpec.light.anchor as StylePropertySpecification), "position": new LightPositionProperty(), - "color": new DataConstantProperty(styleSpec.light.color), - "intensity": new DataConstantProperty(styleSpec.light.intensity), + "color": new DataConstantProperty(styleSpec.light.color as StylePropertySpecification), + "intensity": new DataConstantProperty(styleSpec.light.intensity as StylePropertySpecification), }); const TRANSITION_SUFFIX = '-transition'; @@ -74,7 +81,7 @@ const TRANSITION_SUFFIX = '-transition'; class Light extends Evented { _transitionable: Transitionable; _transitioning: Transitioning; - properties: PossiblyEvaluated; + properties: PossiblyEvaluated; constructor(lightOptions?: LightSpecification) { super(); @@ -95,9 +102,9 @@ class Light extends Evented { for (const name in light) { const value = light[name]; if (endsWith(name, TRANSITION_SUFFIX)) { - this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value); + this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length) as keyof Props, value); } else { - this._transitionable.setValue(name, value); + this._transitionable.setValue(name as keyof Props, value); } } } diff --git a/src/style/properties.ts b/src/style/properties.ts index 091abb91a0..8341948117 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -165,7 +165,7 @@ class TransitionablePropertyValue { */ export class Transitionable { _properties: Properties; - _values: TransitionablePropertyValues; + _values: { [K in keyof Props]: TransitionablePropertyValue}; constructor(properties: Properties) { this._properties = properties; @@ -199,12 +199,12 @@ export class Transitionable { serialize() { const result: any = {}; for (const property of Object.keys(this._values)) { - const value = this.getValue(property); + const value = this.getValue(property as keyof Props); if (value !== undefined) { result[property] = value; } - const transition = this.getTransition(property); + const transition = this.getTransition(property as keyof Props); if (transition !== undefined) { result[`${property}-transition`] = transition; } @@ -302,7 +302,7 @@ class TransitioningPropertyValue { */ export class Transitioning { _properties: Properties; - _values: TransitioningPropertyValues; + _values: { [K in keyof Props]: PossiblyEvaluatedPropertyValue}; constructor(properties: Properties) { this._properties = properties; @@ -313,7 +313,7 @@ export class Transitioning { parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array - ): PossiblyEvaluated { + ): PossiblyEvaluated { const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define for (const property of Object.keys(this._values)) { result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages); @@ -346,14 +346,14 @@ export class Transitioning { */ export class Layout { _properties: Properties; - _values: PropertyValues; + _values: { [K in keyof Props]: PropertyValue>}; constructor(properties: Properties) { this._properties = properties; this._values = (Object.create(properties.defaultPropertyValues) as any); } - getValue(name: S) { + getValue(name: S) { return clone(this._values[name].value); } @@ -364,7 +364,7 @@ export class Layout { serialize() { const result: any = {}; for (const property of Object.keys(this._values)) { - const value = this.getValue(property as keyof PropertyValues); + const value = this.getValue(property as keyof Props); if (value !== undefined) { result[property] = value; } @@ -376,7 +376,7 @@ export class Layout { parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array - ): PossiblyEvaluated { + ): PossiblyEvaluated { const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define for (const property of Object.keys(this._values)) { result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages); @@ -727,10 +727,10 @@ export class ColorRampProperty implements Property { */ export class Properties { properties: Props; - defaultPropertyValues: PropertyValues; - defaultTransitionablePropertyValues: TransitionablePropertyValues; - defaultTransitioningPropertyValues: TransitioningPropertyValues; - defaultPossiblyEvaluatedValues: PossiblyEvaluatedPropertyValues; + defaultPropertyValues: {[K in keyof Props]: PropertyValue}; + defaultTransitionablePropertyValues: {[K in keyof Props]: TransitionablePropertyValue}; + defaultTransitioningPropertyValues: {[K in keyof Props]: TransitioningPropertyValue}; + defaultPossiblyEvaluatedValues: {[K in keyof Props]: PossiblyEvaluatedPropertyValue};; overridableProperties: Array; constructor(properties: Props) { @@ -742,7 +742,7 @@ export class Properties { this.overridableProperties = ([] as any); for (const property in properties) { - const prop = properties[property]; + const prop = properties[property] as any; if (prop.specification.overridable) { this.overridableProperties.push(property); } From e2ee96f2035b677a38219882639a2d931b3d12f0 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 22:00:17 +0300 Subject: [PATCH 067/142] Fix last typescript errors --- src/util/worker_pool.ts | 2 +- tsconfig.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/util/worker_pool.ts b/src/util/worker_pool.ts index 59a36995ea..5a38c35380 100644 --- a/src/util/worker_pool.ts +++ b/src/util/worker_pool.ts @@ -26,7 +26,7 @@ export default class WorkerPool { // client code has had a chance to set it. this.workers = []; while (this.workers.length < WorkerPool.workerCount) { - this.workers.push(new WebWorker()); + this.workers.push(WebWorker()); } } diff --git a/tsconfig.json b/tsconfig.json index d167178c7e..e89ea1f940 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,6 @@ "jsx": "preserve", "module": "ES6", "moduleResolution": "Node", - "noEmit": true, "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, @@ -22,8 +21,9 @@ "DOM.Iterable", "WebWorker" ], - "outDir": "lib", - "rootDir": "src", + "outDir": "rollup/build/tsc", + "declarationDir": "types", + "declarationMap": true }, "include": [ "src/**/*.ts" From a34f64bc65c820fa424c04ebc4a47f4a2503a5bc Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 22:01:39 +0300 Subject: [PATCH 068/142] Fix incorrect typings and code errors. --- src/util/primitives.ts | 58 ++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/src/util/primitives.ts b/src/util/primitives.ts index c04a826ce9..a178fbdee4 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -2,51 +2,45 @@ import {mat4, vec3, vec4} from 'gl-matrix'; import assert from 'assert'; class Frustum { - points: Array>; - planes: Array>; + constructor(public points: vec4[], public planes: vec4[]) { } - constructor(points_: Array>, planes_: Array>) { - this.points = points_; - this.planes = planes_; - } - - static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { + public static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { const clipSpaceCorners = [ - [-1, 1, -1, 1], - [ 1, 1, -1, 1], - [ 1, -1, -1, 1], - [-1, -1, -1, 1], - [-1, 1, 1, 1], - [ 1, 1, 1, 1], - [ 1, -1, 1, 1], - [-1, -1, 1, 1] + vec4.fromValues(-1, 1, -1, 1), + vec4.fromValues( 1, 1, -1, 1), + vec4.fromValues( 1, -1, -1, 1), + vec4.fromValues(-1, -1, -1, 1), + vec4.fromValues(-1, 1, 1, 1), + vec4.fromValues( 1, 1, 1, 1), + vec4.fromValues( 1, -1, 1, 1), + vec4.fromValues(-1, -1, 1, 1) ]; const scale = Math.pow(2, zoom); // Transform frustum corner points from clip space to tile space const frustumCoords = clipSpaceCorners - .map(v => vec4.transformMat4(vec4.create(), v as vec4, invProj)) + .map(v => vec4.transformMat4(vec4.create(), v, invProj)) .map(v => vec4.scale(vec4.create(), v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ - [0, 1, 2], // near - [6, 5, 4], // far - [0, 3, 7], // left - [2, 1, 5], // right - [3, 2, 6], // bottom - [0, 4, 5] // top + vec3.fromValues(0, 1, 2), // near + vec3.fromValues(6, 5, 4), // far + vec3.fromValues(0, 3, 7), // left + vec3.fromValues(2, 1, 5), // right + vec3.fromValues(3, 2, 6), // bottom + vec3.fromValues(0, 4, 5) // top ]; - const frustumPlanes = frustumPlanePointIndices.map((p: Array) => { + const frustumPlanes = frustumPlanePointIndices.map((p: vec3) => { const a = vec3.sub(vec3.create(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); const b = vec3.sub(vec3.create(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); const n = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), a, b)); const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); - return (n as number[]).concat(d); + return vec4.fromValues(n[0], n[1], n[2], d); }); - return new Frustum(frustumCoords as number[][], frustumPlanes); + return new Frustum(frustumCoords, frustumPlanes); } } @@ -93,10 +87,10 @@ class Aabb { assert(this.min[2] === 0 && this.max[2] === 0); const aabbPoints = [ - [this.min[0], this.min[1], 0.0, 1], - [this.max[0], this.min[1], 0.0, 1], - [this.max[0], this.max[1], 0.0, 1], - [this.min[0], this.max[1], 0.0, 1] + vec4.fromValues(this.min[0], this.min[1], 0.0, 1), + vec4.fromValues(this.max[0], this.min[1], 0.0, 1), + vec4.fromValues(this.max[0], this.max[1], 0.0, 1), + vec4.fromValues(this.min[0], this.max[1], 0.0, 1) ]; let fullyInside = true; @@ -106,7 +100,9 @@ class Aabb { let pointsInside = 0; for (let i = 0; i < aabbPoints.length; i++) { - pointsInside += Number(vec4.dot(plane as vec4, aabbPoints[i] as vec4) >= 0); + if (vec4.dot(plane, aabbPoints[i]) >= 0) { + pointsInside++; + } } if (pointsInside === 0) From bd32057bc660ae1b95d9facb4716e9129658406e Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 22:04:00 +0300 Subject: [PATCH 069/142] Remove flow from rollup and add tsc to build --- .flowconfig | 61 ---------------- .gitignore | 2 +- build/rollup_plugins.js | 15 +--- package-lock.json | 153 ++++++++++++++++------------------------ package.json | 40 +++++------ rollup.config.js | 2 +- 6 files changed, 82 insertions(+), 191 deletions(-) delete mode 100644 .flowconfig diff --git a/.flowconfig b/.flowconfig deleted file mode 100644 index 5eac8c94d0..0000000000 --- a/.flowconfig +++ /dev/null @@ -1,61 +0,0 @@ -[ignore] -.*\.svg -.*\.png -.*/\.nyc_output/.* -.*/docs/.* -.*/node_modules/.cache/.* -.*/node_modules/.*/tests?/.* -.*/node_modules/@mapbox/jsonlint-lines-primitives/.* -.*/node_modules/@mapbox/mvt-fixtures/.* -.*/node_modules/@mapbox/geojson-types/fixtures/.* -.*/node_modules/@mapbox/mr-ui/.* -.*/node_modules/@mapbox/dr-ui/.* -.*/node_modules/@mapbox/batfish/.* -.*/node_modules/browserify/.* -.*/node_modules/browser-sync.*/.* -.*/node_modules/nyc/.* -.*/node_modules/fbjs/.* -.*/node_modules/es5-ext/.* -.*/node_modules/jsdom/.* -.*/node_modules/eslint.*/.* -.*/node_modules/highlight.*/.* -.*/node_modules/rxjs/.* -.*/node_modules/@?babel.*/.* -.*/node_modules/react.*/.* -.*/node_modules/svgo/.* -.*/node_modules/moment/.* -.*/node_modules/regenerate-unicode-properties/.* -.*/node_modules/remark.*/.* -.*/node_modules/webpack/.* -.*/node_modules/caniuse-lite/.* -.*/node_modules/d3.*/.* -.*/node_modules/css-tree/.* -.*/node_modules/lodash/.* -.*/node_modules/fsevents/.* -.*/node_modules/browser-sync-client/.* -.*/node_modules/core-js.*/.* -.*/node_modules/stylelint/.* -.*/node_modules/postcss.*/.* -.*/node_modules/prismjs.*/.* -.*/node_modules/documentation/.* -.*/node_modules/module-deps/.* -.*/test/unit/style-spec/fixture/invalidjson.input.json -.*/render-tests/.* -.*/query-tests/.* -.*/expression-tests/.* -.*/test/build/downstream-flow-fixture/.* -.*/_batfish_tmp/.* -.*/_site/.* - -[version] -0.100.0 - -[options] -server.max_workers=4 - -[strict] -nonstrict-import -unclear-type -untyped-import -untyped-type-import -sketchy-null diff --git a/.gitignore b/.gitignore index ea8b0cc0ac..e7d4205011 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,11 @@ /rollup/build/ +/types/ /dist/ *.es.js *.js.map node_modules *.sublime-* coverage -flow-coverage .DS_Store .nyc_output *_generated.js diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index 156ac68176..36f2c53e63 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -14,14 +14,13 @@ import strip from '@rollup/plugin-strip'; // builds (main maplibre bundle, style-spec package, benchmarks bundle) export const plugins = (minified, production) => [ - flow(), minifyStyleSpec(), json(), production ? strip({ sourceMap: true, functions: ['PerformanceUtils.*', 'Debug.*'] }) : false, - glsl('./src/shaders/*.glsl', production), + glsl('./rollup/build/tsc/src/shaders/*.glsl', production), buble({transforms: {dangerousForOf: true}, objectAssign: "Object.assign"}), minified ? terser({ compress: { @@ -41,18 +40,6 @@ export const plugins = (minified, production) => [ }) ].filter(Boolean); -// Using this instead of rollup-plugin-flow due to -// https://github.com/leebyron/rollup-plugin-flow/issues/5 -export function flow() { - return { - name: 'flow-remove-types', - transform: (code) => ({ - code: flowRemoveTypes(code).toString(), - map: null - }) - }; -} - // Using this instead of rollup-plugin-string to add minification function glsl(include, minify) { const filter = createFilter(include); diff --git a/package-lock.json b/package-lock.json index 525b0e8915..a22cd88fdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1417,29 +1417,6 @@ "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", "dev": true }, - "@mapbox/flow-remove-types": { - "version": "1.3.0-await.upstream.2", - "resolved": "https://registry.npmjs.org/@mapbox/flow-remove-types/-/flow-remove-types-1.3.0-await.upstream.2.tgz", - "integrity": "sha512-OYVWXwkluP+9Jz2uenNSeum7U2Hp6RncPAS8iz3qnJ37kE/acae5dD1207BFqWsJ2JsBqULG8g2wB+hUQzPeYg==", - "dev": true, - "requires": { - "babylon": "^7.0.0-beta.41", - "node-modules-regexp": "^1.0.0", - "pirates": "^3.0.2", - "vlq": "^0.2.1" - }, - "dependencies": { - "pirates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-3.0.2.tgz", - "integrity": "sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - } - } - }, "@mapbox/gazetteer": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@mapbox/gazetteer/-/gazetteer-4.0.4.tgz", @@ -1783,6 +1760,15 @@ "@octokit/openapi-types": "^8.3.0" } }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, "@rollup/plugin-strip": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-strip/-/plugin-strip-1.3.3.tgz", @@ -2391,7 +2377,8 @@ "@types/node": { "version": "16.3.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.3.tgz", - "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==" + "integrity": "sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==", + "dev": true }, "@types/node-notifier": { "version": "8.0.1", @@ -2667,6 +2654,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/window-or-global/-/window-or-global-1.0.4.tgz", "integrity": "sha512-+tJmApNoyWOxINwhTuMD8b9UegcB8HUSoLzBHPKIxq2XMnmUKCwPV2/+n8qkjkabx2diA68hDSAohESC9uC2kg==", + "dev": true, "requires": { "@types/node": "*" } @@ -3408,12 +3396,6 @@ "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", "dev": true }, - "babylon": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", - "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", - "dev": true - }, "backbone": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", @@ -6861,15 +6843,6 @@ } } }, - "eslint-plugin-flowtype": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", - "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, "eslint-plugin-html": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz", @@ -7081,12 +7054,6 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, - "esm": { - "version": "3.0.84", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.84.tgz", - "integrity": "sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==", - "dev": true - }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -7743,12 +7710,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flow-bin": { - "version": "0.100.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.100.0.tgz", - "integrity": "sha512-jcethhgrslBJukH7Z7883ohFFpzLrdsOEwHxvn5NwuTWbNaE71GAl55/PEBRJwYpDvYkRlqgcNkANTv0x5XjqA==", - "dev": true - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -9456,22 +9417,29 @@ } }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -15035,14 +15003,12 @@ } }, "rollup": { - "version": "1.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", - "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "version": "2.54.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.54.0.tgz", + "integrity": "sha512-RHzvstAVwm9A751NxWIbGPFXs3zL4qe/eYg+N7WwGtIXVLy1cK64MiU37+hXeFm1jqipK6DGgMi6Z2hhPuCC3A==", "dev": true, "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" + "fsevents": "~2.3.2" } }, "rollup-plugin-buble": { @@ -15109,26 +15075,37 @@ } }, "rollup-plugin-sourcemaps": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", - "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "dev": true, "requires": { - "rollup-pluginutils": "^2.0.1", - "source-map-resolve": "^0.5.0" + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } } }, "rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" + "terser": "^5.0.0" } }, "rollup-plugin-unassert": { @@ -17169,20 +17146,20 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" }, "dependencies": { "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -18298,12 +18275,6 @@ } } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", diff --git a/package.json b/package.json index caba60d5fd..975b381d08 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "engines": { "node": ">=6.4.0" }, - "types": "src/index.d.ts", + "types": "types/index.d.ts", "dependencies": { "@mapbox/geojson-rewind": "^0.5.0", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -21,7 +21,6 @@ "@mapbox/unitbezier": "^0.0.0", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", - "@types/window-or-global": "^1.0.4", "csscolorparser": "~1.0.3", "earcut": "^2.2.2", "geojson-vt": "^3.2.1", @@ -39,11 +38,11 @@ }, "devDependencies": { "@babel/core": "^7.9.0", - "@mapbox/flow-remove-types": "^1.3.0-await.upstream.2", "@mapbox/gazetteer": "^4.0.4", "@mapbox/mapbox-gl-rtl-text": "^0.2.1", "@mapbox/mvt-fixtures": "^3.6.0", "@octokit/rest": "^16.30.1", + "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-strip": "^1.3.1", "@types/babel__core": "^7.1.12", "@types/babelify": "^7.3.6", @@ -56,6 +55,7 @@ "@types/ejs": "^2.7.0", "@types/eslint": "^7.2.6", "@types/esm": "~3.2.0", + "@types/geojson": "^7946.0.7", "@types/gl": "^4.1.0", "@types/glob": "^7.1.3", "@types/jsdom": "^16.2.5", @@ -81,9 +81,9 @@ "@types/stylelint": "^9.10.1", "@types/supercluster": "^5.0.2", "@types/tape": "^4.13.0", + "@types/window-or-global": "^1.0.4", "@typescript-eslint/eslint-plugin": "^4.10.0", "@typescript-eslint/parser": "^4.10.0", - "@types/geojson": "^7946.0.7", "address": "^1.1.2", "babel-eslint": "^10.0.1", "babelify": "^10.0.0", @@ -100,13 +100,10 @@ "ejs": "^2.5.7", "eslint": "^7.15.0", "eslint-config-mourner": "^3.0.0", - "eslint-plugin-flowtype": "^3.9.1", "eslint-plugin-html": "^5.0.5", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jsdoc": "^30.7.8", "eslint-plugin-react": "^7.21.5", - "esm": "~3.0.84", - "flow-bin": "^0.100.0", "gl": "^4.5.3", "glob": "^7.1.4", "is-builtin-module": "^3.0.0", @@ -135,14 +132,14 @@ "react": "^16.8.6", "react-dom": "^16.8.6", "request": "^2.88.0", - "rollup": "^1.23.1", + "rollup": "^2.54.0", "rollup-plugin-buble": "^0.19.8", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-replace": "^2.2.0", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^5.1.2", + "rollup-plugin-sourcemaps": "^0.6.3", + "rollup-plugin-terser": "^7.0.2", "rollup-plugin-unassert": "^0.3.0", "selenium-webdriver": "^4.0.0-alpha.5", "semver": "^5.5.0", @@ -166,14 +163,13 @@ }, "esm": true, "scripts": { - "build-tsc": "tsc --noEmit -p .", - "build-dev": "rollup -c --environment BUILD:dev", - "watch-dev": "rollup -c --environment BUILD:dev --watch", - "build-prod": "rollup -c --environment BUILD:production", - "build-prod-min": "rollup -c --environment BUILD:production,MINIFY:true", + "build-tsc": "tsc && cp -rf ./src/shaders/*.glsl ./rollup/build/tsc/src/shaders", + "build-dev": "npm run build-tsc && rollup -c --environment BUILD:dev", + "watch-dev": "npm run build-tsc && rollup -c --environment BUILD:dev --watch", + "build-prod": "npm run build-tsc && rollup -c --environment BUILD:production", + "build-prod-min": "npm run build-tsc && rollup -c --environment BUILD:production,MINIFY:true", "build-csp": "rollup -c rollup.config.csp.js", "build-query-suite": "rollup -c test/integration/rollup.config.test.js", - "build-flow-types": "mkdir -p dist && cp build/maplibre-gl.js.flow dist/maplibre-gl.js.flow && cp build/maplibre-gl.js.flow dist/maplibre-gl-dev.js.flow", "build-css": "postcss -o dist/maplibre-gl.css src/css/maplibre-gl.css", "build-style-spec": "cd src/style-spec && npm run build && cd ../.. && mkdir -p dist/style-spec && cp src/style-spec/dist/* dist/style-spec", "build-diagrams": "cd docs/diagrams; ls *.plantuml | xargs -I {} puml generate --svg {} -o {}.svg", @@ -191,7 +187,7 @@ "lint": "eslint src --ext .ts", "lint-docs": "documentation lint src/index.js", "lint-css": "stylelint 'src/css/maplibre-gl.css'", - "test": "run-s lint lint-css lint-docs test-flow test-unit", + "test": "run-s lint lint-css lint-docs test-unit", "test-suite": "run-s test-render test-query test-expressions", "test-suite-clean": "find test/integration/{render,query, expressions}-tests -mindepth 2 -type d -exec test -e \"{}/actual.png\" \\; -not \\( -exec test -e \"{}/style.json\" \\; \\) -print | xargs -t rm -r", "test-unit": "cross-env build/run-tap --reporter classic --no-coverage test/unit", @@ -202,9 +198,8 @@ "watch-query": "testem -f test/integration/testem.js", "test-query": "testem ci -f test/integration/testem.js -R xunit > test/integration/query-tests/test-results.xml", "test-expressions": "cross-env build/run-node test/expression.test.js", - "test-flow": "cross-env build/run-node build/generate-flow-typed-style-spec && flow .", - "test-cov": "nyc --require=@mapbox/flow-remove-types/register --reporter=text-summary --reporter=lcov --cache run-s test-unit test-expressions test-query test-render", - "prepublishOnly": "run-s prepare-publish build-flow-types build-dev build-prod-min build-prod build-csp build-css build-style-spec test-build diff-tarball", + "test-cov": "nyc --reporter=text-summary --reporter=lcov --cache run-s test-unit test-expressions test-query test-render", + "prepublishOnly": "run-s prepare-publish build-dev build-prod-min build-prod build-csp build-css build-style-spec test-build diff-tarball", "print-release-url": "node build/print-release-url.js", "codegen": "cross-env build/run-node build/generate-style-code.js && build/run-node build/generate-struct-arrays.js" }, @@ -212,8 +207,7 @@ "build/", "dist/maplibre-gl*", "dist/style-spec/", - "flow-typed/*.js", - "src/", - ".flowconfig" + "types/", + "src/" ] } diff --git a/rollup.config.js b/rollup.config.js index 84600f7523..db905b672b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -19,7 +19,7 @@ export default [{ // This is also where we do all of our source transformations: removing // flow annotations, transpiling ES6 features using buble, inlining shader // sources as strings, etc. - input: ['src/index.js', 'src/source/worker.js'], + input: ['rollup/build/tsc/src/index.js', 'rollup/build/tsc/src/source/worker.js'], output: { dir: 'rollup/build/maplibregl', format: 'amd', From 78a62c94ef9c9e6887404f91f37338ad1dcac538 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 22:04:59 +0300 Subject: [PATCH 070/142] Format file --- rollup/bundle_prelude.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rollup/bundle_prelude.js b/rollup/bundle_prelude.js index 0f8ba4da7a..715ecb5339 100644 --- a/rollup/bundle_prelude.js +++ b/rollup/bundle_prelude.js @@ -4,18 +4,18 @@ var shared, worker, maplibregl; // define gets called three times: one for each chunk. we rely on the order // they're imported to know which is which function define(_, chunk) { -if (!shared) { - shared = chunk; -} else if (!worker) { - worker = chunk; -} else { - var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);' + if (!shared) { + shared = chunk; + } else if (!worker) { + worker = chunk; + } else { + var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);' - var sharedChunk = {}; - shared(sharedChunk); - maplibregl = chunk(sharedChunk); - if (typeof window !== 'undefined') { - maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })); + var sharedChunk = {}; + shared(sharedChunk); + maplibregl = chunk(sharedChunk); + if (typeof window !== 'undefined') { + maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })); + } } } -} From 2710e4b8e434b50baef6649ea043d03beefd35d1 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 27 Jul 2021 22:42:26 +0300 Subject: [PATCH 071/142] Fix rollup build --- build/rollup_plugins.js | 1 - 1 file changed, 1 deletion(-) diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index 36f2c53e63..a08a2d95cd 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -1,5 +1,4 @@ -import flowRemoveTypes from '@mapbox/flow-remove-types'; import buble from 'rollup-plugin-buble'; import resolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; From a963b6e7930aae82ac555e9d95165077750bfd89 Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 30 Jul 2021 11:23:53 +0300 Subject: [PATCH 072/142] Initial commit to make the render test run --- build/rollup_plugins.js | 28 --------- package-lock.json | 9 --- package.json | 12 ++-- rollup.config.js | 2 +- rollup/copy-glsl-files.js | 35 +++++++++++ src/shaders/index.ts | 23 ------- test/integration/lib/expression.js | 5 +- test/integration/lib/harness.js | 16 +++-- test/integration/lib/localize-urls.js | 15 +++-- test/integration/lib/query.js | 7 ++- test/integration/lib/render.js | 9 ++- test/integration/lib/server.js | 18 +++--- test/query.test.js | 11 ++-- test/render.test.js | 16 +++-- test/stub_loader.js | 91 ++++++++++++++++++++++++--- test/suite_implementation.js | 25 ++++---- 16 files changed, 200 insertions(+), 122 deletions(-) create mode 100644 rollup/copy-glsl-files.js delete mode 100644 src/shaders/index.ts diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index a08a2d95cd..54b233f772 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -6,7 +6,6 @@ import unassert from 'rollup-plugin-unassert'; import json from 'rollup-plugin-json'; import {terser} from 'rollup-plugin-terser'; import minifyStyleSpec from './rollup_plugin_minify_style_spec'; -import {createFilter} from 'rollup-pluginutils'; import strip from '@rollup/plugin-strip'; // Common set of plugins/transformations shared across different rollup @@ -19,7 +18,6 @@ export const plugins = (minified, production) => [ sourceMap: true, functions: ['PerformanceUtils.*', 'Debug.*'] }) : false, - glsl('./rollup/build/tsc/src/shaders/*.glsl', production), buble({transforms: {dangerousForOf: true}, objectAssign: "Object.assign"}), minified ? terser({ compress: { @@ -38,29 +36,3 @@ export const plugins = (minified, production) => [ ignoreGlobal: true }) ].filter(Boolean); - -// Using this instead of rollup-plugin-string to add minification -function glsl(include, minify) { - const filter = createFilter(include); - return { - name: 'glsl', - transform(code, id) { - if (!filter(id)) return; - - // barebones GLSL minification - if (minify) { - code = code.trim() // strip whitespace at the start/end - .replace(/\s*\/\/[^\n]*\n/g, '\n') // strip double-slash comments - .replace(/\n+/g, '\n') // collapse multi line breaks - .replace(/\n\s+/g, '\n') // strip identation - .replace(/\s?([+-\/*=,])\s?/g, '$1') // strip whitespace around operators - .replace(/([;\(\),\{\}])\n(?=[^#])/g, '$1'); // strip more line breaks - } - - return { - code: `export default ${JSON.stringify(code)};`, - map: {mappings: ''} - }; - } - }; -} diff --git a/package-lock.json b/package-lock.json index a22cd88fdb..1fb713f9f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2269,15 +2269,6 @@ "@types/json-schema": "*" } }, - "@types/esm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/esm/-/esm-3.2.0.tgz", - "integrity": "sha512-aXemgVPnF1s0PQin04Ei8zTWaNwUdc4pmhZDg8LBW6QEl9kBWVItAUOLGUY5H5xduAmbL1pLGH1X/PN0+4R9tg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", diff --git a/package.json b/package.json index 975b381d08..3af989954a 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "node": ">=6.4.0" }, "types": "types/index.d.ts", + "type": "module", "dependencies": { "@mapbox/geojson-rewind": "^0.5.0", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -54,7 +55,6 @@ "@types/earcut": "^2.1.1", "@types/ejs": "^2.7.0", "@types/eslint": "^7.2.6", - "@types/esm": "~3.2.0", "@types/geojson": "^7946.0.7", "@types/gl": "^4.1.0", "@types/glob": "^7.1.3", @@ -161,13 +161,15 @@ "./src/util/window.js": "./src/util/browser/window.js", "./src/util/web_worker.js": "./src/util/browser/web_worker.js" }, - "esm": true, "scripts": { - "build-tsc": "tsc && cp -rf ./src/shaders/*.glsl ./rollup/build/tsc/src/shaders", + "build-glsl": "node rollup/copy-glsl-files.js ./rollup/build/tsc/shaders", + "build-glsl-min": "node rollup/copy-glsl-files.js ./rollup/build/tsc/shaders true", + "build-tsc": "tsc && npm run build-glsl", + "build-tsc-min": "tsc && npm run build-glsl-min", "build-dev": "npm run build-tsc && rollup -c --environment BUILD:dev", "watch-dev": "npm run build-tsc && rollup -c --environment BUILD:dev --watch", "build-prod": "npm run build-tsc && rollup -c --environment BUILD:production", - "build-prod-min": "npm run build-tsc && rollup -c --environment BUILD:production,MINIFY:true", + "build-prod-min": "npm run build-tsc-min && rollup -c --environment BUILD:production,MINIFY:true", "build-csp": "rollup -c rollup.config.csp.js", "build-query-suite": "rollup -c test/integration/rollup.config.test.js", "build-css": "postcss -o dist/maplibre-gl.css src/css/maplibre-gl.css", @@ -193,7 +195,7 @@ "test-unit": "cross-env build/run-tap --reporter classic --no-coverage test/unit", "test-build": "cross-env build/run-tap --no-coverage test/build/**/*.test.js", "test-browser": "cross-env build/run-tap --reporter spec --no-coverage test/browser/**/*.test.js", - "test-render": "node --max-old-space-size=2048 test/render.test.js", + "test-render": "node --experimental-specifier-resolution=node --experimental-json-modules --max-old-space-size=2048 test/render.test.js", "test-query-node": "node test/query.test.js", "watch-query": "testem -f test/integration/testem.js", "test-query": "testem ci -f test/integration/testem.js -R xunit > test/integration/query-tests/test-results.xml", diff --git a/rollup.config.js b/rollup.config.js index db905b672b..887e1ad8ed 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -19,7 +19,7 @@ export default [{ // This is also where we do all of our source transformations: removing // flow annotations, transpiling ES6 features using buble, inlining shader // sources as strings, etc. - input: ['rollup/build/tsc/src/index.js', 'rollup/build/tsc/src/source/worker.js'], + input: ['rollup/build/tsc/index.js', 'rollup/build/tsc/source/worker.js'], output: { dir: 'rollup/build/maplibregl', format: 'amd', diff --git a/rollup/copy-glsl-files.js b/rollup/copy-glsl-files.js new file mode 100644 index 0000000000..15b22cd574 --- /dev/null +++ b/rollup/copy-glsl-files.js @@ -0,0 +1,35 @@ +import fs from 'fs'; +import glob from 'glob'; + +let args = process.argv.slice(2); +let outputBaseDir = args[0]; +let minify = args[1]; + +console.log(`Copying glsl files to ${outputBaseDir}, minify: ${minify}`); + +/** + * This script is intended to copy the glsl file to the compilation output folder, + * change their extension to .js and export the shaders as strings in javascript. + * It will also minify them a bit if needed and change the extension to .js + */ + +glob("./src/**/*.glsl", null, (err, files) => { + for (let file of files) { + let code = fs.readFileSync(file, 'utf8'); + let minify = false; + + if (minify) { + code = code.trim() // strip whitespace at the start/end + .replace(/\s*\/\/[^\n]*\n/g, '\n') // strip double-slash comments + .replace(/\n+/g, '\n') // collapse multi line breaks + .replace(/\n\s+/g, '\n') // strip identation + .replace(/\s?([+-\/*=,])\s?/g, '$1') // strip whitespace around operators + .replace(/([;\(\),\{\}])\n(?=[^#])/g, '$1'); // strip more line breaks + + } + let content = `export default ${JSON.stringify(code)};` + let fileName = outputBaseDir + '/' + file.split('/').splice(-1) + ".js"; + fs.writeFileSync(fileName, content); + } + console.log(`Finished converting ${files.length} glsl files`); +}); \ No newline at end of file diff --git a/src/shaders/index.ts b/src/shaders/index.ts deleted file mode 100644 index 1c67fde359..0000000000 --- a/src/shaders/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -// This file is intended for use in the GL-JS test suite -// It provides the shaders entry point for Node (tests and GL Native) -// In a browser environment, this file is replaced with ./src/shaders/shaders.js -// when Rollup builds the main bundle. -// See package.json#browser - -/* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ - -// HM TODO: this doesn't work, it needs to be added back when starting to understand how the tests work... -// Also we want to remove esm too... -//const fs = require('fs'); - -// enable ES Modules in Node -//require = require("esm")(module); - -// enable requiring GLSL in Node -//require.extensions['.glsl'] = function (module, filename) { -// const content = fs.readFileSync(filename, 'utf8'); -// module._compile(`module.exports = \`${content}\``, filename); -//}; - -//module.exports = require("./shaders.js"); -export {}; diff --git a/test/integration/lib/expression.js b/test/integration/lib/expression.js index 1d253078c0..ff982818d6 100644 --- a/test/integration/lib/expression.js +++ b/test/integration/lib/expression.js @@ -1,8 +1,11 @@ -import path from 'path'; +import path, { dirname } from 'path'; import * as diff from 'diff'; import fs from 'fs'; import harness from './harness'; import compactStringify from 'json-stringify-pretty-compact'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); // we have to handle this edge case here because we have test fixtures for this // edge case, and we don't want UPDATE=1 to mess with them diff --git a/test/integration/lib/harness.js b/test/integration/lib/harness.js index dff138568b..e7d953d241 100644 --- a/test/integration/lib/harness.js +++ b/test/integration/lib/harness.js @@ -1,13 +1,21 @@ /* eslint-disable no-process-exit */ -import path from 'path'; +import path, { dirname } from 'path'; import fs from 'fs'; import glob from 'glob'; -import {shuffle} from 'shuffle-seed'; -import {queue} from 'd3'; +import shuffle_seed from 'shuffle-seed'; +import d3 from 'd3'; import colors from 'chalk'; import template from 'lodash.template'; import createServer from './server'; +import { createRequire } from 'module'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); + +const {queue} = d3; +const {shuffle} = shuffle_seed; export default function (directory, implementation, options, run) { const q = queue(1); @@ -19,7 +27,7 @@ export default function (directory, implementation, options, run) { let sequence = glob.sync(`**/${options.fixtureFilename || 'style.json'}`, {cwd: directory}) .map(fixture => { const id = path.dirname(fixture); - const style = require(path.join(directory, fixture)); + const style = require(path.join(directory, fixture)); // HM TODO: read file regularly? server.localizeURLs(style); diff --git a/test/integration/lib/localize-urls.js b/test/integration/lib/localize-urls.js index 040572cf1f..8556761144 100644 --- a/test/integration/lib/localize-urls.js +++ b/test/integration/lib/localize-urls.js @@ -1,9 +1,14 @@ -/* eslint-disable import/no-commonjs */ -const path = require('path'); -const fs = require('fs'); -const colors = require('chalk'); +import path from 'path'; +import fs from 'fs'; +import colors from 'chalk'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; -module.exports = function localizeURLs(style, port) { +const __dirname = dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); + +export default function localizeURLs(style, port) { localizeStyleURLs(style, port); if (style.metadata && style.metadata.test && style.metadata.test.operations) { style.metadata.test.operations.forEach((op) => { diff --git a/test/integration/lib/query.js b/test/integration/lib/query.js index 5485d39d07..7054aa22c2 100644 --- a/test/integration/lib/query.js +++ b/test/integration/lib/query.js @@ -1,8 +1,13 @@ -import path from 'path'; +import path, { dirname } from 'path'; import fs from 'fs'; import * as diff from 'diff'; import {PNG} from 'pngjs'; import harness from './harness'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; + +const require = createRequire(import.meta.url); +const __dirname = dirname(fileURLToPath(import.meta.url)); function deepEqual(a, b) { if (typeof a !== typeof b) diff --git a/test/integration/lib/render.js b/test/integration/lib/render.js index e2846a47c0..9b88046656 100644 --- a/test/integration/lib/render.js +++ b/test/integration/lib/render.js @@ -1,9 +1,12 @@ -import path from 'path'; +import path, {dirname} from 'path'; import fs from 'fs'; import {PNG} from 'pngjs'; import harness from './harness'; import pixelmatch from 'pixelmatch'; -import * as glob from 'glob'; +import { fileURLToPath } from 'url'; +import glob from 'glob'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); /** * Run the render test suite, compute differences to expected values (making exceptions based on @@ -36,7 +39,7 @@ import * as glob from 'glob'; * @param {renderFn} render - a function that performs the rendering * @returns {undefined} terminates the process when testing is complete */ -export function run(implementation, ignores, render) { +export default function run(implementation, ignores, render) { const options = {ignores, tests:[], shuffle:false, recycleMap:false, seed:makeHash()}; // https://stackoverflow.com/a/1349426/229714 diff --git a/test/integration/lib/server.js b/test/integration/lib/server.js index b20eea261f..bfa28bcd14 100644 --- a/test/integration/lib/server.js +++ b/test/integration/lib/server.js @@ -1,11 +1,15 @@ -/* eslint-disable import/no-commonjs */ -const path = require('path'); -const fs = require('fs'); -const st = require('st'); -const {createServer} = require('http'); -const localizeURLs = require('./localize-urls'); +import path, {dirname} from 'path'; +import fs from 'fs'; +import st from 'st'; +import {createServer} from 'http'; +import localizeURLs from './localize-urls'; +import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; -module.exports = function () { +const require = createRequire(import.meta.url); +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default function () { const port = 2900; const integrationMount = st({path: path.join(__dirname, '..')}); const mapboxGLStylesMount = st({path: path.dirname(require.resolve('mapbox-gl-styles')), url: 'mapbox-gl-styles'}); diff --git a/test/query.test.js b/test/query.test.js index 2ac5e6584a..781570cbd4 100644 --- a/test/query.test.js +++ b/test/query.test.js @@ -1,12 +1,9 @@ /* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ -require('./stub_loader'); -require('@mapbox/flow-remove-types/register'); -require = require("esm")(module, true); - -const querySuite = require('./integration/lib/query'); -const suiteImplementation = require('./suite_implementation'); -const ignores = require('./ignores.json'); +import './stub_loader'; +import querySuite from './integration/lib/query'; +import suiteImplementation from './suite_implementation'; +import ignores from './ignores.json'; let tests; diff --git a/test/render.test.js b/test/render.test.js index 3c594a37a7..95f2702bda 100644 --- a/test/render.test.js +++ b/test/render.test.js @@ -1,13 +1,11 @@ -/* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ +import './stub_loader'; +import canvas from 'canvas'; +import renderRunner from './integration/lib/render'; +import suiteImplementation from './suite_implementation'; +import ignores from './ignores.json'; -require('./stub_loader'); -require('@mapbox/flow-remove-types/register'); -const {registerFont} = require('canvas'); -require = require("esm")(module, true); +const {registerFont} = canvas; -const suite = require('./integration/lib/render'); -const suiteImplementation = require('./suite_implementation'); -const ignores = require('./ignores.json'); registerFont('./node_modules/npm-font-open-sans/fonts/Bold/OpenSans-Bold.ttf', {family: 'Open Sans', weight: 'bold'}); -suite.run('js', ignores, suiteImplementation); +renderRunner('js', ignores, suiteImplementation); diff --git a/test/stub_loader.js b/test/stub_loader.js index 0fc4534a34..75f8323e4f 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -1,12 +1,16 @@ -// Load our stubbed ajax module for the integration suite implementation -/* eslint-disable import/unambiguous, import/no-commonjs */ -const fs = require('fs'); -const assert = require('assert'); -const pirates = require('pirates'); +import fs from 'fs'; +import assert from 'assert'; +import pirates from 'pirates'; +import gl from 'gl'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { JSDOM, VirtualConsole } from "jsdom" -process.env["ESM_OPTIONS"] = '{ "cache": "node_modules/.cache/esm-stubbed"}'; +const __dirname = dirname(fileURLToPath(import.meta.url)); -pirates.addHook((code, filename) => { +// HM TODO: remove this hook and use `addProtocol` instead. +// Load our stubbed ajax module for the integration suite implementation +pirates.addHook((_, filename) => { assert(filename.endsWith('/ajax.js')); return fs.readFileSync(`${__dirname}/ajax_stubs.js`, 'utf-8'); }, { @@ -14,3 +18,76 @@ pirates.addHook((code, filename) => { matcher: filename => filename.endsWith('/ajax.js') }); +// The following is the mocking of what's needed in window and global for the tests to run. +const { window } = new JSDOM('', { + // Send jsdom console output to the node console object. + virtualConsole: new VirtualConsole().sendTo(console) +}); + +global.ImageData = window.ImageData || function () { return false; }; +global.ImageBitmap = window.ImageBitmap || function () { return false; }; +global.WebGLFramebuffer = window.WebGLFramebuffer || Object; +global.HTMLCanvasElement = function () {}; +global.HTMLElement = window.HTMLElement; +global.HTMLImageElement = window.HTMLImageElement; +global.HTMLVideoElement = window.HTMLVideoElement; +global.HTMLCanvasElement = window.HTMLCanvasElement; +global.document = window.document; +global.window = window; + +// Delete local and session storage from JSDOM and stub them out with a warning log +// Accessing these properties during extend() produces an error in Node environments +// See https://github.com/mapbox/mapbox-gl-js/pull/7455 for discussion +delete window.localStorage; +delete window.sessionStorage; +window.localStorage = window.sessionStorage = () => console.log('Local and session storage not available in Node. Use a stub implementation if needed for testing.'); + +window.devicePixelRatio = 1; + +global.requestAnimationFrame = function (callback) { + return setImmediate(callback, 0); +}; +global.cancelAnimationFrame = clearImmediate; + +// Add webgl context with the supplied GL +const originalGetContext = global.HTMLCanvasElement.prototype.getContext; +global.HTMLCanvasElement.prototype.getContext = function (type, attributes) { + if (type === 'webgl') { + if (!this._webGLContext) { + this._webGLContext = gl(this.width, this.height, attributes); + } + return this._webGLContext; + } + // Fallback to existing HTMLCanvasElement getContext behaviour + return originalGetContext.call(this, type, attributes); +}; + +// HM TODO: move this to the relevat test... +window.useFakeHTMLCanvasGetContext = function () { + this.HTMLCanvasElement.prototype.getContext = function () { return '2d'; }; +}; + +// HM TODO: move this to the relevat test... +window.useFakeXMLHttpRequest = function () { + sinon.xhr.supportsCORS = true; + this.server = sinon.fakeServer.create(); + this.XMLHttpRequest = this.server.xhr; +}; + +global.URL.revokeObjectURL = function () { }; + +window.fakeWorkerPresence = function () { + global.WorkerGlobalScope = function () { }; + global.self = new global.WorkerGlobalScope(); +}; +window.clearFakeWorkerPresence = function () { + global.WorkerGlobalScope = undefined; + global.self = undefined; +}; + + +window.performance.getEntriesByName = function () { }; +window.performance.mark = function () { }; +window.performance.measure = function () { }; +window.performance.clearMarks = function () { }; +window.performance.clearMeasures = function () { }; diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 0b33c0803d..3fd4ac0cfd 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -1,19 +1,22 @@ import {PNG} from 'pngjs'; -import Map from '../src/ui/map'; -import config from '../src/util/config'; -import window from '../src/util/window'; -import browser from '../src/util/browser'; -import {plugin as rtlTextPlugin} from '../src/source/rtl_text_plugin'; +import Map from '../rollup/build/tsc/ui/map'; +import * as rtl_text_plugin from '../rollup/build/tsc/source/rtl_text_plugin'; import rtlText from '@mapbox/mapbox-gl-rtl-text'; import fs from 'fs'; import path from 'path'; import customLayerImplementations from './integration/custom_layer_implementations'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const { plugin: rtlTextPlugin } = rtl_text_plugin; rtlTextPlugin['applyArabicShaping'] = rtlText.applyArabicShaping; rtlTextPlugin['processBidirectionalText'] = rtlText.processBidirectionalText; rtlTextPlugin['processStyledBidirectionalText'] = rtlText.processStyledBidirectionalText; -module.exports = function(style, options, _callback) { // eslint-disable-line import/no-commonjs +export default function(style, options, _callback) { let wasCallbackCalled = false; const timeout = setTimeout(() => { @@ -39,9 +42,6 @@ module.exports = function(style, options, _callback) { // eslint-disable-line im Object.defineProperty(container, 'clientWidth', {value: options.width}); Object.defineProperty(container, 'clientHeight', {value: options.height}); - // We are self-hosting test files. - config.REQUIRE_ACCESS_TOKEN = false; - const map = new Map({ container, style, @@ -60,9 +60,10 @@ module.exports = function(style, options, _callback) { // eslint-disable-line im map.repaint = true; let now = 0; - browser.now = function() { - return now; - }; + //HM TODO: do we need this? + //browser.now = function() { + // return now; + //}; if (options.debug) map.showTileBoundaries = true; if (options.showOverdrawInspector) map.showOverdrawInspector = true; From eb1ace7df34cd0ff786b7c2c2464dada73e6953e Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 30 Jul 2021 11:28:15 +0300 Subject: [PATCH 073/142] Remove unneeded window import from all files --- src/render/painter.ts | 1 - src/source/canvas_source.ts | 1 - src/ui/control/fullscreen_control.ts | 1 - src/ui/control/geolocate_control.ts | 1 - src/ui/control/navigation_control.ts | 1 - src/ui/handler_manager.ts | 1 - src/ui/hash.ts | 1 - src/ui/map.ts | 1 - src/ui/popup.ts | 1 - src/util/actor.ts | 1 - src/util/ajax.ts | 1 - src/util/browser.ts | 2 +- src/util/browser/window.ts | 5 -- src/util/debug.ts | 1 - src/util/dom.ts | 1 - src/util/mapbox.ts | 1 - src/util/performance.ts | 1 - src/util/tile_request_cache.ts | 1 - src/util/util.ts | 11 +++- src/util/webp_supported.ts | 2 - src/util/window.ts | 98 ---------------------------- 21 files changed, 11 insertions(+), 123 deletions(-) delete mode 100644 src/util/browser/window.ts delete mode 100644 src/util/window.ts diff --git a/src/render/painter.ts b/src/render/painter.ts index d330f00159..d8a7febc6a 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -1,5 +1,4 @@ import browser from '../util/browser'; -import window from '../util/window'; import {mat4, vec3} from 'gl-matrix'; import SourceCache from '../source/source_cache'; diff --git a/src/source/canvas_source.ts b/src/source/canvas_source.ts index b5cceb6d7d..7777703c2e 100644 --- a/src/source/canvas_source.ts +++ b/src/source/canvas_source.ts @@ -1,6 +1,5 @@ import ImageSource from './image_source'; -import window from '../util/window'; import rasterBoundsAttributes from '../data/raster_bounds_attributes'; import SegmentVector from '../data/segment'; import Texture from '../render/texture'; diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index 8445e6e5c3..9cbb4c6cf9 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -1,7 +1,6 @@ import DOM from '../../util/dom'; import {bindAll, warnOnce} from '../../util/util'; -import window from '../../util/window'; import type Map from '../map'; import {IControl} from './control'; diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index d791146c82..75b1a39aa4 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -1,6 +1,5 @@ import {Event, Evented} from '../../util/evented'; import DOM from '../../util/dom'; -import window from '../../util/window'; import {extend, bindAll, warnOnce} from '../../util/util'; import assert from 'assert'; import LngLat from '../../geo/lng_lat'; diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index 0f9c45a2d0..508313ff65 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -3,7 +3,6 @@ import Point from '../../symbol/point'; import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; -import window from '../../util/window'; import type Map from '../map'; import {IControl} from './control'; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 6b95397b8e..9ed9efe200 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -17,7 +17,6 @@ import DragPanHandler from './handler/shim/drag_pan'; import DragRotateHandler from './handler/shim/drag_rotate'; import TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate'; import {bindAll, extend} from '../util/util'; -import window from '../util/window'; import Point from '../symbol/point'; import assert from 'assert'; diff --git a/src/ui/hash.ts b/src/ui/hash.ts index 7f00360e5d..19ae1b9a8a 100644 --- a/src/ui/hash.ts +++ b/src/ui/hash.ts @@ -1,5 +1,4 @@ import {bindAll} from '../util/util'; -import window from '../util/window'; import throttle from '../util/throttle'; import type Map from './map'; diff --git a/src/ui/map.ts b/src/ui/map.ts index f53bb85d89..c52bb294ce 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -1,7 +1,6 @@ import {version} from '../../package.json'; import {extend, bindAll, warnOnce, uniqueId} from '../util/util'; import browser from '../util/browser'; -import window from '../util/window'; import DOM from '../util/dom'; import {getImage, getJSON, ResourceType} from '../util/ajax'; import {RequestManager} from '../util/mapbox'; diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 15ef93f14d..2895175e3c 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -4,7 +4,6 @@ import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; import Point from '../symbol/point'; -import window from '../util/window'; import smartWrap from '../util/smart_wrap'; import {anchorTranslate, applyAnchorClass} from './anchor'; diff --git a/src/util/actor.ts b/src/util/actor.ts index 74fac25ae0..43770146d0 100644 --- a/src/util/actor.ts +++ b/src/util/actor.ts @@ -1,5 +1,4 @@ import {bindAll, isWorker, isSafari} from './util'; -import window from './window'; import {serialize, deserialize} from './web_worker_transfer'; import ThrottledInvoker from './throttled_invoker'; diff --git a/src/util/ajax.ts b/src/util/ajax.ts index ec8bd95774..5aee87fc6b 100644 --- a/src/util/ajax.ts +++ b/src/util/ajax.ts @@ -1,4 +1,3 @@ -import window from './window'; import {extend, warnOnce, isWorker} from './util'; import {isMapboxHTTPURL, hasCacheDefeatingSku} from './mapbox'; import config from './config'; diff --git a/src/util/browser.ts b/src/util/browser.ts index 65ff371132..97c930abb4 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -1,4 +1,3 @@ -import window from './window'; import type {Cancelable} from '../types/cancelable'; const now = window.performance && window.performance.now ? @@ -44,6 +43,7 @@ const exported = { hardwareConcurrency: window.navigator && window.navigator.hardwareConcurrency || 4, + // HM TODO: remove this from here... get devicePixelRatio() { return window.devicePixelRatio; }, get prefersReducedMotion(): boolean { if (!window.matchMedia) return false; diff --git a/src/util/browser/window.ts b/src/util/browser/window.ts deleted file mode 100644 index 0e93f625c2..0000000000 --- a/src/util/browser/window.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* eslint-env browser */ -// import type {Window} from '../../types/window'; - -// shim window for the case of requiring the browser bundle in Node -export default typeof self !== 'undefined' ? (self as Window) : ({} as any as Window); diff --git a/src/util/debug.ts b/src/util/debug.ts index 035d2364b3..fc6f25985e 100644 --- a/src/util/debug.ts +++ b/src/util/debug.ts @@ -1,5 +1,4 @@ import {extend} from './util'; -import window from './window'; /** * This is a private namespace for utility functions that will get automatically stripped diff --git a/src/util/dom.ts b/src/util/dom.ts index 487a6483eb..d4ea69be48 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -1,6 +1,5 @@ import Point from '../symbol/point'; -import window from './window'; import assert from 'assert'; interface DOMInterface { diff --git a/src/util/mapbox.ts b/src/util/mapbox.ts index 1660fb34a1..8023b4a591 100644 --- a/src/util/mapbox.ts +++ b/src/util/mapbox.ts @@ -14,7 +14,6 @@ import config from './config'; import browser from './browser'; -import window from './window'; import webpSupported from './webp_supported'; import {createSkuToken, SKU_ID} from './sku_token'; import {version as sdkVersion} from '../../package.json'; diff --git a/src/util/performance.ts b/src/util/performance.ts index 7980303540..07aa168453 100644 --- a/src/util/performance.ts +++ b/src/util/performance.ts @@ -1,4 +1,3 @@ -import window from '../util/window'; import type {RequestParameters} from '../util/ajax'; const performance = window.performance; diff --git a/src/util/tile_request_cache.ts b/src/util/tile_request_cache.ts index 062214d5fa..495b8297ce 100644 --- a/src/util/tile_request_cache.ts +++ b/src/util/tile_request_cache.ts @@ -1,5 +1,4 @@ import {warnOnce, parseCacheControl} from './util'; -import window from './window'; import type Dispatcher from './dispatcher'; diff --git a/src/util/util.ts b/src/util/util.ts index 6842f065a1..381e11a16a 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -1,7 +1,6 @@ import UnitBezier from '@mapbox/unitbezier'; import Point from '../symbol/point'; -import window from './window'; import type {Callback} from '../types/callback'; @@ -537,3 +536,13 @@ export function b64DecodeUnicode(str: string) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); //eslint-disable-line }).join('')); } + + +const mapboxHTTPURLRe = /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i; +export function isMapboxHTTPURL(url: string): boolean { + return mapboxHTTPURLRe.test(url); +} + +export function hasCacheDefeatingSku(url: string) { + return url.indexOf('sku=') > 0 && isMapboxHTTPURL(url); +} \ No newline at end of file diff --git a/src/util/webp_supported.ts b/src/util/webp_supported.ts index a178099fc7..7e62846b2c 100755 --- a/src/util/webp_supported.ts +++ b/src/util/webp_supported.ts @@ -1,5 +1,3 @@ -import window from './window'; - const exported = { supported: false, testSupport diff --git a/src/util/window.ts b/src/util/window.ts deleted file mode 100644 index 9a6373fae6..0000000000 --- a/src/util/window.ts +++ /dev/null @@ -1,98 +0,0 @@ -// This file is intended for use in the GL-JS test suite -// It implements a JSDOM window object for use in Node environments -// In a browser environment, this file is replaced with ./src/util/browser/window.js -// when Rollup builds the main bundle -// See package.json#browser - -import jsdom from 'jsdom'; - -import gl from 'gl'; -import sinon from 'sinon'; - -const {window: _window} = new jsdom.JSDOM('', { - virtualConsole: new jsdom.VirtualConsole().sendTo(console) -}); - -restore(); - -export default _window as any as Window; - -function restore(): Window { - // Remove previous window from exported object - const previousWindow = _window; - if (previousWindow.close) previousWindow.close(); - for (const key in previousWindow) { - if (Object.prototype.hasOwnProperty.call(previousWindow, key)) { - delete previousWindow[key]; - } - } - - // Create new window and inject into exported object - const {window} = new jsdom.JSDOM('', { - // Send jsdom console output to the node console object. - virtualConsole: new jsdom.VirtualConsole().sendTo(console) - }) as any; - - // Delete local and session storage from JSDOM and stub them out with a warning log - // Accessing these properties during extend() produces an error in Node environments - // See https://github.com/mapbox/mapbox-gl-js/pull/7455 for discussion - delete window.localStorage; - delete window.sessionStorage; - window.localStorage = window.sessionStorage = () => console.log('Local and session storage not available in Node. Use a stub implementation if needed for testing.'); - - window.devicePixelRatio = 1; - - window.requestAnimationFrame = function(callback) { - return setImmediate(callback, 0); - }; - window.cancelAnimationFrame = clearImmediate; - - // Add webgl context with the supplied GL - const originalGetContext = window.HTMLCanvasElement.prototype.getContext; - window.HTMLCanvasElement.prototype.getContext = function (type, attributes) { - if (type === 'webgl') { - if (!this._webGLContext) { - this._webGLContext = gl(this.width, this.height, attributes); - } - return this._webGLContext; - } - // Fallback to existing HTMLCanvasElement getContext behaviour - return originalGetContext.call(this, type, attributes); - }; - - window.useFakeHTMLCanvasGetContext = function() { - this.HTMLCanvasElement.prototype.getContext = function() { return '2d'; }; - }; - - window.useFakeXMLHttpRequest = function() { - (sinon as any).xhr.supportsCORS = true; - this.server = sinon.fakeServer.create(); - this.XMLHttpRequest = this.server.xhr; - }; - - window.URL.revokeObjectURL = function () {}; - - window.fakeWorkerPresence = function() { - global.WorkerGlobalScope = function() {} as any; - global.self = new global.WorkerGlobalScope() as any; - }; - window.clearFakeWorkerPresence = function() { - global.WorkerGlobalScope = undefined; - global.self = undefined; - }; - - window.restore = restore; - - window.performance.getEntriesByName = function() {}; - window.performance.mark = function() {}; - window.performance.measure = function() {}; - window.performance.clearMarks = function() {}; - window.performance.clearMeasures = function() {}; - - window.ImageData = window.ImageData || function() { return false; }; - window.ImageBitmap = window.ImageBitmap || function() { return false; }; - window.WebGLFramebuffer = window.WebGLFramebuffer || Object; - Object.assign(_window, window); // eslint-disable-line no-restricted-properties - - return window as Window; -} From 056a39635e8931388873008c23f7536d7ca670ce Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 30 Jul 2021 11:52:04 +0300 Subject: [PATCH 074/142] Remove version from API --- src/index.ts | 2 -- src/ui/map.ts | 12 ------------ src/util/mapbox.ts | 2 -- test/stub_loader.js | 1 + 4 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/index.ts b/src/index.ts index 7bbe474aac..6ef2d6e56a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,6 @@ import assert from 'assert'; import supported from '@mapbox/mapbox-gl-supported'; -import {version} from '../package.json'; import Map from './ui/map'; import NavigationControl from './ui/control/navigation_control'; import GeolocateControl from './ui/control/geolocate_control'; @@ -28,7 +27,6 @@ import type {RequestParameters, ResponseCallback} from './util/ajax'; import type {Cancelable} from './types/cancelable'; const exported = { - version, supported, setRTLTextPlugin, getRTLTextPluginStatus, diff --git a/src/ui/map.ts b/src/ui/map.ts index c52bb294ce..2dfca80fcc 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -1,4 +1,3 @@ -import {version} from '../../package.json'; import {extend, bindAll, warnOnce, uniqueId} from '../util/util'; import browser from '../util/browser'; import DOM from '../util/dom'; @@ -2787,17 +2786,6 @@ class Map extends Camera { _setCacheLimits(limit: number, checkThreshold: number) { setCacheLimits(limit, checkThreshold); } - - /** - * The version of Mapbox GL JS in use as specified in package.json, CHANGELOG.md, and the GitHub release. - * - * @name version - * @instance - * @memberof Map - * @var {string} version - */ - - get version(): string { return version; } } export default Map; diff --git a/src/util/mapbox.ts b/src/util/mapbox.ts index 8023b4a591..2b74879a12 100644 --- a/src/util/mapbox.ts +++ b/src/util/mapbox.ts @@ -16,7 +16,6 @@ import config from './config'; import browser from './browser'; import webpSupported from './webp_supported'; import {createSkuToken, SKU_ID} from './sku_token'; -import {version as sdkVersion} from '../../package.json'; import {uuid, validateUuid, storageAvailable, b64DecodeUnicode, b64EncodeUnicode, warnOnce, extend} from './util'; import {postData, IResourceType} from './ajax'; @@ -349,7 +348,6 @@ class TelemetryEvent { event: this.type, created: new Date(timestamp).toISOString(), sdkIdentifier: 'mapbox-gl-js', - sdkVersion, skuId: SKU_ID, userId: this.anonId }; diff --git a/test/stub_loader.js b/test/stub_loader.js index 75f8323e4f..00c1d6cbe0 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -32,6 +32,7 @@ global.HTMLElement = window.HTMLElement; global.HTMLImageElement = window.HTMLImageElement; global.HTMLVideoElement = window.HTMLVideoElement; global.HTMLCanvasElement = window.HTMLCanvasElement; +global.fetch = window.fetch; global.document = window.document; global.window = window; From a875ae6e15677b0015b3ba701661fd3ede78c7be Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 30 Jul 2021 15:01:33 +0300 Subject: [PATCH 075/142] More mock fixes to be able to run tests --- test/ajax_stubs.js | 16 +------- test/integration/lib/localize-urls.js | 10 ++--- test/stub_loader.js | 34 ++++++++-------- test/suite_implementation.js | 58 ++++++++++++++++++++++++++- 4 files changed, 81 insertions(+), 37 deletions(-) diff --git a/test/ajax_stubs.js b/test/ajax_stubs.js index ab9c4fca1a..b0ea45b4a2 100644 --- a/test/ajax_stubs.js +++ b/test/ajax_stubs.js @@ -1,11 +1,10 @@ import {PNG} from 'pngjs'; import request from 'request'; -// we're using a require hook to load this file instead of src/util/ajax.js, -// so we import browser module as if it were in an adjacent file -import browser from './browser'; // eslint-disable-line import/no-unresolved const cache = {}; +// HM TODO: remove this file when it is no longer needed. + /** * The type of a resource. * @private @@ -94,17 +93,6 @@ export const getImage = function({url}, callback) { }); }; -browser.getImageData = function({width, height, data}, padding = 0) { - const source = new Uint8Array(data); - const dest = new Uint8Array((2 * padding + width) * (2 * padding + height) * 4); - - const offset = (2 * padding + width) * padding + padding; - for (let i = 0; i < height; i++) { - dest.set(source.slice(i * width * 4, (i + 1) * width * 4), 4 * (offset + (width + 2 * padding) * i)); - } - return {width: width + 2 * padding, height: height + 2 * padding, data: dest}; -}; - // Hack: since node doesn't have any good video codec modules, just grab a png with // the first frame and fake the video API. export const getVideo = function(urls, callback) { diff --git a/test/integration/lib/localize-urls.js b/test/integration/lib/localize-urls.js index 8556761144..39a6fcb018 100644 --- a/test/integration/lib/localize-urls.js +++ b/test/integration/lib/localize-urls.js @@ -50,23 +50,23 @@ export default function localizeURLs(style, port) { }; function localizeURL(url, port) { - return url.replace(/^local:\/\//, `http://localhost:${port}/`); + return url.replace(/^local:\/\//, `test://localhost:${port}/`); } function localizeMapboxSpriteURL(url, port) { - return url.replace(/^mapbox:\/\//, `http://localhost:${port}/`); + return url.replace(/^mapbox:\/\//, `test://localhost:${port}/`); } function localizeMapboxFontsURL(url, port) { - return url.replace(/^mapbox:\/\/fonts/, `http://localhost:${port}/glyphs`); + return url.replace(/^mapbox:\/\/fonts/, `test://localhost:${port}/glyphs`); } function localizeMapboxTilesURL(url, port) { - return url.replace(/^mapbox:\/\//, `http://localhost:${port}/tiles/`); + return url.replace(/^mapbox:\/\//, `test://localhost:${port}/tiles/`); } function localizeMapboxTilesetURL(url, port) { - return url.replace(/^mapbox:\/\//, `http://localhost:${port}/tilesets/`); + return url.replace(/^mapbox:\/\//, `test://localhost:${port}/tilesets/`); } function localizeSourceURLs(source, port) { diff --git a/test/stub_loader.js b/test/stub_loader.js index 00c1d6cbe0..22f1ddb3d7 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -1,22 +1,6 @@ -import fs from 'fs'; -import assert from 'assert'; -import pirates from 'pirates'; import gl from 'gl'; -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; import { JSDOM, VirtualConsole } from "jsdom" -const __dirname = dirname(fileURLToPath(import.meta.url)); - -// HM TODO: remove this hook and use `addProtocol` instead. -// Load our stubbed ajax module for the integration suite implementation -pirates.addHook((_, filename) => { - assert(filename.endsWith('/ajax.js')); - return fs.readFileSync(`${__dirname}/ajax_stubs.js`, 'utf-8'); -}, { - exts: ['.js'], - matcher: filename => filename.endsWith('/ajax.js') -}); // The following is the mocking of what's needed in window and global for the tests to run. const { window } = new JSDOM('', { @@ -32,6 +16,10 @@ global.HTMLElement = window.HTMLElement; global.HTMLImageElement = window.HTMLImageElement; global.HTMLVideoElement = window.HTMLVideoElement; global.HTMLCanvasElement = window.HTMLCanvasElement; +global.OffscreenCanvas = window.OffscreenCanvas; +global.Image = window.Image; +global.Blob = window.Blob; +global.URL = window.URL; global.fetch = window.fetch; global.document = window.document; global.window = window; @@ -75,6 +63,7 @@ window.useFakeXMLHttpRequest = function () { this.XMLHttpRequest = this.server.xhr; }; +global.URL.createObjectURL = () => 'blob:'; global.URL.revokeObjectURL = function () { }; window.fakeWorkerPresence = function () { @@ -92,3 +81,16 @@ window.performance.mark = function () { }; window.performance.measure = function () { }; window.performance.clearMarks = function () { }; window.performance.clearMeasures = function () { }; + +// HM TODO: accurate this to context and stuff +global.getImageData = function({width, height, data}, padding = 0) { + const source = new Uint8Array(data); + const dest = new Uint8Array((2 * padding + width) * (2 * padding + height) * 4); + + const offset = (2 * padding + width) * padding + padding; + for (let i = 0; i < height; i++) { + dest.set(source.slice(i * width * 4, (i + 1) * width * 4), 4 * (offset + (width + 2 * padding) * i)); + } + return {width: width + 2 * padding, height: height + 2 * padding, data: dest}; +}; + diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 3fd4ac0cfd..ea6dbafde8 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -1,5 +1,6 @@ import {PNG} from 'pngjs'; -import Map from '../rollup/build/tsc/ui/map'; +import request from 'request'; +import maplibregl from '../rollup/build/tsc/index'; import * as rtl_text_plugin from '../rollup/build/tsc/source/rtl_text_plugin'; import rtlText from '@mapbox/mapbox-gl-rtl-text'; import fs from 'fs'; @@ -8,6 +9,13 @@ import customLayerImplementations from './integration/custom_layer_implementatio import { dirname } from 'path'; import { fileURLToPath } from 'url'; +const cache = {}; +function cached(data, callback) { + setImmediate(() => { + callback(null, data); + }); +} + const __dirname = dirname(fileURLToPath(import.meta.url)); const { plugin: rtlTextPlugin } = rtl_text_plugin; @@ -33,6 +41,10 @@ export default function(style, options, _callback) { window.devicePixelRatio = options.pixelRatio; + maplibregl.addProtocol('test', (req, callback) => { + handleProtocolRequest(req, callback); + }) + if (options.addFakeCanvas) { const fakeCanvas = createFakeCanvas(window.document, options.addFakeCanvas.id, options.addFakeCanvas.image); window.document.body.appendChild(fakeCanvas); @@ -42,7 +54,7 @@ export default function(style, options, _callback) { Object.defineProperty(container, 'clientWidth', {value: options.width}); Object.defineProperty(container, 'clientHeight', {value: options.height}); - const map = new Map({ + const map = new maplibregl.Map({ container, style, classes: options.classes, @@ -201,3 +213,45 @@ function updateFakeCanvas(document, id, imagePath) { const image = PNG.sync.read(fs.readFileSync(path.join(__dirname, './integration', imagePath))); fakeCanvas.data = image.data; } + +function handleProtocolRequest(req, callback) { + const getJSON = function({url}, callback) { + if (cache[url]) return cached(cache[url], callback); + return request(url, (error, response, body) => { + if (!error && response.statusCode >= 200 && response.statusCode < 300) { + let data; + try { + data = JSON.parse(body); + } catch (err) { + return callback(err); + } + cache[url] = data; + callback(null, data); + } else { + callback(error || new Error(response.statusCode)); + } + }); + }; + + const getArrayBuffer = function({url}, callback) { + if (cache[url]) return cached(cache[url], callback); + return request({url, encoding: null}, (error, response, body) => { + if (!error && response.statusCode >= 200 && response.statusCode < 300) { + cache[url] = body; + callback(null, body); + } else { + if (!error) error = {status: +response.statusCode}; + callback(error); + } + }); + }; + + req.url = req.url.replace('test', 'http') + if (req.url.endsWith('json')) { + getJSON(req, callback); + } else if (req.url.endsWith('png')) { + getArrayBuffer(req, callback); + } else { + getArrayBuffer(req, callback) + } +} From 63e17ce7d201d597b800b358c40ae6973f531aa0 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sat, 31 Jul 2021 22:48:10 +0900 Subject: [PATCH 076/142] fix running of test-expression (#232) --- package.json | 2 +- test/expression.test.js | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 3af989954a..3a58fb80c1 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,7 @@ "test-query-node": "node test/query.test.js", "watch-query": "testem -f test/integration/testem.js", "test-query": "testem ci -f test/integration/testem.js -R xunit > test/integration/query-tests/test-results.xml", - "test-expressions": "cross-env build/run-node test/expression.test.js", + "test-expressions": "node --experimental-specifier-resolution=node test/expression.test.js", "test-cov": "nyc --reporter=text-summary --reporter=lcov --cache run-s test-unit test-expressions test-query test-render", "prepublishOnly": "run-s prepare-publish build-dev build-prod-min build-prod build-csp build-css build-style-spec test-build diff-tarball", "print-release-url": "node build/print-release-url.js", diff --git a/test/expression.test.js b/test/expression.test.js index d58cc48097..3f89c02db0 100644 --- a/test/expression.test.js +++ b/test/expression.test.js @@ -1,11 +1,13 @@ +import {fileURLToPath} from 'url'; + import {run} from './integration/lib/expression'; -import {createPropertyExpression} from '../src/style-spec/expression'; -import {isFunction} from '../src/style-spec/function'; -import convertFunction from '../src/style-spec/function/convert'; -import {toString} from '../src/style-spec/expression/types'; +import {createPropertyExpression} from '../rollup/build/tsc/style-spec/expression'; +import {isFunction} from '../rollup/build/tsc/style-spec/function'; +import convertFunction from '../rollup/build/tsc/style-spec/function/convert'; +import {toString} from '../rollup/build/tsc/style-spec/expression/types'; import ignores from './ignores.json'; -import {CanonicalTileID} from '../src/source/tile_id'; -import MercatorCoordinate from '../src/geo/mercator_coordinate'; +import {CanonicalTileID} from '../rollup/build/tsc/source/tile_id'; +import MercatorCoordinate from '../rollup/build/tsc/geo/mercator_coordinate'; function getPoint(coord, canonical) { const p = canonical.getTilePoint(MercatorCoordinate.fromLngLat({lng: coord[0], lat: coord[1]}, 0)); @@ -69,6 +71,8 @@ function getGeometry(feature, geometry, canonical) { let tests; +const __filename = fileURLToPath(import.meta.url); + if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2); } From a68ea80b332be3c36fca0ddf6273c08eb0f132a8 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 31 Jul 2021 17:03:23 +0300 Subject: [PATCH 077/142] Add build phase before running some of the tests --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5db29aa697..77d4ac7bc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,6 +90,7 @@ jobs: node-version: 14 architecture: x64 - run: npm ci + - run: npm run build-dev - run: npm run test-query - uses: actions/upload-artifact@v2 with: @@ -111,6 +112,7 @@ jobs: node-version: 14 architecture: x64 - run: npm ci + - run: npm run build-dev - run: npm run test-expressions test-browser: From 8e44d82650debd27d14efed641f78146a4fa1daa Mon Sep 17 00:00:00 2001 From: HarelM Date: Sat, 31 Jul 2021 17:10:26 +0300 Subject: [PATCH 078/142] Fix tests get stuck, still tests are failing... --- test/stub_loader.js | 47 +++++++++++++++++++++++------------- test/suite_implementation.js | 15 +++++++++++- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/test/stub_loader.js b/test/stub_loader.js index 22f1ddb3d7..1153b2d47c 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -1,6 +1,8 @@ import gl from 'gl'; -import { JSDOM, VirtualConsole } from "jsdom" +import { JSDOM, VirtualConsole } from "jsdom"; +import { PNG } from 'pngjs'; +let lastDataFroUrl = null; // The following is the mocking of what's needed in window and global for the tests to run. const { window } = new JSDOM('', { @@ -11,13 +13,31 @@ const { window } = new JSDOM('', { global.ImageData = window.ImageData || function () { return false; }; global.ImageBitmap = window.ImageBitmap || function () { return false; }; global.WebGLFramebuffer = window.WebGLFramebuffer || Object; -global.HTMLCanvasElement = function () {}; +global.HTMLCanvasElement = function () { }; global.HTMLElement = window.HTMLElement; global.HTMLImageElement = window.HTMLImageElement; global.HTMLVideoElement = window.HTMLVideoElement; global.HTMLCanvasElement = window.HTMLCanvasElement; global.OffscreenCanvas = window.OffscreenCanvas; global.Image = window.Image; +// stubbing image load as it is not implemented in jsdom +Object.defineProperty(global.Image.prototype, 'src', { + set(src) { + if (lastDataFroUrl) { + const reader = new window.FileReader(); + reader.onload = (_) => { + const dataUrl = reader.result; + new PNG().parse(dataUrl, (err, png) => { + this.data = png.data; + this.height = png.height; + this.width = png.width; + setTimeout(() => this.onload()); + }); + } + reader.readAsArrayBuffer(lastDataFroUrl); + } + } +}); global.Blob = window.Blob; global.URL = window.URL; global.fetch = window.fetch; @@ -33,7 +53,7 @@ window.localStorage = window.sessionStorage = () => console.log('Local and sessi window.devicePixelRatio = 1; -global.requestAnimationFrame = function (callback) { +global.requestAnimationFrame = window.requestAnimationFrame = function (callback) { return setImmediate(callback, 0); }; global.cancelAnimationFrame = clearImmediate; @@ -63,8 +83,13 @@ window.useFakeXMLHttpRequest = function () { this.XMLHttpRequest = this.server.xhr; }; -global.URL.createObjectURL = () => 'blob:'; -global.URL.revokeObjectURL = function () { }; +global.URL.createObjectURL = (blob) => { + lastDataFroUrl = blob; + return 'blob:'; +} +global.URL.revokeObjectURL = function () { + lastDataFroUrl = null; +}; window.fakeWorkerPresence = function () { global.WorkerGlobalScope = function () { }; @@ -82,15 +107,3 @@ window.performance.measure = function () { }; window.performance.clearMarks = function () { }; window.performance.clearMeasures = function () { }; -// HM TODO: accurate this to context and stuff -global.getImageData = function({width, height, data}, padding = 0) { - const source = new Uint8Array(data); - const dest = new Uint8Array((2 * padding + width) * (2 * padding + height) * 4); - - const offset = (2 * padding + width) * padding + padding; - for (let i = 0; i < height; i++) { - dest.set(source.slice(i * width * 4, (i + 1) * width * 4), 4 * (offset + (width + 2 * padding) * i)); - } - return {width: width + 2 * padding, height: height + 2 * padding, data: dest}; -}; - diff --git a/test/suite_implementation.js b/test/suite_implementation.js index ea6dbafde8..899ab8f676 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -1,6 +1,7 @@ import {PNG} from 'pngjs'; import request from 'request'; import maplibregl from '../rollup/build/tsc/index'; +import browser from '../rollup/build/tsc/util/browser'; import * as rtl_text_plugin from '../rollup/build/tsc/source/rtl_text_plugin'; import rtlText from '@mapbox/mapbox-gl-rtl-text'; import fs from 'fs'; @@ -24,6 +25,18 @@ rtlTextPlugin['applyArabicShaping'] = rtlText.applyArabicShaping; rtlTextPlugin['processBidirectionalText'] = rtlText.processBidirectionalText; rtlTextPlugin['processStyledBidirectionalText'] = rtlText.processStyledBidirectionalText; +// replacing the browser method of get image in order to avoid usage of context and canvas 2d with Image object... +browser.getImageData = function({width, height, data}, padding = 0) { + const source = new Uint8Array(data); + const dest = new Uint8Array((2 * padding + width) * (2 * padding + height) * 4); + + const offset = (2 * padding + width) * padding + padding; + for (let i = 0; i < height; i++) { + dest.set(source.slice(i * width * 4, (i + 1) * width * 4), 4 * (offset + (width + 2 * padding) * i)); + } + return {width: width + 2 * padding, height: height + 2 * padding, data: dest}; +}; + export default function(style, options, _callback) { let wasCallbackCalled = false; @@ -254,4 +267,4 @@ function handleProtocolRequest(req, callback) { } else { getArrayBuffer(req, callback) } -} +} \ No newline at end of file From e0c7f894ba4b5b32fbd25f52ef5a07680fe5de67 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Sun, 1 Aug 2021 02:51:28 +0900 Subject: [PATCH 079/142] get node query tests running (#233) --- package.json | 2 +- test/query.test.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3a58fb80c1..1ab11f0c96 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,7 @@ "test-build": "cross-env build/run-tap --no-coverage test/build/**/*.test.js", "test-browser": "cross-env build/run-tap --reporter spec --no-coverage test/browser/**/*.test.js", "test-render": "node --experimental-specifier-resolution=node --experimental-json-modules --max-old-space-size=2048 test/render.test.js", - "test-query-node": "node test/query.test.js", + "test-query-node": "node --experimental-specifier-resolution=node --experimental-json-modules test/query.test.js", "watch-query": "testem -f test/integration/testem.js", "test-query": "testem ci -f test/integration/testem.js -R xunit > test/integration/query-tests/test-results.xml", "test-expressions": "node --experimental-specifier-resolution=node test/expression.test.js", diff --git a/test/query.test.js b/test/query.test.js index 781570cbd4..4b240b5138 100644 --- a/test/query.test.js +++ b/test/query.test.js @@ -1,12 +1,15 @@ /* eslint-disable import/unambiguous, import/no-commonjs, no-global-assign */ import './stub_loader'; -import querySuite from './integration/lib/query'; +import * as querySuite from './integration/lib/query'; import suiteImplementation from './suite_implementation'; import ignores from './ignores.json'; +import {fileURLToPath} from 'url'; let tests; +const __filename = fileURLToPath(import.meta.url); + if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2); } From 70938ed3bd5103a301d126541e8c528fc0aaac80 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 1 Aug 2021 00:24:52 +0300 Subject: [PATCH 080/142] Fix mocking of case of tilejson implementation. --- test/suite_implementation.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 899ab8f676..7476c08b8d 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -234,6 +234,7 @@ function handleProtocolRequest(req, callback) { if (!error && response.statusCode >= 200 && response.statusCode < 300) { let data; try { + body = body.replace('http', 'test'); data = JSON.parse(body); } catch (err) { return callback(err); @@ -259,11 +260,9 @@ function handleProtocolRequest(req, callback) { }); }; - req.url = req.url.replace('test', 'http') - if (req.url.endsWith('json')) { + req.url = req.url.replace('test', 'http'); + if (req.type === 'json') { getJSON(req, callback); - } else if (req.url.endsWith('png')) { - getArrayBuffer(req, callback); } else { getArrayBuffer(req, callback) } From 3a1c78865d7248e399a570d4f00bc526ab96b75d Mon Sep 17 00:00:00 2001 From: Harel M Date: Tue, 3 Aug 2021 12:37:45 +0300 Subject: [PATCH 081/142] Typescript: Fix unit-tests (#235) * Move all referneces in unit test to use the build output * Fixes to window related stuff in unit tests, fixes to unneeded requires. * Fix to dem data test * Fix tests - remove window restore, fix __dirname. * Fix stub_loader due to function this usage. * Fix more tests * Fix tests and code that causes tests to fail. * Fix usage of ajax.js by subbing it correctly * Added missing window element to tests * removing window in 2 places gains 1601 passing (#236) * Adding missing windows to tests * Fix tests, revert some changes from typescript migration * More fixes related to removal of window * remove warnings, fix attribution test * Fix more tests * Fix more tests * Added missing stubs * Fixed tests related to version removal * More test fixes related to file path * Typescript: unit tests Frustum issues (#238) * fix minor file errors in stub_loader.js * matrix tests pass but not sure the tests represent actual usage * Fix primitive tests with minimal usage of "bad" types * Minor fixes to reduce incorrect typings * Fix image load for image source and style tests * Fix tests, added missing stub_loader * Fix uuid incorrect implemetation * Fix ajax tests. imporved image mock * Fix camera tests * Revert changes related to incorrect typescript solution Co-authored-by: James Hamilton --- .github/workflows/ci.yml | 1 + build/run-tap | 8 -- package.json | 3 +- src/data/array_types.ts | 88 +++++++++---------- src/geo/lng_lat_bounds.ts | 2 +- src/geo/transform.ts | 13 ++- src/ui/handler_manager.ts | 18 ++-- src/ui/map.ts | 22 +++-- src/util/primitives.ts | 31 ++++--- src/util/struct_array.ts | 6 +- src/util/util.ts | 3 +- test/README.md | 10 +-- test/stub_loader.js | 82 +++++++++++------ test/unit/changelog.js | 17 ---- test/unit/data/dem_data.test.js | 7 +- test/unit/data/feature_position_map.test.js | 5 +- test/unit/data/fill_bucket.test.js | 13 ++- test/unit/data/line_bucket.test.js | 12 ++- test/unit/data/load_geometry.test.js | 5 +- test/unit/data/symbol_bucket.test.js | 22 +++-- test/unit/data/vertex_buffer.test.js | 13 +-- test/unit/geo/edge_insets.test.js | 2 +- test/unit/geo/lng_lat.test.js | 2 +- test/unit/geo/lng_lat_bounds.test.js | 4 +- test/unit/geo/mercator_coordinate.test.js | 4 +- test/unit/geo/transform.test.js | 8 +- test/unit/gl/state.test.js | 8 +- test/unit/{mapbox-gl.js => mapbox-gl.test.js} | 8 +- test/unit/render/glyph_manager.test.js | 5 +- test/unit/render/line_atlas.test.js | 2 +- test/unit/render/uniform_binding.test.js | 2 +- test/unit/shaders/encode_attribute.test.js | 2 +- test/unit/source/canvas_source.test.js | 14 ++- test/unit/source/geojson_source.test.js | 13 +-- .../unit/source/geojson_worker_source.test.js | 9 +- test/unit/source/geojson_wrapper.test.js | 2 +- test/unit/source/image_source.test.js | 26 ++---- test/unit/source/query_features.test.js | 7 +- .../source/raster_dem_tile_source.test.js | 10 +-- .../raster_dem_tile_worker_source.test.js | 7 +- test/unit/source/raster_tile_source.test.js | 10 +-- test/unit/source/source_cache.test.js | 21 ++--- test/unit/source/tile.test.js | 18 ++-- test/unit/source/tile_cache.test.js | 4 +- test/unit/source/tile_id.test.js | 4 +- test/unit/source/vector_tile_source.test.js | 23 ++--- .../source/vector_tile_worker_source.test.js | 14 ++- test/unit/source/video_source.test.js | 6 +- test/unit/source/worker.test.js | 6 +- test/unit/source/worker_tile.test.js | 9 +- .../style-spec/{color.js => color.test.js} | 2 +- test/unit/style-spec/composite.test.js | 2 +- test/unit/style-spec/declass.test.js | 2 +- test/unit/style-spec/deref.test.js | 2 +- test/unit/style-spec/diff.test.js | 2 +- test/unit/style-spec/empty.test.js | 4 +- test/unit/style-spec/expression.test.js | 6 +- test/unit/style-spec/feature_filter.test.js | 10 +-- test/unit/style-spec/format.test.js | 2 +- test/unit/style-spec/function.test.js | 6 +- test/unit/style-spec/group_by_layout.test.js | 2 +- test/unit/style-spec/interpolate.test.js | 4 +- test/unit/style-spec/migrate.test.js | 15 ++-- test/unit/style-spec/migrate/v8.js | 2 +- test/unit/style-spec/migrate/v9.js | 2 +- test/unit/style-spec/spec.test.js | 2 +- test/unit/style-spec/stops.test.js | 2 +- .../unit/style-spec/util/color_spaces.test.js | 4 +- test/unit/style-spec/validate.test.js | 7 +- .../style/format_section_override.test.js | 11 +-- test/unit/style/light.test.js | 9 +- test/unit/style/load_glyph_range.test.js | 15 ++-- test/unit/style/style.test.js | 49 +++++------ test/unit/style/style_layer.test.js | 9 +- ....js => fill_extrusion_style_layer.test.js} | 5 +- test/unit/style/style_layer_index.test.js | 5 +- test/unit/symbol/anchor.test.js | 2 +- test/unit/symbol/check_max_angle.test.js | 6 +- test/unit/symbol/clip_line.test.js | 4 +- ...n_feature.js => collision_feature.test.js} | 8 +- ...dex.js => cross_tile_symbol_index.test.js} | 4 +- test/unit/symbol/get_anchors.test.js | 4 +- test/unit/symbol/grid_index.test.js | 2 +- test/unit/symbol/mergelines.test.js | 4 +- test/unit/symbol/path_interpolator.test.js | 4 +- test/unit/symbol/quads.test.js | 3 +- test/unit/symbol/shaping.test.js | 15 ++-- test/unit/symbol/symbol_style_layer.test.js | 7 +- test/unit/ui/camera.test.js | 9 +- test/unit/ui/control/attribution.test.js | 5 +- test/unit/ui/control/fullscreen.test.js | 4 +- test/unit/ui/control/geolocate.test.js | 13 +-- test/unit/ui/control/logo.test.js | 2 +- test/unit/ui/control/scale.test.js | 2 +- test/unit/ui/handler/box_zoom.test.js | 6 +- test/unit/ui/handler/dblclick_zoom.test.js | 6 +- test/unit/ui/handler/drag_pan.test.js | 6 +- test/unit/ui/handler/drag_rotate.test.js | 10 +-- test/unit/ui/handler/keyboard.test.js | 8 +- test/unit/ui/handler/map_event.test.js | 6 +- test/unit/ui/handler/mouse_rotate.test.js | 10 +-- test/unit/ui/handler/scroll_zoom.test.js | 8 +- .../unit/ui/handler/touch_zoom_rotate.test.js | 8 +- test/unit/ui/hash.test.js | 4 +- test/unit/ui/map.test.js | 16 ++-- test/unit/ui/map/isMoving.test.js | 8 +- test/unit/ui/map/isRotating.test.js | 8 +- test/unit/ui/map/isZooming.test.js | 8 +- test/unit/ui/map/requestRenderFrame.test.js | 1 + test/unit/ui/marker.test.js | 10 +-- test/unit/ui/popup.test.js | 8 +- test/unit/util/actor.test.js | 5 +- test/unit/util/ajax.test.js | 39 ++------ test/unit/util/browser.test.js | 3 +- test/unit/util/classify_rings.test.js | 5 +- test/unit/util/color_ramp.test.js | 4 +- test/unit/util/dispatcher.test.js | 7 +- test/unit/util/evented.test.js | 2 +- .../util/find_pole_of_inaccessibility.test.js | 4 +- test/unit/util/mapbox.test.js | 23 ++--- test/unit/util/primitives.test.js | 13 +-- test/unit/util/resolve_tokens.test.js | 2 +- test/unit/util/sku_token.test.js | 2 +- test/unit/util/struct_array.test.js | 2 +- test/unit/util/task_queue.test.js | 2 +- test/unit/util/throttle.test.js | 2 +- test/unit/util/tile_request_cache.test.js | 6 +- test/unit/util/util.test.js | 6 +- test/unit/util/web_worker_transfer.test.js | 27 +++--- test/unit/util/worker_pool.test.js | 3 +- test/util/create_symbol_layer.js | 6 +- test/util/index.js | 6 +- test/util/test.js | 49 ++++++----- 133 files changed, 631 insertions(+), 628 deletions(-) delete mode 100755 build/run-tap delete mode 100644 test/unit/changelog.js rename test/unit/{mapbox-gl.js => mapbox-gl.test.js} (61%) rename test/unit/style-spec/{color.js => color.test.js} (90%) rename test/unit/style/style_layer/{fill_extrusion_style_layer.js => fill_extrusion_style_layer.test.js} (85%) rename test/unit/symbol/{collision_feature.js => collision_feature.test.js} (90%) rename test/unit/symbol/{cross_tile_symbol_index.js => cross_tile_symbol_index.test.js} (98%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77d4ac7bc0..60f71ddd12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,6 +76,7 @@ jobs: node-version: 14 architecture: x64 - run: npm ci + - run: npm build-dev # see: https://github.com/stackgl/headless-gl#how-can-headless-gl-be-used-on-a-headless-linux-machine - run: xvfb-run -s "-ac -screen 0 1280x1024x24" npm run test-unit diff --git a/build/run-tap b/build/run-tap deleted file mode 100755 index e5b300cfed..0000000000 --- a/build/run-tap +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -if [ "$#" == 5 ]; then - arg="${@:1:3} ${4}/${5}" -else - arg="${@}" -fi - -node_modules/.bin/tap --node-arg -r --node-arg @mapbox/flow-remove-types/register --node-arg -r --node-arg esm $arg --node-arg diff --git a/package.json b/package.json index 1ab11f0c96..37d41c0adf 100644 --- a/package.json +++ b/package.json @@ -192,7 +192,8 @@ "test": "run-s lint lint-css lint-docs test-unit", "test-suite": "run-s test-render test-query test-expressions", "test-suite-clean": "find test/integration/{render,query, expressions}-tests -mindepth 2 -type d -exec test -e \"{}/actual.png\" \\; -not \\( -exec test -e \"{}/style.json\" \\; \\) -print | xargs -t rm -r", - "test-unit": "cross-env build/run-tap --reporter classic --no-coverage test/unit", + "test-unit": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage test/unit", + "test-unit-file": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage ", "test-build": "cross-env build/run-tap --no-coverage test/build/**/*.test.js", "test-browser": "cross-env build/run-tap --reporter spec --no-coverage test/browser/**/*.test.js", "test-render": "node --experimental-specifier-resolution=node --experimental-json-modules --max-old-space-size=2048 test/render.test.js", diff --git a/src/data/array_types.ts b/src/data/array_types.ts index 37646083c7..af670b639f 100644 --- a/src/data/array_types.ts +++ b/src/data/array_types.ts @@ -19,13 +19,13 @@ class StructArrayLayout2i4 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number) => { + public emplaceBack(v0: number, v1: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - public emplace = (i: number, v0: number, v1: number) => { + public emplace(i: number, v0: number, v1: number) { const o2 = i * 2; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -51,13 +51,13 @@ class StructArrayLayout4i8 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number) { const o2 = i * 4; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -86,13 +86,13 @@ class StructArrayLayout2i4i12 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const o2 = i * 6; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -123,13 +123,13 @@ class StructArrayLayout2i4ub8 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const o2 = i * 4; const o1 = i * 8; this.int16[o2 + 0] = v0; @@ -160,13 +160,13 @@ class StructArrayLayout2f8 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number) => { + public emplaceBack(v0: number, v1: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - public emplace = (i: number, v0: number, v1: number) => { + public emplace(i: number, v0: number, v1: number) { const o4 = i * 2; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; @@ -192,13 +192,13 @@ class StructArrayLayout10ui20 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number) { const o2 = i * 10; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -236,13 +236,13 @@ class StructArrayLayout4i4ui4i24 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number) { const o2 = i * 12; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -278,13 +278,13 @@ class StructArrayLayout3f12 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number) => { + public emplaceBack(v0: number, v1: number, v2: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - public emplace = (i: number, v0: number, v1: number, v2: number) => { + public emplace(i: number, v0: number, v1: number, v2: number) { const o4 = i * 3; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; @@ -311,13 +311,13 @@ class StructArrayLayout1ul4 extends StructArray { this.uint32 = new Uint32Array(this.arrayBuffer); } - public emplaceBack = (v0: number) => { + public emplaceBack(v0: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - public emplace = (i: number, v0: number) => { + public emplace(i: number, v0: number) { const o4 = i * 1; this.uint32[o4 + 0] = v0; return i; @@ -348,13 +348,13 @@ class StructArrayLayout6i1ul2ui20 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number) { const o2 = i * 10; const o4 = i * 5; this.int16[o2 + 0] = v0; @@ -390,13 +390,13 @@ class StructArrayLayout2i2i2i12 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number) { const o2 = i * 6; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -430,13 +430,13 @@ class StructArrayLayout2f1f2i16 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number) { const o4 = i * 4; const o2 = i * 8; this.float32[o4 + 0] = v0; @@ -467,13 +467,13 @@ class StructArrayLayout2ub2f12 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number) { const o1 = i * 12; const o4 = i * 3; this.uint8[o1 + 0] = v0; @@ -502,13 +502,13 @@ class StructArrayLayout3ui6 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number) => { + public emplaceBack(v0: number, v1: number, v2: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - public emplace = (i: number, v0: number, v1: number, v2: number) => { + public emplace(i: number, v0: number, v1: number, v2: number) { const o2 = i * 3; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -548,13 +548,13 @@ class StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number) { const o2 = i * 24; const o4 = i * 12; const o1 = i * 48; @@ -606,13 +606,13 @@ class StructArrayLayout8i15ui1ul4f68 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number) { const o2 = i * 34; const o4 = i * 17; this.int16[o2 + 0] = v0; @@ -665,13 +665,13 @@ class StructArrayLayout1f4 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number) => { + public emplaceBack(v0: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - public emplace = (i: number, v0: number) => { + public emplace(i: number, v0: number) { const o4 = i * 1; this.float32[o4 + 0] = v0; return i; @@ -696,13 +696,13 @@ class StructArrayLayout3i6 extends StructArray { this.int16 = new Int16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number) => { + public emplaceBack(v0: number, v1: number, v2: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - public emplace = (i: number, v0: number, v1: number, v2: number) => { + public emplace(i: number, v0: number, v1: number, v2: number) { const o2 = i * 3; this.int16[o2 + 0] = v0; this.int16[o2 + 1] = v1; @@ -732,13 +732,13 @@ class StructArrayLayout1ul2ui8 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number) => { + public emplaceBack(v0: number, v1: number, v2: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2); } - public emplace = (i: number, v0: number, v1: number, v2: number) => { + public emplace(i: number, v0: number, v1: number, v2: number) { const o4 = i * 2; const o2 = i * 4; this.uint32[o4 + 0] = v0; @@ -766,13 +766,13 @@ class StructArrayLayout2ui4 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number) => { + public emplaceBack(v0: number, v1: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1); } - public emplace = (i: number, v0: number, v1: number) => { + public emplace(i: number, v0: number, v1: number) { const o2 = i * 2; this.uint16[o2 + 0] = v0; this.uint16[o2 + 1] = v1; @@ -798,13 +798,13 @@ class StructArrayLayout1ui2 extends StructArray { this.uint16 = new Uint16Array(this.arrayBuffer); } - public emplaceBack = (v0: number) => { + public emplaceBack(v0: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0); } - public emplace = (i: number, v0: number) => { + public emplace(i: number, v0: number) { const o2 = i * 1; this.uint16[o2 + 0] = v0; return i; @@ -829,13 +829,13 @@ class StructArrayLayout4f16 extends StructArray { this.float32 = new Float32Array(this.arrayBuffer); } - public emplaceBack = (v0: number, v1: number, v2: number, v3: number) => { + public emplaceBack(v0: number, v1: number, v2: number, v3: number) { const i = this.length; this.resize(i + 1); return this.emplace(i, v0, v1, v2, v3); } - public emplace = (i: number, v0: number, v1: number, v2: number, v3: number) => { + public emplace(i: number, v0: number, v1: number, v2: number, v3: number) { const o4 = i * 4; this.float32[o4 + 0] = v0; this.float32[o4 + 1] = v1; diff --git a/src/geo/lng_lat_bounds.ts b/src/geo/lng_lat_bounds.ts index c929ce4468..22bd3d6323 100644 --- a/src/geo/lng_lat_bounds.ts +++ b/src/geo/lng_lat_bounds.ts @@ -252,7 +252,7 @@ class LngLatBounds { */ static convert(input: LngLatBoundsLike): LngLatBounds { if (input instanceof LngLatBounds) return input; - if (!input) return null; + if (!input) return input as null; return new LngLatBounds(input); } } diff --git a/src/geo/transform.ts b/src/geo/transform.ts index 2252ff3bc7..29eb7cbf89 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -510,8 +510,8 @@ class Transform { // unproject two points to get a line and then find the point on that // line with z=0 - const coord0 = vec4.fromValues(p.x, p.y, 0, 1); - const coord1 = vec4.fromValues(p.x, p.y, 1, 1); + const coord0 = [p.x, p.y, 0, 1] as any; + const coord1 = [p.x, p.y, 1, 1] as any; vec4.transformMat4(coord0, coord0, this.pixelMatrixInverse); vec4.transformMat4(coord1, coord1, this.pixelMatrixInverse); @@ -539,7 +539,7 @@ class Transform { * @private */ coordinatePoint(coord: MercatorCoordinate) { - const p = vec4.fromValues(coord.x * this.worldSize, coord.y * this.worldSize, 0, 1); + const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1] as any; vec4.transformMat4(p, p, this.pixelMatrix); return new Point(p[0] / p[3], p[1] / p[3]); } @@ -714,7 +714,7 @@ class Transform { const nearZ = this.height / 50; // matrix for conversion from location to GL coordinates (-1 .. 1) - let m = mat4.create(); + let m = new Float64Array(16) as any; mat4.perspective(m, this._fov, this.width / this.height, nearZ, farZ); //Apply center of perspective offset @@ -732,7 +732,6 @@ class Transform { this.mercatorMatrix = mat4.scale(mat4.create(), m, vec3.fromValues(this.worldSize, this.worldSize, this.worldSize)); // scale vertically to meters per pixel (inverse of ground resolution): - // WARN mat4.scale(m, m, [1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize, 1]); // existing code has extra element in scaling array mat4.scale(m, m, vec3.fromValues(1, 1, mercatorZfromAltitude(1, this.center.lat) * this.worldSize)); this.projMatrix = m; @@ -764,10 +763,10 @@ class Transform { this.glCoordMatrix = m; // matrix for conversion from location to screen coordinates - this.pixelMatrix = mat4.multiply(mat4.create(), this.labelPlaneMatrix, this.projMatrix); + this.pixelMatrix = mat4.multiply(new Float64Array(16) as any, this.labelPlaneMatrix, this.projMatrix); // inverse matrix for conversion from screen coordinaes to location - m = mat4.invert(mat4.create(), this.pixelMatrix); + m = mat4.invert(new Float64Array(16) as any, this.pixelMatrix); if (!m) throw new Error("failed to invert matrix"); this.pixelMatrixInverse = m; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 9ed9efe200..56ef0911fc 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -1,6 +1,7 @@ import {Event} from '../util/evented'; import DOM from '../util/dom'; import type Map from './map'; +import type {CompleteMapOptions} from './map'; import HandlerInertia from './handler_inertia'; import {MapEventHandler, BlockableMapEventHandler} from './handler/map_event'; import BoxZoomHandler from './handler/box_zoom'; @@ -110,12 +111,7 @@ class HandlerManager { capture?: boolean } | undefined]>; - constructor(map: Map, options: { - interactive: boolean, - pitchWithRotate: boolean, - clickTolerance: number, - bearingSnap: number - }) { + constructor(map: Map, options: CompleteMapOptions) { this._map = map; this._el = this._map.getCanvasContainer(); this._handlers = []; @@ -185,11 +181,7 @@ class HandlerManager { } } - _addDefaultHandlers(options: { - interactive: boolean, - pitchWithRotate: boolean, - clickTolerance: number - }) { + _addDefaultHandlers(options: CompleteMapOptions) { const map = this._map; const el = map.getCanvasContainer(); this._add('mapEvent', new MapEventHandler(map, options)); @@ -236,8 +228,8 @@ class HandlerManager { this._add('blockableMapEvent', new BlockableMapEventHandler(map)); for (const name of ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']) { - if (options.interactive && (options as any)[name]) { - (map as any)[name].enable((options as any)[name]); + if (options.interactive && options[name]) { + map[name].enable(options[name]); } } } diff --git a/src/ui/map.ts b/src/ui/map.ts index 2dfca80fcc..611c33e354 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -59,7 +59,7 @@ import {ControlPosition, IControl} from './control/control'; /* eslint-enable no-use-before-define */ -type MapOptions = { +export type MapOptions = { hash?: boolean | string, interactive?: boolean, container: HTMLElement | string, @@ -79,7 +79,7 @@ type MapOptions = { maxPitch?: number | null, boxZoom?: boolean, dragRotate?: boolean, - dragPan?: DragPanOptions, + dragPan?: DragPanOptions | boolean, keyboard?: boolean, doubleClickZoom?: boolean, touchZoomRotate?: boolean, @@ -105,6 +105,15 @@ type MapOptions = { pitchWithRotate?: boolean }; +// See article here: https://medium.com/terria/typescript-transforming-optional-properties-to-required-properties-that-may-be-undefined-7482cb4e1585 +// HM TODO: This might need to move to amore general place +type Complete = { + [P in keyof Required]: Pick extends Required> ? T[P] : (T[P] | undefined); +} + +// This type is used inside map since all properties are assigned a default value. +export type CompleteMapOptions = Complete; + const defaultMinZoom = -2; const defaultMaxZoom = 22; @@ -152,7 +161,7 @@ const defaultOptions = { accessToken: null, fadeDuration: 300, crossSourceCollisions: true -}; +} as CompleteMapOptions; /** * The `Map` object represents the map on your page. It exposes methods @@ -443,12 +452,7 @@ class Map extends Camera { window.addEventListener('orientationchange', this._onWindowResize, false); } - this.handlers = new HandlerManager(this, { - interactive: options.interactive, - pitchWithRotate: options.pitchWithRotate, - clickTolerance: options.clickTolerance, - bearingSnap: options.bearingSnap - }); + this.handlers = new HandlerManager(this, options as CompleteMapOptions); const hashName = (typeof options.hash === 'string' && options.hash) || undefined; this._hash = options.hash && (new Hash(hashName)).addTo(this); diff --git a/src/util/primitives.ts b/src/util/primitives.ts index a178fbdee4..ea2abe0c57 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -1,19 +1,24 @@ -import {mat4, vec3, vec4} from 'gl-matrix'; +import { mat4, vec3, vec4 } from 'gl-matrix'; import assert from 'assert'; class Frustum { + constructor(public points: vec4[], public planes: vec4[]) { } public static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { + const toVec3 = (vec4: vec4): vec3 => { + return vec3.fromValues(vec4[0], vec4[1], vec4[2]); + } + const clipSpaceCorners = [ - vec4.fromValues(-1, 1, -1, 1), - vec4.fromValues( 1, 1, -1, 1), - vec4.fromValues( 1, -1, -1, 1), + vec4.fromValues(-1, 1, -1, 1), + vec4.fromValues(1, 1, -1, 1), + vec4.fromValues(1, -1, -1, 1), vec4.fromValues(-1, -1, -1, 1), - vec4.fromValues(-1, 1, 1, 1), - vec4.fromValues( 1, 1, 1, 1), - vec4.fromValues( 1, -1, 1, 1), - vec4.fromValues(-1, -1, 1, 1) + vec4.fromValues(-1, 1, 1, 1), + vec4.fromValues(1, 1, 1, 1), + vec4.fromValues(1, -1, 1, 1), + vec4.fromValues(-1, -1, 1, 1) ]; const scale = Math.pow(2, zoom); @@ -21,7 +26,7 @@ class Frustum { // Transform frustum corner points from clip space to tile space const frustumCoords = clipSpaceCorners .map(v => vec4.transformMat4(vec4.create(), v, invProj)) - .map(v => vec4.scale(vec4.create(), v, 1.0 / v[3] / worldSize * scale)); + .map(v => vec4.scale([] as any, v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ vec3.fromValues(0, 1, 2), // near @@ -33,11 +38,11 @@ class Frustum { ]; const frustumPlanes = frustumPlanePointIndices.map((p: vec3) => { - const a = vec3.sub(vec3.create(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); - const b = vec3.sub(vec3.create(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); + const a = vec3.sub(vec3.create(), toVec3(frustumCoords[p[0]]), toVec3(frustumCoords[p[1]])); + const b = vec3.sub(vec3.create(), toVec3(frustumCoords[p[2]]), toVec3(frustumCoords[p[1]])); const n = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), a, b)); - const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); - return vec4.fromValues(n[0], n[1], n[2], d); + const d = -vec3.dot(n, toVec3(frustumCoords[p[1]])); + return [n[0], n[1], n[2], d] as any as vec4; }); return new Frustum(frustumCoords, frustumPlanes); diff --git a/src/util/struct_array.ts b/src/util/struct_array.ts index 21578a0ac3..79bf4963cc 100644 --- a/src/util/struct_array.ts +++ b/src/util/struct_array.ts @@ -85,7 +85,7 @@ export type SerializedStructArray = { * * @private */ -class StructArray { +abstract class StructArray { capacity: number; length: number; isTransferred: boolean; @@ -95,8 +95,8 @@ class StructArray { // The following properties are defined on the prototype. members: Array; bytesPerElement: number; - readonly emplaceBack: Function; - readonly emplace: Function; + abstract emplaceBack(v0: number, v1?: number, v2?: number, v3?: number, v4?:number, v5?:number, v6?:number, v7?:number, v8?:number, v9?:number, v10?:number, v11?:number, v12?:number, v13?:number, v14?:number, v15?:number, v16?:number, v17?:number, v18?:number, v19?:number, v20?:number, v21?:number, v22?:number, v23?:number, v24?:number, v25?:number, v26?:number, v27?:number); + abstract emplace(i: number, v0: number, v1?: number, v2?:number, v3?:number, v4?:number, v5?:number, v6?:number, v7?:number, v8?:number, v9?:number, v10?:number, v11?:number, v12?:number, v13?:number, v14?:number, v15?:number, v16?:number, v17?:number, v18?:number, v19?:number, v20?:number, v21?:number, v22?:number, v23?:number, v24?:number, v25?:number, v26?:number, v27?:number); constructor() { this.isTransferred = false; diff --git a/src/util/util.ts b/src/util/util.ts index 381e11a16a..7ee2943d28 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -211,11 +211,12 @@ export function uniqueId(): number { * Return a random UUID (v4). Taken from: https://gist.github.com/jed/982883 * @private */ +// HM TODO: replace this with uuid library export function uuid(): string { function b(a?): string { return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : - "10000000-1000-4000-80000000-100000000000".replace(/[018]/g, b); + "10000000-1000-4000-8000-100000000000".replace(/[018]/g, b); } return b(); } diff --git a/test/README.md b/test/README.md index 8585e2abde..c10008a37c 100644 --- a/test/README.md +++ b/test/README.md @@ -7,14 +7,14 @@ First you must configure your development environment per [`../CONTRIBUTING.md`] There are two test suites associated with Mapbox GL JS - - `yarn test` runs quick unit tests - - `yarn run test-suite` runs slower integration tests + - `npm run test` runs quick unit tests + - `npm run test-suite` runs slower integration tests To run individual tests: - - Unit tests: `yarn test-unit path/to/file.test.js` where path *does not include* `test/unit/` - - e.g. `yarn test-unit ui/handler/scroll_zoom.test.js` - - Render tests: `yarn test-render render-test-name` (e.g. `yarn test-render background-color/default`) + - Unit tests: `npm run test-unit-file path/to/file.test.js` where path *does not include* `test/unit/` + - e.g. `npm run test-unit-file test/unit/ui/handler/scroll_zoom.test.js` + - Render tests: `npm run test-render render-test-name` (e.g. `npm run test-render background-color/default`) ## Integration Tests diff --git a/test/stub_loader.js b/test/stub_loader.js index 1153b2d47c..2db82e47e9 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -1,11 +1,12 @@ import gl from 'gl'; -import { JSDOM, VirtualConsole } from "jsdom"; -import { PNG } from 'pngjs'; +import {JSDOM, VirtualConsole} from "jsdom"; +import {PNG} from 'pngjs'; +import sinon from 'sinon'; -let lastDataFroUrl = null; +let lastDataFromUrl = null; // The following is the mocking of what's needed in window and global for the tests to run. -const { window } = new JSDOM('', { +const {window} = new JSDOM('', { // Send jsdom console output to the node console object. virtualConsole: new VirtualConsole().sendTo(console) }); @@ -13,29 +14,46 @@ const { window } = new JSDOM('', { global.ImageData = window.ImageData || function () { return false; }; global.ImageBitmap = window.ImageBitmap || function () { return false; }; global.WebGLFramebuffer = window.WebGLFramebuffer || Object; -global.HTMLCanvasElement = function () { }; global.HTMLElement = window.HTMLElement; global.HTMLImageElement = window.HTMLImageElement; global.HTMLVideoElement = window.HTMLVideoElement; global.HTMLCanvasElement = window.HTMLCanvasElement; global.OffscreenCanvas = window.OffscreenCanvas; global.Image = window.Image; +global.navigator = window.navigator; +global.WheelEvent = window.WheelEvent; // stubbing image load as it is not implemented in jsdom +// eslint-disable-next-line accessor-pairs Object.defineProperty(global.Image.prototype, 'src', { set(src) { - if (lastDataFroUrl) { - const reader = new window.FileReader(); - reader.onload = (_) => { - const dataUrl = reader.result; - new PNG().parse(dataUrl, (err, png) => { - this.data = png.data; - this.height = png.height; - this.width = png.width; - setTimeout(() => this.onload()); - }); - } - reader.readAsArrayBuffer(lastDataFroUrl); + if (!this.onload) { + return; } + if (src && typeof src === 'string' && !src.startsWith('blob')) { + this.onload(); + return; + } + if (!lastDataFromUrl) { + return; + } + if (lastDataFromUrl.size < 10) { + // if this is not a valid image load it anyway but don't set the data for later use + // this is the case in the unit tests + this.onload(); + return; + } + const reader = new window.FileReader(); + reader.onload = (_) => { + const dataUrl = reader.result; + new PNG().parse(dataUrl, (err, png) => { + if (err) throw new Error("Couldn't parse PNG"); + this.data = png.data; + this.height = png.height; + this.width = png.width; + this.onload(); + }); + }; + reader.readAsArrayBuffer(lastDataFromUrl); } }); global.Blob = window.Blob; @@ -60,7 +78,8 @@ global.cancelAnimationFrame = clearImmediate; // Add webgl context with the supplied GL const originalGetContext = global.HTMLCanvasElement.prototype.getContext; -global.HTMLCanvasElement.prototype.getContext = function (type, attributes) { + +function imitateWebGlGetContext(type, attributes) { if (type === 'webgl') { if (!this._webGLContext) { this._webGLContext = gl(this.width, this.height, attributes); @@ -69,29 +88,40 @@ global.HTMLCanvasElement.prototype.getContext = function (type, attributes) { } // Fallback to existing HTMLCanvasElement getContext behaviour return originalGetContext.call(this, type, attributes); -}; +} +global.HTMLCanvasElement.prototype.getContext = imitateWebGlGetContext; // HM TODO: move this to the relevat test... window.useFakeHTMLCanvasGetContext = function () { - this.HTMLCanvasElement.prototype.getContext = function () { return '2d'; }; + this.HTMLCanvasElement.prototype.getContext = () => { return '2d'; }; +}; + +window.clearFakeHTMLCanvasGetContext = () => { + global.HTMLCanvasElement.prototype.getContext = imitateWebGlGetContext; }; // HM TODO: move this to the relevat test... window.useFakeXMLHttpRequest = function () { sinon.xhr.supportsCORS = true; this.server = sinon.fakeServer.create(); - this.XMLHttpRequest = this.server.xhr; + global.XMLHttpRequest = this.server.xhr; +}; + +window.clearFakeXMLHttpRequest = () => { + window.server = null; + global.XMLHttpRequest = null; }; global.URL.createObjectURL = (blob) => { - lastDataFroUrl = blob; + lastDataFromUrl = blob; return 'blob:'; -} +}; + global.URL.revokeObjectURL = function () { - lastDataFroUrl = null; + lastDataFromUrl = null; }; -window.fakeWorkerPresence = function () { +window.useFakeWorkerPresence = function () { global.WorkerGlobalScope = function () { }; global.self = new global.WorkerGlobalScope(); }; @@ -100,10 +130,8 @@ window.clearFakeWorkerPresence = function () { global.self = undefined; }; - window.performance.getEntriesByName = function () { }; window.performance.mark = function () { }; window.performance.measure = function () { }; window.performance.clearMarks = function () { }; window.performance.clearMeasures = function () { }; - diff --git a/test/unit/changelog.js b/test/unit/changelog.js deleted file mode 100644 index 908e08394c..0000000000 --- a/test/unit/changelog.js +++ /dev/null @@ -1,17 +0,0 @@ -import {test} from '../util/test'; -import fs from 'fs'; -import path from 'path'; -import {version} from '../../package.json'; - -test('changelog', (t) => { - const changelog = fs.readFileSync(path.join(__dirname, '../../CHANGELOG.md'), 'utf8'); - t.test('latest version is in changelog', (t) => { - if (version.indexOf('-dev') <= 0 && version.indexOf('-rc') <= 0) { - const versionString = `## ${version}\n`; - t.ok(changelog.indexOf(versionString) >= 0); - } - t.end(); - }); - - t.end(); -}); diff --git a/test/unit/data/dem_data.test.js b/test/unit/data/dem_data.test.js index 4f9627d37e..5f8b4e2fcf 100644 --- a/test/unit/data/dem_data.test.js +++ b/test/unit/data/dem_data.test.js @@ -1,7 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import DEMData from '../../../src/data/dem_data'; -import {RGBAImage} from '../../../src/util/image'; -import {serialize, deserialize} from '../../../src/util/web_worker_transfer'; +import DEMData from '../../../rollup/build/tsc/data/dem_data'; +import {RGBAImage} from '../../../rollup/build/tsc/util/image'; +import {serialize, deserialize} from '../../../rollup/build/tsc/util/web_worker_transfer'; function createMockImage(height, width) { // RGBAImage passed to constructor has uniform 1px padding on all sides. diff --git a/test/unit/data/feature_position_map.test.js b/test/unit/data/feature_position_map.test.js index b450f05efe..80ac29ef3c 100644 --- a/test/unit/data/feature_position_map.test.js +++ b/test/unit/data/feature_position_map.test.js @@ -1,7 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import FeatureMap from '../../../src/data/feature_position_map'; -import {serialize, deserialize} from '../../../src/util/web_worker_transfer'; +import FeatureMap from '../../../rollup/build/tsc/data/feature_position_map'; +import {serialize, deserialize} from '../../../rollup/build/tsc/util/web_worker_transfer'; test('FeaturePositionMap', (t) => { diff --git a/test/unit/data/fill_bucket.test.js b/test/unit/data/fill_bucket.test.js index aa99db50ec..696dceff2c 100644 --- a/test/unit/data/fill_bucket.test.js +++ b/test/unit/data/fill_bucket.test.js @@ -1,12 +1,17 @@ + +import '../../stub_loader'; import {test} from '../../util/test'; import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '../../../src/symbol/point'; -import segment from '../../../src/data/segment'; -import FillBucket from '../../../src/data/bucket/fill_bucket'; -import FillStyleLayer from '../../../src/style/style_layer/fill_style_layer'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import segment from '../../../rollup/build/tsc/data/segment'; +import FillBucket from '../../../rollup/build/tsc/data/bucket/fill_bucket'; +import FillStyleLayer from '../../../rollup/build/tsc/style/style_layer/fill_style_layer'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); // Load a fill feature from fixture tile. const vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); diff --git a/test/unit/data/line_bucket.test.js b/test/unit/data/line_bucket.test.js index 8b39299273..e8cbf5be4f 100644 --- a/test/unit/data/line_bucket.test.js +++ b/test/unit/data/line_bucket.test.js @@ -1,12 +1,16 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '../../../src/symbol/point'; -import segment from '../../../src/data/segment'; -import LineBucket from '../../../src/data/bucket/line_bucket'; -import LineStyleLayer from '../../../src/style/style_layer/line_style_layer'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import segment from '../../../rollup/build/tsc/data/segment'; +import LineBucket from '../../../rollup/build/tsc/data/bucket/line_bucket'; +import LineStyleLayer from '../../../rollup/build/tsc/style/style_layer/line_style_layer'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); // Load a line feature from fixture tile. const vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); diff --git a/test/unit/data/load_geometry.test.js b/test/unit/data/load_geometry.test.js index 1ad2269f35..34182c6166 100644 --- a/test/unit/data/load_geometry.test.js +++ b/test/unit/data/load_geometry.test.js @@ -3,7 +3,10 @@ import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import loadGeometry from '../../../src/data/load_geometry.js'; +import loadGeometry from '../../../rollup/build/tsc/data/load_geometry.js'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); // Load a line feature from fixture tile. const vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); diff --git a/test/unit/data/symbol_bucket.test.js b/test/unit/data/symbol_bucket.test.js index 87a8badb43..fcaf9d1246 100644 --- a/test/unit/data/symbol_bucket.test.js +++ b/test/unit/data/symbol_bucket.test.js @@ -1,18 +1,22 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import SymbolBucket from '../../../src/data/bucket/symbol_bucket'; -import {CollisionBoxArray} from '../../../src/data/array_types'; -import {performSymbolLayout} from '../../../src/symbol/symbol_layout'; -import {Placement} from '../../../src/symbol/placement'; -import Transform from '../../../src/geo/transform'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import Tile from '../../../src/source/tile'; -import CrossTileSymbolIndex from '../../../src/symbol/cross_tile_symbol_index'; -import FeatureIndex from '../../../src/data/feature_index'; +import SymbolBucket from '../../../rollup/build/tsc/data/bucket/symbol_bucket'; +import {CollisionBoxArray} from '../../../rollup/build/tsc/data/array_types'; +import {performSymbolLayout} from '../../../rollup/build/tsc/symbol/symbol_layout'; +import {Placement} from '../../../rollup/build/tsc/symbol/placement'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import Tile from '../../../rollup/build/tsc/source/tile'; +import CrossTileSymbolIndex from '../../../rollup/build/tsc/symbol/cross_tile_symbol_index'; +import FeatureIndex from '../../../rollup/build/tsc/data/feature_index'; import {createSymbolBucket} from '../../util/create_symbol_layer'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); // Load a point feature from fixture tile. const vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); diff --git a/test/unit/data/vertex_buffer.test.js b/test/unit/data/vertex_buffer.test.js index 464359eaa0..e735e31923 100644 --- a/test/unit/data/vertex_buffer.test.js +++ b/test/unit/data/vertex_buffer.test.js @@ -1,7 +1,8 @@ import {test} from '../../util/test'; -import VertexBuffer from '../../../src/gl/vertex_buffer'; -import {StructArrayLayout3i6} from '../../../src/data/array_types'; -import Context from '../../../src/gl/context'; +import VertexBuffer from '../../../rollup/build/tsc/gl/vertex_buffer'; +import {StructArrayLayout3i6} from '../../../rollup/build/tsc/data/array_types'; +import Context from '../../../rollup/build/tsc/gl/context'; +import gl from 'gl'; test('VertexBuffer', (t) => { class TestArray extends StructArrayLayout3i6 {} @@ -11,7 +12,7 @@ test('VertexBuffer', (t) => { ]; t.test('constructs itself', (t) => { - const context = new Context(require('gl')(10, 10)); + const context = new Context(gl(10, 10)); const array = new TestArray(); array.emplaceBack(1, 1, 1); array.emplaceBack(1, 1, 1); @@ -29,7 +30,7 @@ test('VertexBuffer', (t) => { }); t.test('enableAttributes', (t) => { - const context = new Context(require('gl')(10, 10)); + const context = new Context(gl(10, 10)); const array = new TestArray(); const buffer = new VertexBuffer(context, array, attributes); t.stub(context.gl, 'enableVertexAttribArray').callsFake(() => {}); @@ -39,7 +40,7 @@ test('VertexBuffer', (t) => { }); t.test('setVertexAttribPointers', (t) => { - const context = new Context(require('gl')(10, 10)); + const context = new Context(gl(10, 10)); const array = new TestArray(); const buffer = new VertexBuffer(context, array, attributes); t.stub(context.gl, 'vertexAttribPointer').callsFake(() => {}); diff --git a/test/unit/geo/edge_insets.test.js b/test/unit/geo/edge_insets.test.js index ccfc1982cf..54ecb58a0c 100644 --- a/test/unit/geo/edge_insets.test.js +++ b/test/unit/geo/edge_insets.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import EdgeInsets from '../../../src/geo/edge_insets'; +import EdgeInsets from '../../../rollup/build/tsc/geo/edge_insets'; test('EdgeInsets', (t) => { t.test('#constructor', (t) => { diff --git a/test/unit/geo/lng_lat.test.js b/test/unit/geo/lng_lat.test.js index 07a11e327e..561a2002bb 100644 --- a/test/unit/geo/lng_lat.test.js +++ b/test/unit/geo/lng_lat.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import LngLat from '../../../src/geo/lng_lat'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; test('LngLat', (t) => { t.test('#constructor', (t) => { diff --git a/test/unit/geo/lng_lat_bounds.test.js b/test/unit/geo/lng_lat_bounds.test.js index c623a65e4a..9164de5207 100644 --- a/test/unit/geo/lng_lat_bounds.test.js +++ b/test/unit/geo/lng_lat_bounds.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import LngLat from '../../../src/geo/lng_lat'; -import LngLatBounds from '../../../src/geo/lng_lat_bounds'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import LngLatBounds from '../../../rollup/build/tsc/geo/lng_lat_bounds'; test('LngLatBounds', (t) => { t.test('#constructor', (t) => { diff --git a/test/unit/geo/mercator_coordinate.test.js b/test/unit/geo/mercator_coordinate.test.js index 72400950b1..3d2ab46675 100644 --- a/test/unit/geo/mercator_coordinate.test.js +++ b/test/unit/geo/mercator_coordinate.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import LngLat from '../../../src/geo/lng_lat'; -import MercatorCoordinate, {mercatorScale} from '../../../src/geo/mercator_coordinate'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import MercatorCoordinate, {mercatorScale} from '../../../rollup/build/tsc/geo/mercator_coordinate'; test('LngLat', (t) => { t.test('#constructor', (t) => { diff --git a/test/unit/geo/transform.test.js b/test/unit/geo/transform.test.js index bc3310ae2d..320406b5f1 100644 --- a/test/unit/geo/transform.test.js +++ b/test/unit/geo/transform.test.js @@ -1,8 +1,8 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import Transform from '../../../src/geo/transform'; -import LngLat from '../../../src/geo/lng_lat'; -import {OverscaledTileID, CanonicalTileID} from '../../../src/source/tile_id'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import {OverscaledTileID, CanonicalTileID} from '../../../rollup/build/tsc/source/tile_id'; import {fixedLngLat, fixedCoord} from '../../util/fixed'; test('transform', (t) => { diff --git a/test/unit/gl/state.test.js b/test/unit/gl/state.test.js index a7b020957e..1216eb07fc 100644 --- a/test/unit/gl/state.test.js +++ b/test/unit/gl/state.test.js @@ -1,8 +1,8 @@ import {test} from '../../util/test'; -import {ClearColor, ClearDepth, ClearStencil, ColorMask, DepthMask, StencilMask, StencilFunc, StencilOp, StencilTest, DepthRange, DepthTest, DepthFunc, Blend, BlendFunc, BlendColor, Program, ActiveTextureUnit, Viewport, BindFramebuffer, BindRenderbuffer, BindTexture, BindVertexBuffer, BindElementBuffer, BindVertexArrayOES, PixelStoreUnpack, PixelStoreUnpackPremultiplyAlpha} from '../../../src/gl/value'; -import Context from '../../../src/gl/context'; -import Color from '../../../src/style-spec/util/color'; -import {deepEqual} from '../../../src/util/util'; +import {ClearColor, ClearDepth, ClearStencil, ColorMask, DepthMask, StencilMask, StencilFunc, StencilOp, StencilTest, DepthRange, DepthTest, DepthFunc, Blend, BlendFunc, BlendColor, Program, ActiveTextureUnit, Viewport, BindFramebuffer, BindRenderbuffer, BindTexture, BindVertexBuffer, BindElementBuffer, BindVertexArrayOES, PixelStoreUnpack, PixelStoreUnpackPremultiplyAlpha} from '../../../rollup/build/tsc/gl/value'; +import Context from '../../../rollup/build/tsc/gl/context'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; +import {deepEqual} from '../../../rollup/build/tsc/util/util'; import gl from 'gl'; const context = new Context(gl(10, 10)); diff --git a/test/unit/mapbox-gl.js b/test/unit/mapbox-gl.test.js similarity index 61% rename from test/unit/mapbox-gl.js rename to test/unit/mapbox-gl.test.js index 3b3764fb7a..29d731ae25 100644 --- a/test/unit/mapbox-gl.js +++ b/test/unit/mapbox-gl.test.js @@ -1,12 +1,8 @@ +import '../stub_loader'; import {test} from '../util/test'; -import mapboxgl from '../../src'; +import mapboxgl from '../../rollup/build/tsc'; test('mapboxgl', (t) => { - t.test('version', (t) => { - t.ok(mapboxgl.version); - t.end(); - }); - t.test('workerCount', (t) => { t.ok(typeof mapboxgl.workerCount === 'number'); t.end(); diff --git a/test/unit/render/glyph_manager.test.js b/test/unit/render/glyph_manager.test.js index 73f55531a1..d26d2af37c 100644 --- a/test/unit/render/glyph_manager.test.js +++ b/test/unit/render/glyph_manager.test.js @@ -1,6 +1,7 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import parseGlyphPBF from '../../../src/style/parse_glyph_pbf'; -import GlyphManager from '../../../src/render/glyph_manager'; +import parseGlyphPBF from '../../../rollup/build/tsc/style/parse_glyph_pbf'; +import GlyphManager from '../../../rollup/build/tsc/render/glyph_manager'; import fs from 'fs'; const glyphs = {}; diff --git a/test/unit/render/line_atlas.test.js b/test/unit/render/line_atlas.test.js index b1c2bdef93..5fdd57b245 100644 --- a/test/unit/render/line_atlas.test.js +++ b/test/unit/render/line_atlas.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import LineAtlas from '../../../src/render/line_atlas'; +import LineAtlas from '../../../rollup/build/tsc/render/line_atlas'; test('LineAtlas', (t) => { const lineAtlas = new LineAtlas(64, 64); diff --git a/test/unit/render/uniform_binding.test.js b/test/unit/render/uniform_binding.test.js index bbdecdb4b9..4f4a2fba7e 100644 --- a/test/unit/render/uniform_binding.test.js +++ b/test/unit/render/uniform_binding.test.js @@ -5,7 +5,7 @@ import { Uniform2f, Uniform3f, Uniform4f -} from '../../../src/render/uniform_binding'; +} from '../../../rollup/build/tsc/render/uniform_binding'; test('Uniform1i', (t) => { // test counts ensure we don't call the gl.uniform* setters more than expected diff --git a/test/unit/shaders/encode_attribute.test.js b/test/unit/shaders/encode_attribute.test.js index 5530317ca3..4603c5e801 100644 --- a/test/unit/shaders/encode_attribute.test.js +++ b/test/unit/shaders/encode_attribute.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {packUint8ToFloat} from '../../../src/shaders/encode_attribute'; +import {packUint8ToFloat} from '../../../rollup/build/tsc/shaders/encode_attribute'; test('packUint8ToFloat', (t) => { t.equal(packUint8ToFloat(0, 0), 0); diff --git a/test/unit/source/canvas_source.test.js b/test/unit/source/canvas_source.test.js index 5e26b11d34..4058fa1fa8 100644 --- a/test/unit/source/canvas_source.test.js +++ b/test/unit/source/canvas_source.test.js @@ -1,9 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import CanvasSource from '../../../src/source/canvas_source'; -import Transform from '../../../src/geo/transform'; -import {Event, Evented} from '../../../src/util/evented'; -import {extend} from '../../../src/util/util'; -import window from '../../../src/util/window'; +import CanvasSource from '../../../rollup/build/tsc/source/canvas_source'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import {Event, Evented} from '../../../rollup/build/tsc/util/evented'; +import {extend} from '../../../rollup/build/tsc/util/util'; function createSource(options) { window.useFakeHTMLCanvasGetContext(); @@ -38,7 +38,7 @@ class StubMap extends Evented { test('CanvasSource', (t) => { t.afterEach((callback) => { - window.restore(); + window.clearFakeHTMLCanvasGetContext(); callback(); }); @@ -182,7 +182,5 @@ test('CanvasSource#serialize', (t) => { t.equal(serialized.type, 'canvas'); t.deepEqual(serialized.coordinates, [[0, 0], [1, 0], [1, 1], [0, 1]]); - window.restore(); - t.end(); }); diff --git a/test/unit/source/geojson_source.test.js b/test/unit/source/geojson_source.test.js index ba8328460a..1937118022 100644 --- a/test/unit/source/geojson_source.test.js +++ b/test/unit/source/geojson_source.test.js @@ -1,10 +1,11 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Tile from '../../../src/source/tile'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import GeoJSONSource from '../../../src/source/geojson_source'; -import Transform from '../../../src/geo/transform'; -import LngLat from '../../../src/geo/lng_lat'; -import {extend} from '../../../src/util/util'; +import Tile from '../../../rollup/build/tsc/source/tile'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import GeoJSONSource from '../../../rollup/build/tsc/source/geojson_source'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import {extend} from '../../../rollup/build/tsc/util/util'; const wrapDispatcher = (dispatcher) => { return { diff --git a/test/unit/source/geojson_worker_source.test.js b/test/unit/source/geojson_worker_source.test.js index a53088e5e9..0241fdcade 100644 --- a/test/unit/source/geojson_worker_source.test.js +++ b/test/unit/source/geojson_worker_source.test.js @@ -1,8 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import GeoJSONWorkerSource from '../../../src/source/geojson_worker_source'; -import StyleLayerIndex from '../../../src/style/style_layer_index'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import perf from '../../../src/util/performance'; +import GeoJSONWorkerSource from '../../../rollup/build/tsc/source/geojson_worker_source'; +import StyleLayerIndex from '../../../rollup/build/tsc/style/style_layer_index'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import perf from '../../../rollup/build/tsc/util/performance'; const actor = {send: () => {}}; diff --git a/test/unit/source/geojson_wrapper.test.js b/test/unit/source/geojson_wrapper.test.js index 4c04c27f34..d5a686d8ae 100644 --- a/test/unit/source/geojson_wrapper.test.js +++ b/test/unit/source/geojson_wrapper.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Wrapper from '../../../src/source/geojson_wrapper'; +import Wrapper from '../../../rollup/build/tsc/source/geojson_wrapper'; test('geojsonwrapper', (t) => { diff --git a/test/unit/source/image_source.test.js b/test/unit/source/image_source.test.js index fb0e1d843b..6b244169af 100644 --- a/test/unit/source/image_source.test.js +++ b/test/unit/source/image_source.test.js @@ -1,11 +1,10 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import assert from 'assert'; -import ImageSource from '../../../src/source/image_source'; -import {Evented} from '../../../src/util/evented'; -import Transform from '../../../src/geo/transform'; -import {extend} from '../../../src/util/util'; -import browser from '../../../src/util/browser'; -import window from '../../../src/util/window'; +import ImageSource from '../../../rollup/build/tsc/source/image_source'; +import {Evented} from '../../../rollup/build/tsc/util/evented'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import browser from '../../../rollup/build/tsc/util/browser'; function createSource(options) { options = extend({ @@ -30,24 +29,16 @@ class StubMap extends Evented { test('ImageSource', (t) => { window.useFakeXMLHttpRequest(); - // stub this manually because sinon does not stub non-existent methods - assert(!window.URL.createObjectURL); - window.URL.createObjectURL = () => 'blob:'; - t.tearDown(() => delete window.URL.createObjectURL); - // stub Image so we can invoke 'onload' // https://github.com/jsdom/jsdom/commit/58a7028d0d5b6aacc5b435daee9fd8f9eacbb14c - const img = {}; - t.stub(window, 'Image').returns(img); // fake the image request (sinon doesn't allow non-string data for // server.respondWith, so we do so manually) const requests = []; - window.XMLHttpRequest.onCreate = req => { requests.push(req); }; + XMLHttpRequest.onCreate = req => { requests.push(req); }; const respond = () => { const req = requests.shift(); req.setStatus(200); req.response = new ArrayBuffer(1); req.onload(); - img.onload(); }; t.stub(browser, 'getImageData').callsFake(() => new ArrayBuffer(1)); @@ -64,10 +55,11 @@ test('ImageSource', (t) => { const source = createSource({url : '/image.png'}); source.on('dataloading', (e) => { t.equal(e.dataType, 'source'); - t.end(); }); source.onAdd(new StubMap()); respond(); + t.ok(source.image); + t.end(); }); t.test('transforms url request', (t) => { diff --git a/test/unit/source/query_features.test.js b/test/unit/source/query_features.test.js index a2cf20d60c..1267e55089 100644 --- a/test/unit/source/query_features.test.js +++ b/test/unit/source/query_features.test.js @@ -1,10 +1,11 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import { queryRenderedFeatures, querySourceFeatures -} from '../../../src/source/query_features.js'; -import SourceCache from '../../../src/source/source_cache.js'; -import Transform from '../../../src/geo/transform.js'; +} from '../../../rollup/build/tsc/source/query_features.js'; +import SourceCache from '../../../rollup/build/tsc/source/source_cache.js'; +import Transform from '../../../rollup/build/tsc/geo/transform.js'; test('QueryFeatures#rendered', (t) => { t.test('returns empty object if source returns no tiles', (t) => { diff --git a/test/unit/source/raster_dem_tile_source.test.js b/test/unit/source/raster_dem_tile_source.test.js index f7fef0d6d5..0b725574bd 100644 --- a/test/unit/source/raster_dem_tile_source.test.js +++ b/test/unit/source/raster_dem_tile_source.test.js @@ -1,8 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import RasterDEMTileSource from '../../../src/source/raster_dem_tile_source'; -import window from '../../../src/util/window'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import {RequestManager} from '../../../src/util/mapbox'; +import RasterDEMTileSource from '../../../rollup/build/tsc/source/raster_dem_tile_source'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; function createSource(options, transformCallback) { const source = new RasterDEMTileSource('id', options, {send() {}}, options.eventedParent); @@ -26,7 +26,7 @@ test('RasterTileSource', (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); diff --git a/test/unit/source/raster_dem_tile_worker_source.test.js b/test/unit/source/raster_dem_tile_worker_source.test.js index febeaa32b2..2c6e4f6667 100644 --- a/test/unit/source/raster_dem_tile_worker_source.test.js +++ b/test/unit/source/raster_dem_tile_worker_source.test.js @@ -1,7 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import RasterDEMTileWorkerSource from '../../../src/source/raster_dem_tile_worker_source'; -import StyleLayerIndex from '../../../src/style/style_layer_index'; -import DEMData from '../../../src/data/dem_data'; +import RasterDEMTileWorkerSource from '../../../rollup/build/tsc/source/raster_dem_tile_worker_source'; +import StyleLayerIndex from '../../../rollup/build/tsc/style/style_layer_index'; +import DEMData from '../../../rollup/build/tsc/data/dem_data'; test('loadTile', (t) => { t.test('loads DEM tile', (t) => { diff --git a/test/unit/source/raster_tile_source.test.js b/test/unit/source/raster_tile_source.test.js index 2b77fa7db9..27d4d17ad3 100644 --- a/test/unit/source/raster_tile_source.test.js +++ b/test/unit/source/raster_tile_source.test.js @@ -1,8 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import RasterTileSource from '../../../src/source/raster_tile_source'; -import window from '../../../src/util/window'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import {RequestManager} from '../../../src/util/mapbox'; +import RasterTileSource from '../../../rollup/build/tsc/source/raster_tile_source'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; function createSource(options, transformCallback) { const source = new RasterTileSource('id', options, {send() {}}, options.eventedParent); @@ -26,7 +26,7 @@ test('RasterTileSource', (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); diff --git a/test/unit/source/source_cache.test.js b/test/unit/source/source_cache.test.js index cbf22cee6c..cf136cfeb2 100644 --- a/test/unit/source/source_cache.test.js +++ b/test/unit/source/source_cache.test.js @@ -1,14 +1,15 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import SourceCache from '../../../src/source/source_cache'; -import {setType} from '../../../src/source/source'; -import Tile from '../../../src/source/tile'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import Transform from '../../../src/geo/transform'; -import LngLat from '../../../src/geo/lng_lat'; -import Point from '../../../src/symbol/point'; -import {Event, ErrorEvent, Evented} from '../../../src/util/evented'; -import {extend} from '../../../src/util/util'; -import browser from '../../../src/util/browser'; +import SourceCache from '../../../rollup/build/tsc/source/source_cache'; +import {setType} from '../../../rollup/build/tsc/source/source'; +import Tile from '../../../rollup/build/tsc/source/tile'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import {Event, ErrorEvent, Evented} from '../../../rollup/build/tsc/util/evented'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import browser from '../../../rollup/build/tsc/util/browser'; // Add a mocked source type for use in these tests function MockSourceType(id, sourceOptions, _dispatcher, eventedParent) { diff --git a/test/unit/source/tile.test.js b/test/unit/source/tile.test.js index 384d4d4136..93957c7622 100644 --- a/test/unit/source/tile.test.js +++ b/test/unit/source/tile.test.js @@ -1,15 +1,19 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import {createSymbolBucket} from '../../util/create_symbol_layer'; -import Tile from '../../../src/source/tile'; -import GeoJSONWrapper from '../../../src/source/geojson_wrapper'; -import {OverscaledTileID} from '../../../src/source/tile_id'; +import Tile from '../../../rollup/build/tsc/source/tile'; +import GeoJSONWrapper from '../../../rollup/build/tsc/source/geojson_wrapper'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; import fs from 'fs'; import path from 'path'; import vtpbf from 'vt-pbf'; -import FeatureIndex from '../../../src/data/feature_index'; -import {CollisionBoxArray} from '../../../src/data/array_types'; -import {extend} from '../../../src/util/util'; -import {serialize, deserialize} from '../../../src/util/web_worker_transfer'; +import FeatureIndex from '../../../rollup/build/tsc/data/feature_index'; +import {CollisionBoxArray} from '../../../rollup/build/tsc/data/array_types'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import {serialize, deserialize} from '../../../rollup/build/tsc/util/web_worker_transfer'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); test('querySourceFeatures', (t) => { const features = [{ diff --git a/test/unit/source/tile_cache.test.js b/test/unit/source/tile_cache.test.js index 623d8710d8..ae6ea19b75 100644 --- a/test/unit/source/tile_cache.test.js +++ b/test/unit/source/tile_cache.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import TileCache from '../../../src/source/tile_cache'; -import {OverscaledTileID} from '../../../src/source/tile_id'; +import TileCache from '../../../rollup/build/tsc/source/tile_cache'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; const idA = new OverscaledTileID(10, 0, 10, 0, 1); const idB = new OverscaledTileID(10, 0, 10, 0, 2); diff --git a/test/unit/source/tile_id.test.js b/test/unit/source/tile_id.test.js index 09255aa5fb..3526d9ab78 100644 --- a/test/unit/source/tile_id.test.js +++ b/test/unit/source/tile_id.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {CanonicalTileID, OverscaledTileID} from '../../../src/source/tile_id'; +import {CanonicalTileID, OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; test('CanonicalTileID', (t) => { t.test('#constructor', (t) => { @@ -49,7 +49,7 @@ test('CanonicalTileID', (t) => { t.equal(new CanonicalTileID(17, 22914, 52870).url(['quadkey={quadkey}']), 'quadkey=02301322130000230'); // Test case confirmed by quadkeytools package - // https://bitbucket.org/steele/quadkeytools/src/master/test/quadkey.js?fileviewer=file-view-default#quadkey.js-57 + // https://bitbucket.org/steele/quadkeytools/rollup/build/tsc/master/test/quadkey.js?fileviewer=file-view-default#quadkey.js-57 t.equal(new CanonicalTileID(6, 29, 3).url(['quadkey={quadkey}']), 'quadkey=011123'); t.end(); diff --git a/test/unit/source/vector_tile_source.test.js b/test/unit/source/vector_tile_source.test.js index 664b0d2830..8c1f0244f2 100644 --- a/test/unit/source/vector_tile_source.test.js +++ b/test/unit/source/vector_tile_source.test.js @@ -1,9 +1,10 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import VectorTileSource from '../../../src/source/vector_tile_source'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import window from '../../../src/util/window'; -import {Evented} from '../../../src/util/evented'; -import {RequestManager} from '../../../src/util/mapbox'; +import VectorTileSource from '../../../rollup/build/tsc/source/vector_tile_source'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import {Evented} from '../../../rollup/build/tsc/util/evented'; +import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; +import fixturesSource from '../../fixtures/source'; const wrapDispatcher = (dispatcher) => { return { @@ -40,7 +41,7 @@ test('VectorTileSource', (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -64,7 +65,7 @@ test('VectorTileSource', (t) => { }); t.test('can be constructed from a TileJSON URL', (t) => { - window.server.respondWith('/source.json', JSON.stringify(require('../../fixtures/source'))); + window.server.respondWith('/source.json', JSON.stringify(fixturesSource)); const source = createSource({url: "/source.json"}); @@ -82,7 +83,7 @@ test('VectorTileSource', (t) => { }); t.test('transforms the request for TileJSON URL', (t) => { - window.server.respondWith('/source.json', JSON.stringify(require('../../fixtures/source'))); + window.server.respondWith('/source.json', JSON.stringify(fixturesSource)); const transformSpy = t.spy((url) => { return {url}; }); @@ -95,7 +96,7 @@ test('VectorTileSource', (t) => { }); t.test('fires event with metadata property', (t) => { - window.server.respondWith('/source.json', JSON.stringify(require('../../fixtures/source'))); + window.server.respondWith('/source.json', JSON.stringify(fixturesSource)); const source = createSource({url: "/source.json"}); source.on('data', (e) => { if (e.sourceDataType === 'content') t.end(); @@ -104,7 +105,7 @@ test('VectorTileSource', (t) => { }); t.test('fires "dataloading" event', (t) => { - window.server.respondWith('/source.json', JSON.stringify(require('../../fixtures/source'))); + window.server.respondWith('/source.json', JSON.stringify(fixturesSource)); const evented = new Evented(); let dataloadingFired = false; evented.on('dataloading', () => { @@ -178,7 +179,7 @@ test('VectorTileSource', (t) => { testScheme('tms', 'http://example.com/10/5/1018.png'); t.test('transforms tile urls before requesting', (t) => { - window.server.respondWith('/source.json', JSON.stringify(require('../../fixtures/source'))); + window.server.respondWith('/source.json', JSON.stringify(fixturesSource)); const source = createSource({url: "/source.json"}); const transformSpy = t.spy(source.map._requestManager, 'transformRequest'); diff --git a/test/unit/source/vector_tile_worker_source.test.js b/test/unit/source/vector_tile_worker_source.test.js index df90a9e463..aacbb80204 100644 --- a/test/unit/source/vector_tile_worker_source.test.js +++ b/test/unit/source/vector_tile_worker_source.test.js @@ -1,15 +1,19 @@ +import '../../stub_loader'; import fs from 'fs'; import path from 'path'; import vt from '@mapbox/vector-tile'; import Protobuf from 'pbf'; import {test} from '../../util/test'; -import VectorTileWorkerSource from '../../../src/source/vector_tile_worker_source'; -import StyleLayerIndex from '../../../src/style/style_layer_index'; -import perf from '../../../src/util/performance'; +import VectorTileWorkerSource from '../../../rollup/build/tsc/source/vector_tile_worker_source'; +import StyleLayerIndex from '../../../rollup/build/tsc/style/style_layer_index'; +import perf from '../../../rollup/build/tsc/util/performance'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); const actor = {send: () => {}}; - test('VectorTileWorkerSource#abortTile aborts pending request', (t) => { + window.useFakeXMLHttpRequest(); const source = new VectorTileWorkerSource(actor, new StyleLayerIndex(), []); source.loadTile({ @@ -31,6 +35,7 @@ test('VectorTileWorkerSource#abortTile aborts pending request', (t) => { }); t.deepEqual(source.loading, {}); + window.clearFakeXMLHttpRequest(); t.end(); }); @@ -286,3 +291,4 @@ test('VectorTileWorkerSource provides resource timing information (fallback meth t.end(); }); }); + diff --git a/test/unit/source/video_source.test.js b/test/unit/source/video_source.test.js index ad44dfc176..0531d2a2cf 100644 --- a/test/unit/source/video_source.test.js +++ b/test/unit/source/video_source.test.js @@ -1,7 +1,7 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import VideoSource from '../../../src/source/video_source'; -import {extend} from '../../../src/util/util'; -import window from '../../../src/util/window'; +import VideoSource from '../../../rollup/build/tsc/source/video_source'; +import {extend} from '../../../rollup/build/tsc/util/util'; function createSource(options) { diff --git a/test/unit/source/worker.test.js b/test/unit/source/worker.test.js index e46fb81bc8..1897bb171d 100644 --- a/test/unit/source/worker.test.js +++ b/test/unit/source/worker.test.js @@ -1,6 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Worker from '../../../src/source/worker'; -import window from '../../../src/util/window'; +import Worker from '../../../rollup/build/tsc/source/worker'; const _self = { addEventListener() {} @@ -18,7 +18,7 @@ test('load tile', (t) => { request: {url: '/error'}// Sinon fake server gives 404 responses by default }, (err) => { t.ok(err); - window.restore(); + window.clearFakeXMLHttpRequest(); t.end(); }); window.server.respond(); diff --git a/test/unit/source/worker_tile.test.js b/test/unit/source/worker_tile.test.js index cd0927e1ef..b61e3b2bc6 100644 --- a/test/unit/source/worker_tile.test.js +++ b/test/unit/source/worker_tile.test.js @@ -1,8 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import WorkerTile from '../../../src/source/worker_tile'; -import Wrapper from '../../../src/source/geojson_wrapper'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import StyleLayerIndex from '../../../src/style/style_layer_index'; +import WorkerTile from '../../../rollup/build/tsc/source/worker_tile'; +import Wrapper from '../../../rollup/build/tsc/source/geojson_wrapper'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import StyleLayerIndex from '../../../rollup/build/tsc/style/style_layer_index'; function createWorkerTile() { return new WorkerTile({ diff --git a/test/unit/style-spec/color.js b/test/unit/style-spec/color.test.js similarity index 90% rename from test/unit/style-spec/color.js rename to test/unit/style-spec/color.test.js index 1da9ebc074..1ff4cc2f19 100644 --- a/test/unit/style-spec/color.js +++ b/test/unit/style-spec/color.test.js @@ -1,7 +1,7 @@ // @flow import {test} from '../../util/test'; -import Color from '../../../src/style-spec/util/color'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; test('Color.parse', (t) => { t.deepEqual(Color.parse('red'), new Color(1, 0, 0, 1)); diff --git a/test/unit/style-spec/composite.test.js b/test/unit/style-spec/composite.test.js index b648131807..ecbc146aec 100644 --- a/test/unit/style-spec/composite.test.js +++ b/test/unit/style-spec/composite.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import composite from '../../../src/style-spec/composite'; +import composite from '../../../rollup/build/tsc/style-spec/composite'; test('composites Mapbox vector sources', (t) => { const result = composite({ diff --git a/test/unit/style-spec/declass.test.js b/test/unit/style-spec/declass.test.js index 858c4b5705..a11dc1754f 100644 --- a/test/unit/style-spec/declass.test.js +++ b/test/unit/style-spec/declass.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import declass from '../../../src/style-spec/declass'; +import declass from '../../../rollup/build/tsc/style-spec/declass'; test('declass a style, one class', (t) => { const style = { diff --git a/test/unit/style-spec/deref.test.js b/test/unit/style-spec/deref.test.js index 847e5cba1d..c721d21720 100644 --- a/test/unit/style-spec/deref.test.js +++ b/test/unit/style-spec/deref.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import deref from '../../../src/style-spec/deref'; +import deref from '../../../rollup/build/tsc/style-spec/deref'; test('derefs a ref layer which follows its parent', (t) => { t.deepEqual(deref([ diff --git a/test/unit/style-spec/diff.test.js b/test/unit/style-spec/diff.test.js index 5e1a1d7c94..1338cd8232 100644 --- a/test/unit/style-spec/diff.test.js +++ b/test/unit/style-spec/diff.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import diffStyles from '../../../src/style-spec/diff'; +import diffStyles from '../../../rollup/build/tsc/style-spec/diff'; test('diff', (t) => { diff --git a/test/unit/style-spec/empty.test.js b/test/unit/style-spec/empty.test.js index 5184f4f0de..8926eab4c0 100644 --- a/test/unit/style-spec/empty.test.js +++ b/test/unit/style-spec/empty.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import emptyStyle from '../../../src/style-spec/empty'; -import validateStyleMin from '../../../src/style-spec/validate_style.min'; +import emptyStyle from '../../../rollup/build/tsc/style-spec/empty'; +import validateStyleMin from '../../../rollup/build/tsc/style-spec/validate_style.min'; test('it generates something', (t) => { const style = emptyStyle(); diff --git a/test/unit/style-spec/expression.test.js b/test/unit/style-spec/expression.test.js index 0936eef3ca..7e36da5555 100644 --- a/test/unit/style-spec/expression.test.js +++ b/test/unit/style-spec/expression.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; -import {createPropertyExpression} from '../../../src/style-spec/expression'; -import definitions from '../../../src/style-spec/expression/definitions'; -import v8 from '../../../src/style-spec/reference/v8'; +import {createPropertyExpression} from '../../../rollup/build/tsc/style-spec/expression'; +import definitions from '../../../rollup/build/tsc/style-spec/expression/definitions'; +import v8 from '../../../rollup/build/tsc/style-spec/reference/v8'; // filter out interal "error" and "filter-*" expressions from definition list const filterExpressionRegex = /filter-/; diff --git a/test/unit/style-spec/feature_filter.test.js b/test/unit/style-spec/feature_filter.test.js index 18410aa3eb..d6335973f3 100644 --- a/test/unit/style-spec/feature_filter.test.js +++ b/test/unit/style-spec/feature_filter.test.js @@ -1,10 +1,10 @@ import {test} from '../../util/test'; -import {default as createFilter, isExpressionFilter} from '../../../src/style-spec/feature_filter'; +import {default as createFilter, isExpressionFilter} from '../../../rollup/build/tsc/style-spec/feature_filter'; -import convertFilter from '../../../src/style-spec/feature_filter/convert'; -import Point from '../../../src/symbol/point'; -import MercatorCoordinate from '../../../src/geo/mercator_coordinate'; -import EXTENT from '../../../src/data/extent'; +import convertFilter from '../../../rollup/build/tsc/style-spec/feature_filter/convert'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import MercatorCoordinate from '../../../rollup/build/tsc/geo/mercator_coordinate'; +import EXTENT from '../../../rollup/build/tsc/data/extent'; test('filter', t => { t.test('expression, zoom', (t) => { diff --git a/test/unit/style-spec/format.test.js b/test/unit/style-spec/format.test.js index bfd619084b..6cf26b4847 100644 --- a/test/unit/style-spec/format.test.js +++ b/test/unit/style-spec/format.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import format from '../../../src/style-spec/format'; +import format from '../../../rollup/build/tsc/style-spec/format'; function roundtrip(style) { return JSON.parse(format(style)); diff --git a/test/unit/style-spec/function.test.js b/test/unit/style-spec/function.test.js index 9fa3facf1f..06183f6051 100644 --- a/test/unit/style-spec/function.test.js +++ b/test/unit/style-spec/function.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; -import {createFunction} from '../../../src/style-spec/function'; -import Color from '../../../src/style-spec/util/color'; -import Formatted from '../../../src/style-spec/expression/types/formatted'; +import {createFunction} from '../../../rollup/build/tsc/style-spec/function'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; +import Formatted from '../../../rollup/build/tsc/style-spec/expression/types/formatted'; import {equalWithPrecision} from '../../util'; test('binary search', (t) => { diff --git a/test/unit/style-spec/group_by_layout.test.js b/test/unit/style-spec/group_by_layout.test.js index cd5f5d457b..717c7678ac 100644 --- a/test/unit/style-spec/group_by_layout.test.js +++ b/test/unit/style-spec/group_by_layout.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import group from '../../../src/style-spec/group_by_layout'; +import group from '../../../rollup/build/tsc/style-spec/group_by_layout'; test('group layers whose ref properties are identical', (t) => { const a = { diff --git a/test/unit/style-spec/interpolate.test.js b/test/unit/style-spec/interpolate.test.js index 996fead20d..a68aff8d38 100644 --- a/test/unit/style-spec/interpolate.test.js +++ b/test/unit/style-spec/interpolate.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import * as interpolate from '../../../src/style-spec/util/interpolate'; -import Color from '../../../src/style-spec/util/color'; +import * as interpolate from '../../../rollup/build/tsc/style-spec/util/interpolate'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; test('interpolate.number', (t) => { t.equal(interpolate.number(0, 1, 0.5), 0.5); diff --git a/test/unit/style-spec/migrate.test.js b/test/unit/style-spec/migrate.test.js index af1f678430..e5888d7c55 100644 --- a/test/unit/style-spec/migrate.test.js +++ b/test/unit/style-spec/migrate.test.js @@ -2,26 +2,29 @@ import {test} from '../../util/test'; import fs from 'fs'; import glob from 'glob'; import path from 'path'; -import validate from '../../../src/style-spec/validate_style'; -import v8 from '../../../src/style-spec/reference/v8'; -import migrate from '../../../src/style-spec/migrate'; +import validate from '../../../rollup/build/tsc/style-spec/validate_style'; +import v8 from '../../../rollup/build/tsc/style-spec/reference/v8'; +import migrate from '../../../rollup/build/tsc/style-spec/migrate'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); /* eslint-disable import/namespace */ -import * as spec from '../../../src/style-spec/style-spec'; +import * as spec from '../../../rollup/build/tsc/style-spec/style-spec'; const UPDATE = !!process.env.UPDATE; test('does not migrate from version 5', (t) => { t.throws(() => { migrate({version: 5, layers: []}); - }, new Error('cannot migrate from', 5)); + }, new Error('Cannot migrate from 5')); t.end(); }); test('does not migrate from version 6', (t) => { t.throws(() => { migrate({version: 6, layers: []}); - }, new Error('cannot migrate from', 6)); + }, new Error('Cannot migrate from 6')); t.end(); }); diff --git a/test/unit/style-spec/migrate/v8.js b/test/unit/style-spec/migrate/v8.js index 0687d3f398..469513312c 100644 --- a/test/unit/style-spec/migrate/v8.js +++ b/test/unit/style-spec/migrate/v8.js @@ -1,5 +1,5 @@ import {test} from '../../../util/test'; -import migrate from '../../../../src/style-spec/migrate/v8'; +import migrate from '../../../../rollup/build/tsc/style-spec/migrate/v8'; test('split text-font', (t) => { const input = { diff --git a/test/unit/style-spec/migrate/v9.js b/test/unit/style-spec/migrate/v9.js index 51ab437195..4bb6554449 100644 --- a/test/unit/style-spec/migrate/v9.js +++ b/test/unit/style-spec/migrate/v9.js @@ -1,5 +1,5 @@ import {test} from '../../../util/test'; -import migrate from '../../../../src/style-spec/migrate/v9'; +import migrate from '../../../../rollup/build/tsc/style-spec/migrate/v9'; test('deref layers', (t) => { const input = { diff --git a/test/unit/style-spec/spec.test.js b/test/unit/style-spec/spec.test.js index b1baa143e6..a47533861d 100644 --- a/test/unit/style-spec/spec.test.js +++ b/test/unit/style-spec/spec.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; /* eslint-disable import/namespace */ -import * as spec from '../../../src/style-spec/style-spec'; +import * as spec from '../../../rollup/build/tsc/style-spec/style-spec'; ['v8', 'latest'].forEach((version) => { ['', 'min'].forEach((kind) => { diff --git a/test/unit/style-spec/stops.test.js b/test/unit/style-spec/stops.test.js index 8eaf756606..b720c44fae 100644 --- a/test/unit/style-spec/stops.test.js +++ b/test/unit/style-spec/stops.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {findStopLessThanOrEqualTo} from '../../../src/style-spec/expression/stops'; +import {findStopLessThanOrEqualTo} from '../../../rollup/build/tsc/style-spec/expression/stops'; test('findStopLessThanOrEqualTo', (t) => { test('When the input > all stops it returns the last stop.', (t) => { diff --git a/test/unit/style-spec/util/color_spaces.test.js b/test/unit/style-spec/util/color_spaces.test.js index 979e0a22db..a9884da7be 100644 --- a/test/unit/style-spec/util/color_spaces.test.js +++ b/test/unit/style-spec/util/color_spaces.test.js @@ -1,6 +1,6 @@ import {test} from '../../../util/test'; -import * as colorSpaces from '../../../../src/style-spec/util/color_spaces'; -import Color from '../../../../src/style-spec/util/color'; +import * as colorSpaces from '../../../../rollup/build/tsc/style-spec/util/color_spaces'; +import Color from '../../../../rollup/build/tsc/style-spec/util/color'; test('#hclToRgb zero', (t) => { const hclColor = {h: 0, c: 0, l: 0, alpha: null}; diff --git a/test/unit/style-spec/validate.test.js b/test/unit/style-spec/validate.test.js index 64fd3080d9..1ee065aaff 100644 --- a/test/unit/style-spec/validate.test.js +++ b/test/unit/style-spec/validate.test.js @@ -2,7 +2,10 @@ import {test} from '../../util/test'; import glob from 'glob'; import fs from 'fs'; import path from 'path'; -import validate from '../../../src/style-spec/validate_style'; +import validate from '../../../rollup/build/tsc/style-spec/validate_style'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); const UPDATE = !!process.env.UPDATE; @@ -20,7 +23,7 @@ glob.sync(`${__dirname}/fixture/*.input.json`).forEach((file) => { const fixtures = glob.sync(`${__dirname}/fixture/*.input.json`); const style = JSON.parse(fs.readFileSync(fixtures[0])); -import reference from '../../../src/style-spec/reference/latest'; +import reference from '../../../rollup/build/tsc/style-spec/reference/latest'; test('validate.parsed exists', (t) => { t.equal(typeof validate.parsed, 'function'); diff --git a/test/unit/style/format_section_override.test.js b/test/unit/style/format_section_override.test.js index 292f937489..a967bc6d45 100644 --- a/test/unit/style/format_section_override.test.js +++ b/test/unit/style/format_section_override.test.js @@ -1,9 +1,10 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import {createExpression, ZoomConstantExpression} from '../../../src/style-spec/expression'; -import EvaluationContext from '../../../src/style-spec/expression/evaluation_context'; -import properties from '../../../src/style/style_layer/symbol_style_layer_properties'; -import {PossiblyEvaluatedPropertyValue} from '../../../src/style/properties'; -import FormatSectionOverride from '../../../src/style/format_section_override'; +import {createExpression, ZoomConstantExpression} from '../../../rollup/build/tsc/style-spec/expression'; +import EvaluationContext from '../../../rollup/build/tsc/style-spec/expression/evaluation_context'; +import properties from '../../../rollup/build/tsc/style/style_layer/symbol_style_layer_properties'; +import {PossiblyEvaluatedPropertyValue} from '../../../rollup/build/tsc/style/properties'; +import FormatSectionOverride from '../../../rollup/build/tsc/style/format_section_override'; test('evaluate', (t) => { diff --git a/test/unit/style/light.test.js b/test/unit/style/light.test.js index 584d42cf6a..c4d1c029e9 100644 --- a/test/unit/style/light.test.js +++ b/test/unit/style/light.test.js @@ -1,8 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Light from '../../../src/style/light'; -import styleSpec from '../../../src/style-spec/reference/latest'; -import Color from '../../../src/style-spec/util/color'; -import {sphericalToCartesian} from '../../../src/util/util'; +import Light from '../../../rollup/build/tsc/style/light'; +import styleSpec from '../../../rollup/build/tsc/style-spec/reference/latest'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; +import {sphericalToCartesian} from '../../../rollup/build/tsc/util/util'; const spec = styleSpec.light; diff --git a/test/unit/style/load_glyph_range.test.js b/test/unit/style/load_glyph_range.test.js index ee055e3096..5cc310d192 100644 --- a/test/unit/style/load_glyph_range.test.js +++ b/test/unit/style/load_glyph_range.test.js @@ -1,24 +1,25 @@ -// @flow - +import '../../stub_loader'; import {test} from '../../util/test'; import fs from 'fs'; import path from 'path'; -import window from '../../../src/util/window'; -import {RequestManager} from '../../../src/util/mapbox'; -import loadGlyphRange from '../../../src/style/load_glyph_range'; +import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; +import loadGlyphRange from '../../../rollup/build/tsc/style/load_glyph_range'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); test('loadGlyphRange', (t) => { window.useFakeXMLHttpRequest(); t.tearDown(() => { - window.restore(); + window.clearFakeXMLHttpRequest(); }); const transform = t.stub().callsFake((url) => ({url})); const manager = new RequestManager(transform); let request; - window.XMLHttpRequest.onCreate = (req) => { request = req; }; + XMLHttpRequest.onCreate = (req) => { request = req; }; loadGlyphRange('Arial Unicode MS', 0, 'https://localhost/fonts/v1/{fontstack}/{range}.pbf', manager, (err, result) => { t.ifError(err); diff --git a/test/unit/style/style.test.js b/test/unit/style/style.test.js index ffe0bc968a..a2f9ecb380 100644 --- a/test/unit/style/style.test.js +++ b/test/unit/style/style.test.js @@ -1,20 +1,19 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import assert from 'assert'; -import Style from '../../../src/style/style'; -import SourceCache from '../../../src/source/source_cache'; -import StyleLayer from '../../../src/style/style_layer'; -import Transform from '../../../src/geo/transform'; -import {extend} from '../../../src/util/util'; -import {RequestManager} from '../../../src/util/mapbox'; -import {Event, Evented} from '../../../src/util/evented'; -import window from '../../../src/util/window'; +import Style from '../../../rollup/build/tsc/style/style'; +import SourceCache from '../../../rollup/build/tsc/source/source_cache'; +import StyleLayer from '../../../rollup/build/tsc/style/style_layer'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; +import {Event, Evented} from '../../../rollup/build/tsc/util/evented'; import { setRTLTextPlugin, clearRTLTextPlugin, evented as rtlTextPluginEvented -} from '../../../src/source/rtl_text_plugin'; -import browser from '../../../src/util/browser'; -import {OverscaledTileID} from '../../../src/source/tile_id'; +} from '../../../rollup/build/tsc/source/rtl_text_plugin'; +import browser from '../../../rollup/build/tsc/util/browser'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; function createStyleJSON(properties) { return extend({ @@ -58,14 +57,15 @@ class StubMap extends Evented { test('Style', (t) => { t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); + window.clearFakeWorkerPresence(); callback(); }); t.test('registers plugin state change listener', (t) => { clearRTLTextPlugin(); window.useFakeXMLHttpRequest(); - window.fakeWorkerPresence(); + window.useFakeWorkerPresence(); t.spy(Style, 'registerForPluginStateChange'); const style = new Style(new StubMap()); t.spy(style.dispatcher, 'broadcast'); @@ -83,9 +83,7 @@ test('Style', (t) => { t.test('loads plugin immediately if already registered', (t) => { clearRTLTextPlugin(); window.useFakeXMLHttpRequest(); - window.fakeWorkerPresence(); - window.URL.createObjectURL = () => 'blob:'; - t.tearDown(() => delete window.URL.createObjectURL); + window.useFakeWorkerPresence(); window.server.respondWith('/plugin.js', "doesn't matter"); let firstError = true; setRTLTextPlugin("/plugin.js", (error) => { @@ -95,6 +93,7 @@ test('Style', (t) => { t.equals(error.message, 'RTL Text Plugin failed to import scripts from /plugin.js'); t.end(); window.clearFakeWorkerPresence(); + window.clearFakeXMLHttpRequest(); firstError = false; } }); @@ -112,7 +111,7 @@ test('Style#loadURL', (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -184,7 +183,7 @@ test('Style#loadURL', (t) => { test('Style#loadJSON', (t) => { t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -219,27 +218,19 @@ test('Style#loadJSON', (t) => { // Stubbing to bypass Web APIs that supported by jsdom: // * `URL.createObjectURL` in ajax.getImage (https://github.com/tmpvar/jsdom/issues/1721) // * `canvas.getContext('2d')` in browser.getImageData - t.stub(window.URL, 'revokeObjectURL'); t.stub(browser, 'getImageData'); // stub Image so we can invoke 'onload' // https://github.com/jsdom/jsdom/commit/58a7028d0d5b6aacc5b435daee9fd8f9eacbb14c - const img = {}; - t.stub(window, 'Image').returns(img); - // stub this manually because sinon does not stub non-existent methods - assert(!window.URL.createObjectURL); - window.URL.createObjectURL = () => 'blob:'; - t.tearDown(() => delete window.URL.createObjectURL); // fake the image request (sinon doesn't allow non-string data for // server.respondWith, so we do so manually) const requests = []; - window.XMLHttpRequest.onCreate = req => { requests.push(req); }; + XMLHttpRequest.onCreate = req => { requests.push(req); }; const respond = () => { let req = requests.find(req => req.url === 'http://example.com/sprite.png'); req.setStatus(200); req.response = new ArrayBuffer(8); req.onload(); - img.onload(); req = requests.find(req => req.url === 'http://example.com/sprite.json'); req.setStatus(200); @@ -518,7 +509,7 @@ test('Style#setState', (t) => { t.stub(style, 'removeSource').callsFake(() => t.fail('removeSource called')); t.stub(style, 'addSource').callsFake(() => t.fail('addSource called')); style.setState(initial); - window.restore(); + window.clearFakeXMLHttpRequest(); t.end(); }); window.server.respond(); diff --git a/test/unit/style/style_layer.test.js b/test/unit/style/style_layer.test.js index 8d682f164a..1ecf77d60e 100644 --- a/test/unit/style/style_layer.test.js +++ b/test/unit/style/style_layer.test.js @@ -1,8 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import createStyleLayer from '../../../src/style/create_style_layer'; -import FillStyleLayer from '../../../src/style/style_layer/fill_style_layer'; -import {extend} from '../../../src/util/util'; -import Color from '../../../src/style-spec/util/color'; +import createStyleLayer from '../../../rollup/build/tsc/style/create_style_layer'; +import FillStyleLayer from '../../../rollup/build/tsc/style/style_layer/fill_style_layer'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import Color from '../../../rollup/build/tsc/style-spec/util/color'; test('StyleLayer', (t) => { t.test('instantiates the correct subclass', (t) => { diff --git a/test/unit/style/style_layer/fill_extrusion_style_layer.js b/test/unit/style/style_layer/fill_extrusion_style_layer.test.js similarity index 85% rename from test/unit/style/style_layer/fill_extrusion_style_layer.js rename to test/unit/style/style_layer/fill_extrusion_style_layer.test.js index 894891e36d..7844a6e067 100644 --- a/test/unit/style/style_layer/fill_extrusion_style_layer.js +++ b/test/unit/style/style_layer/fill_extrusion_style_layer.test.js @@ -1,6 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import {getIntersectionDistance} from '../../../../src/style/style_layer/fill_extrusion_style_layer'; -import Point from '../../../../src/symbol/point'; +import {getIntersectionDistance} from '../../../../rollup/build/tsc/style/style_layer/fill_extrusion_style_layer'; +import Point from '../../../../rollup/build/tsc/symbol/point'; test('getIntersectionDistance', (t) => { const queryPoint = [new Point(100, 100)]; diff --git a/test/unit/style/style_layer_index.test.js b/test/unit/style/style_layer_index.test.js index 90f9aa32bf..1a46cf0c95 100644 --- a/test/unit/style/style_layer_index.test.js +++ b/test/unit/style/style_layer_index.test.js @@ -1,6 +1,7 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import {mapObject} from '../../../src/util/util'; -import StyleLayerIndex from '../../../src/style/style_layer_index'; +import {mapObject} from '../../../rollup/build/tsc/util/util'; +import StyleLayerIndex from '../../../rollup/build/tsc/style/style_layer_index'; test('StyleLayerIndex#replace', (t) => { const index = new StyleLayerIndex([ diff --git a/test/unit/symbol/anchor.test.js b/test/unit/symbol/anchor.test.js index 1c97500f71..ebe9ed0a17 100644 --- a/test/unit/symbol/anchor.test.js +++ b/test/unit/symbol/anchor.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Anchor from '../../../src/symbol/anchor'; +import Anchor from '../../../rollup/build/tsc/symbol/anchor'; test('Anchor', (t) => { t.test('#constructor', (t) => { diff --git a/test/unit/symbol/check_max_angle.test.js b/test/unit/symbol/check_max_angle.test.js index c17091bc22..b016a15ef7 100644 --- a/test/unit/symbol/check_max_angle.test.js +++ b/test/unit/symbol/check_max_angle.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import checkMaxAngle from '../../../src/symbol/check_max_angle'; -import Anchor from '../../../src/symbol/anchor'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import checkMaxAngle from '../../../rollup/build/tsc/symbol/check_max_angle'; +import Anchor from '../../../rollup/build/tsc/symbol/anchor'; test('line with no sharp angles', (t) => { const line = [ new Point(0, 0), new Point(20, -1), new Point(40, 1), new Point(60, 0) ]; diff --git a/test/unit/symbol/clip_line.test.js b/test/unit/symbol/clip_line.test.js index 7532051517..04e3eab67f 100644 --- a/test/unit/symbol/clip_line.test.js +++ b/test/unit/symbol/clip_line.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import clipLine from '../../../src/symbol/clip_line'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import clipLine from '../../../rollup/build/tsc/symbol/clip_line'; test('clipLines', (t) => { diff --git a/test/unit/symbol/collision_feature.js b/test/unit/symbol/collision_feature.test.js similarity index 90% rename from test/unit/symbol/collision_feature.js rename to test/unit/symbol/collision_feature.test.js index fa957225e6..824a376061 100644 --- a/test/unit/symbol/collision_feature.js +++ b/test/unit/symbol/collision_feature.test.js @@ -1,8 +1,8 @@ import {test} from '../../util/test'; -import CollisionFeature from '../../../src/symbol/collision_feature'; -import Anchor from '../../../src/symbol/anchor'; -import Point from '../../../src/symbol/point'; -import {CollisionBoxArray} from '../../../src/data/array_types'; +import CollisionFeature from '../../../rollup/build/tsc/symbol/collision_feature'; +import Anchor from '../../../rollup/build/tsc/symbol/anchor'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import {CollisionBoxArray} from '../../../rollup/build/tsc/data/array_types'; test('CollisionFeature', (t) => { diff --git a/test/unit/symbol/cross_tile_symbol_index.js b/test/unit/symbol/cross_tile_symbol_index.test.js similarity index 98% rename from test/unit/symbol/cross_tile_symbol_index.js rename to test/unit/symbol/cross_tile_symbol_index.test.js index 492a6aafb9..e415ffc150 100644 --- a/test/unit/symbol/cross_tile_symbol_index.js +++ b/test/unit/symbol/cross_tile_symbol_index.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import CrossTileSymbolIndex from '../../../src/symbol/cross_tile_symbol_index'; -import {OverscaledTileID} from '../../../src/source/tile_id'; +import CrossTileSymbolIndex from '../../../rollup/build/tsc/symbol/cross_tile_symbol_index'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; const styleLayer = { id: 'test' diff --git a/test/unit/symbol/get_anchors.test.js b/test/unit/symbol/get_anchors.test.js index ba5b59d1c3..150f79244d 100644 --- a/test/unit/symbol/get_anchors.test.js +++ b/test/unit/symbol/get_anchors.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import {getAnchors, getCenterAnchor} from '../../../src/symbol/get_anchors'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import {getAnchors, getCenterAnchor} from '../../../rollup/build/tsc/symbol/get_anchors'; const TILE_EXTENT = 4096; diff --git a/test/unit/symbol/grid_index.test.js b/test/unit/symbol/grid_index.test.js index 7c6073b14e..ed3c131429 100644 --- a/test/unit/symbol/grid_index.test.js +++ b/test/unit/symbol/grid_index.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import GridIndex from '../../../src/symbol/grid_index'; +import GridIndex from '../../../rollup/build/tsc/symbol/grid_index'; test('GridIndex', (t) => { diff --git a/test/unit/symbol/mergelines.test.js b/test/unit/symbol/mergelines.test.js index 9150f2a94a..4be6883a11 100644 --- a/test/unit/symbol/mergelines.test.js +++ b/test/unit/symbol/mergelines.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import mergeLines from '../../../src/symbol/mergelines'; -import Point from '../../../src/symbol/point'; +import mergeLines from '../../../rollup/build/tsc/symbol/mergelines'; +import Point from '../../../rollup/build/tsc/symbol/point'; function makeFeatures(lines) { const features = []; diff --git a/test/unit/symbol/path_interpolator.test.js b/test/unit/symbol/path_interpolator.test.js index fffc1de380..60d87c8344 100644 --- a/test/unit/symbol/path_interpolator.test.js +++ b/test/unit/symbol/path_interpolator.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import PathInterpolator from '../../../src/symbol/path_interpolator'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import PathInterpolator from '../../../rollup/build/tsc/symbol/path_interpolator'; test('PathInterpolator', (t) => { diff --git a/test/unit/symbol/quads.test.js b/test/unit/symbol/quads.test.js index 3c3135e7b6..71e91846fb 100644 --- a/test/unit/symbol/quads.test.js +++ b/test/unit/symbol/quads.test.js @@ -1,5 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import {getIconQuads} from '../../../src/symbol/quads'; +import {getIconQuads} from '../../../rollup/build/tsc/symbol/quads'; test('getIconQuads', (t) => { const image = Object.freeze({ diff --git a/test/unit/symbol/shaping.test.js b/test/unit/symbol/shaping.test.js index f427d516f1..37a17261c2 100644 --- a/test/unit/symbol/shaping.test.js +++ b/test/unit/symbol/shaping.test.js @@ -1,10 +1,15 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import fs from 'fs'; import path from 'path'; -import * as shaping from '../../../src/symbol/shaping'; -import Formatted, {FormattedSection} from '../../../src/style-spec/expression/types/formatted'; -import ResolvedImage from '../../../src/style-spec/expression/types/resolved_image'; -import {ImagePosition} from '../../../src/render/image_atlas'; +import * as shaping from '../../../rollup/build/tsc/symbol/shaping'; +import Formatted, {FormattedSection} from '../../../rollup/build/tsc/style-spec/expression/types/formatted'; +import ResolvedImage from '../../../rollup/build/tsc/style-spec/expression/types/resolved_image'; +import expectedJson from '../../expected/text-shaping-linebreak.json'; +import {ImagePosition} from '../../../rollup/build/tsc/render/image_atlas'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); const WritingMode = shaping.WritingMode; let UPDATE = false; @@ -57,7 +62,7 @@ test('shaping', (t) => { // Line break. shaped = shaping.shapeText(Formatted.fromString('abcde abcde'), glyphs, glyphPositions, images, fontStack, 4 * oneEm, oneEm, 'center', 'center', 0 * oneEm, [0, 0], WritingMode.horizontal, false, 'point', layoutTextSize, layoutTextSizeThisZoom); if (UPDATE) fs.writeFileSync(path.join(__dirname, '/../../expected/text-shaping-linebreak.json'), JSON.stringify(shaped, null, 2)); - t.deepEqual(shaped, require('../../expected/text-shaping-linebreak.json')); + t.deepEqual(shaped, expectedJson); const expectedNewLine = JSON.parse(fs.readFileSync(path.join(__dirname, '/../../expected/text-shaping-newline.json'))); diff --git a/test/unit/symbol/symbol_style_layer.test.js b/test/unit/symbol/symbol_style_layer.test.js index 982d912c99..f44e26e8cc 100644 --- a/test/unit/symbol/symbol_style_layer.test.js +++ b/test/unit/symbol/symbol_style_layer.test.js @@ -1,7 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import SymbolStyleLayer from '../../../src/style/style_layer/symbol_style_layer'; -import FormatSectionOverride from '../../../src/style/format_section_override'; -import properties from '../../../src/style/style_layer/symbol_style_layer_properties'; +import SymbolStyleLayer from '../../../rollup/build/tsc/style/style_layer/symbol_style_layer'; +import FormatSectionOverride from '../../../rollup/build/tsc/style/format_section_override'; +import properties from '../../../rollup/build/tsc/style/style_layer/symbol_style_layer_properties'; function createSymbolLayer(layerProperties) { const layer = new SymbolStyleLayer(layerProperties); diff --git a/test/unit/ui/camera.test.js b/test/unit/ui/camera.test.js index 1286f7c138..9ed2869aea 100644 --- a/test/unit/ui/camera.test.js +++ b/test/unit/ui/camera.test.js @@ -1,8 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Camera from '../../../src/ui/camera'; -import Transform from '../../../src/geo/transform'; -import TaskQueue from '../../../src/util/task_queue'; -import browser from '../../../src/util/browser'; +import Camera from '../../../rollup/build/tsc/ui/camera'; +import Transform from '../../../rollup/build/tsc/geo/transform'; +import TaskQueue from '../../../rollup/build/tsc/util/task_queue'; +import browser from '../../../rollup/build/tsc/util/browser'; import {fixedLngLat, fixedNum} from '../../util/fixed'; import {equalWithPrecision} from '../../util'; diff --git a/test/unit/ui/control/attribution.test.js b/test/unit/ui/control/attribution.test.js index 9fc9316e41..48f8f15ac1 100644 --- a/test/unit/ui/control/attribution.test.js +++ b/test/unit/ui/control/attribution.test.js @@ -1,6 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import config from '../../../../src/util/config'; -import AttributionControl from '../../../../src/ui/control/attribution_control'; +import config from '../../../../rollup/build/tsc/util/config'; +import AttributionControl from '../../../../rollup/build/tsc/ui/control/attribution_control'; import {createMap as globalCreateMap} from '../../../util'; import simulate from '../../../util/simulate_interaction'; diff --git a/test/unit/ui/control/fullscreen.test.js b/test/unit/ui/control/fullscreen.test.js index 880f499956..204b2bc4a6 100644 --- a/test/unit/ui/control/fullscreen.test.js +++ b/test/unit/ui/control/fullscreen.test.js @@ -1,7 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; import {createMap} from '../../../util'; -import FullscreenControl from '../../../../src/ui/control/fullscreen_control'; +import FullscreenControl from '../../../../rollup/build/tsc/ui/control/fullscreen_control'; test('FullscreenControl appears when fullscreen is enabled', (t) => { window.document.fullscreenEnabled = true; diff --git a/test/unit/ui/control/geolocate.test.js b/test/unit/ui/control/geolocate.test.js index 7d2b2c8413..b44c7122da 100644 --- a/test/unit/ui/control/geolocate.test.js +++ b/test/unit/ui/control/geolocate.test.js @@ -1,18 +1,11 @@ +import '../../../stub_loader'; +import geolocation from 'mock-geolocation'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; import {createMap} from '../../../util'; -import GeolocateControl from '../../../../src/ui/control/geolocate_control'; +import GeolocateControl from '../../../../rollup/build/tsc/ui/control/geolocate_control'; -// window and navigator globals need to be set for mock-geolocation -global.window = {}; -global.navigator = {}; -const geolocation = require('mock-geolocation'); // eslint-disable-line import/no-commonjs geolocation.use(); -// assign the mock geolocation to window -global.window.navigator = global.navigator; -window.navigator.geolocation = global.window.navigator.geolocation; - // convert the coordinates of a LngLat object to a fixed number of digits function lngLatAsFixed(lngLat, digits) { return Object.keys(lngLat).reduce((previous, current) => { diff --git a/test/unit/ui/control/logo.test.js b/test/unit/ui/control/logo.test.js index d31ece295a..323c92ab66 100644 --- a/test/unit/ui/control/logo.test.js +++ b/test/unit/ui/control/logo.test.js @@ -1,6 +1,6 @@ import {test} from '../../../util/test'; import {createMap as globalCreateMap} from '../../../util'; -import VectorTileSource from '../../../../src/source/vector_tile_source'; +import VectorTileSource from '../../../../rollup/build/tsc/source/vector_tile_source'; function createMap(t, logoPosition, logoRequired) { return globalCreateMap(t, { diff --git a/test/unit/ui/control/scale.test.js b/test/unit/ui/control/scale.test.js index 504f7457a9..a1d6f2f106 100644 --- a/test/unit/ui/control/scale.test.js +++ b/test/unit/ui/control/scale.test.js @@ -1,7 +1,7 @@ import {test} from '../../../util/test'; import {createMap} from '../../../util'; -import ScaleControl from '../../../../src/ui/control/scale_control'; +import ScaleControl from '../../../../rollup/build/tsc/ui/control/scale_control'; test('ScaleControl appears in bottom-left by default', (t) => { const map = createMap(t); diff --git a/test/unit/ui/handler/box_zoom.test.js b/test/unit/ui/handler/box_zoom.test.js index d70f24477b..8823f818d7 100644 --- a/test/unit/ui/handler/box_zoom.test.js +++ b/test/unit/ui/handler/box_zoom.test.js @@ -1,7 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap(clickTolerance) { diff --git a/test/unit/ui/handler/dblclick_zoom.test.js b/test/unit/ui/handler/dblclick_zoom.test.js index a12e910d17..742159452a 100644 --- a/test/unit/ui/handler/dblclick_zoom.test.js +++ b/test/unit/ui/handler/dblclick_zoom.test.js @@ -1,7 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap() { diff --git a/test/unit/ui/handler/drag_pan.test.js b/test/unit/ui/handler/drag_pan.test.js index f740536b0e..b1e4dd0f11 100644 --- a/test/unit/ui/handler/drag_pan.test.js +++ b/test/unit/ui/handler/drag_pan.test.js @@ -1,7 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap(clickTolerance, dragPan) { diff --git a/test/unit/ui/handler/drag_rotate.test.js b/test/unit/ui/handler/drag_rotate.test.js index 7cd7061b45..9d46703790 100644 --- a/test/unit/ui/handler/drag_rotate.test.js +++ b/test/unit/ui/handler/drag_rotate.test.js @@ -1,10 +1,10 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import {extend} from '../../../../src/util/util'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import {extend} from '../../../../rollup/build/tsc/util/util'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; -import browser from '../../../../src/util/browser'; +import browser from '../../../../rollup/build/tsc/util/browser'; function createMap(options) { return new Map(extend({container: DOM.create('div', '', window.document.body)}, options)); diff --git a/test/unit/ui/handler/keyboard.test.js b/test/unit/ui/handler/keyboard.test.js index bec31a0177..1e94c696a5 100644 --- a/test/unit/ui/handler/keyboard.test.js +++ b/test/unit/ui/handler/keyboard.test.js @@ -1,9 +1,9 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; -import window from '../../../../src/util/window'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; -import {extend} from '../../../../src/util/util'; +import {extend} from '../../../../rollup/build/tsc/util/util'; function createMap(options) { return new Map(extend({ diff --git a/test/unit/ui/handler/map_event.test.js b/test/unit/ui/handler/map_event.test.js index d3e247bc50..5ceaec9cab 100644 --- a/test/unit/ui/handler/map_event.test.js +++ b/test/unit/ui/handler/map_event.test.js @@ -1,7 +1,7 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap() { diff --git a/test/unit/ui/handler/mouse_rotate.test.js b/test/unit/ui/handler/mouse_rotate.test.js index 308d9e9715..d26cf5057c 100644 --- a/test/unit/ui/handler/mouse_rotate.test.js +++ b/test/unit/ui/handler/mouse_rotate.test.js @@ -1,10 +1,10 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import {extend} from '../../../../src/util/util'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import {extend} from '../../../../rollup/build/tsc/util/util'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; -import browser from '../../../../src/util/browser'; +import browser from '../../../../rollup/build/tsc/util/browser'; function createMap(options) { return new Map(extend({container: DOM.create('div', '', window.document.body)}, options)); diff --git a/test/unit/ui/handler/scroll_zoom.test.js b/test/unit/ui/handler/scroll_zoom.test.js index fba8c7cae1..90cb687f80 100644 --- a/test/unit/ui/handler/scroll_zoom.test.js +++ b/test/unit/ui/handler/scroll_zoom.test.js @@ -1,8 +1,8 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import browser from '../../../../src/util/browser'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import browser from '../../../../rollup/build/tsc/util/browser'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; import {equalWithPrecision} from '../../../util'; import sinon from 'sinon'; diff --git a/test/unit/ui/handler/touch_zoom_rotate.test.js b/test/unit/ui/handler/touch_zoom_rotate.test.js index ae3ece5035..ef44523ee9 100644 --- a/test/unit/ui/handler/touch_zoom_rotate.test.js +++ b/test/unit/ui/handler/touch_zoom_rotate.test.js @@ -1,8 +1,8 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import Marker from '../../../../src/ui/marker'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import Marker from '../../../../rollup/build/tsc/ui/marker'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap() { diff --git a/test/unit/ui/hash.test.js b/test/unit/ui/hash.test.js index e1be22ab4e..c4cbb38710 100644 --- a/test/unit/ui/hash.test.js +++ b/test/unit/ui/hash.test.js @@ -1,6 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Hash from '../../../src/ui/hash'; -import window from '../../../src/util/window'; +import Hash from '../../../rollup/build/tsc/ui/hash'; import {createMap as globalCreateMap} from '../../util'; test('hash', (t) => { diff --git a/test/unit/ui/map.test.js b/test/unit/ui/map.test.js index 1aa9cf79f6..b41a25cb1d 100755 --- a/test/unit/ui/map.test.js +++ b/test/unit/ui/map.test.js @@ -1,12 +1,12 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import {extend} from '../../../src/util/util'; -import window from '../../../src/util/window'; -import Map from '../../../src/ui/map'; +import {extend} from '../../../rollup/build/tsc/util/util'; +import Map from '../../../rollup/build/tsc/ui/map'; import {createMap} from '../../util'; -import LngLat from '../../../src/geo/lng_lat'; -import Tile from '../../../src/source/tile'; -import {OverscaledTileID} from '../../../src/source/tile_id'; -import {Event, ErrorEvent} from '../../../src/util/evented'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import Tile from '../../../rollup/build/tsc/source/tile'; +import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; +import {Event, ErrorEvent} from '../../../rollup/build/tsc/util/evented'; import simulate from '../../util/simulate_interaction'; import {fixedLngLat, fixedNum} from '../../util/fixed'; @@ -27,7 +27,7 @@ test('Map', (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); diff --git a/test/unit/ui/map/isMoving.test.js b/test/unit/ui/map/isMoving.test.js index 49c0869559..c20576056f 100644 --- a/test/unit/ui/map/isMoving.test.js +++ b/test/unit/ui/map/isMoving.test.js @@ -1,8 +1,8 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import browser from '../../../../src/util/browser'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import browser from '../../../../rollup/build/tsc/util/browser'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap() { diff --git a/test/unit/ui/map/isRotating.test.js b/test/unit/ui/map/isRotating.test.js index d74ede0d6a..f943b6fcb0 100644 --- a/test/unit/ui/map/isRotating.test.js +++ b/test/unit/ui/map/isRotating.test.js @@ -1,9 +1,9 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; -import browser from '../../../../src/util/browser'; +import browser from '../../../../rollup/build/tsc/util/browser'; function createMap() { return new Map({container: DOM.create('div', '', window.document.body)}); diff --git a/test/unit/ui/map/isZooming.test.js b/test/unit/ui/map/isZooming.test.js index 1203d61c5a..a954ae37d5 100644 --- a/test/unit/ui/map/isZooming.test.js +++ b/test/unit/ui/map/isZooming.test.js @@ -1,8 +1,8 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; -import browser from '../../../../src/util/browser'; -import window from '../../../../src/util/window'; -import Map from '../../../../src/ui/map'; -import DOM from '../../../../src/util/dom'; +import browser from '../../../../rollup/build/tsc/util/browser'; +import Map from '../../../../rollup/build/tsc/ui/map'; +import DOM from '../../../../rollup/build/tsc/util/dom'; import simulate from '../../../util/simulate_interaction'; function createMap() { diff --git a/test/unit/ui/map/requestRenderFrame.test.js b/test/unit/ui/map/requestRenderFrame.test.js index 8799ee0b46..f38fc41264 100644 --- a/test/unit/ui/map/requestRenderFrame.test.js +++ b/test/unit/ui/map/requestRenderFrame.test.js @@ -1,3 +1,4 @@ +import '../../../stub_loader'; import {test} from '../../../util/test'; import {createMap} from '../../../util'; diff --git a/test/unit/ui/marker.test.js b/test/unit/ui/marker.test.js index a570db1cab..26473a104b 100644 --- a/test/unit/ui/marker.test.js +++ b/test/unit/ui/marker.test.js @@ -1,10 +1,10 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import window from '../../../src/util/window'; import {createMap as globalCreateMap} from '../../util'; -import Marker from '../../../src/ui/marker'; -import Popup from '../../../src/ui/popup'; -import LngLat from '../../../src/geo/lng_lat'; -import Point from '../../../src/symbol/point'; +import Marker from '../../../rollup/build/tsc/ui/marker'; +import Popup from '../../../rollup/build/tsc/ui/popup'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import Point from '../../../rollup/build/tsc/symbol/point'; import simulate from '../../util/simulate_interaction'; function createMap(t, options = {}) { diff --git a/test/unit/ui/popup.test.js b/test/unit/ui/popup.test.js index b791ddc0ce..2f44cbe7f3 100644 --- a/test/unit/ui/popup.test.js +++ b/test/unit/ui/popup.test.js @@ -1,9 +1,9 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import window from '../../../src/util/window'; import {createMap as globalCreateMap} from '../../util'; -import Popup from '../../../src/ui/popup'; -import LngLat from '../../../src/geo/lng_lat'; -import Point from '../../../src/symbol/point'; +import Popup from '../../../rollup/build/tsc/ui/popup'; +import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; +import Point from '../../../rollup/build/tsc/symbol/point'; import simulate from '../../util/simulate_interaction'; const containerWidth = 512; diff --git a/test/unit/util/actor.test.js b/test/unit/util/actor.test.js index 8b91db3324..52d993bb46 100644 --- a/test/unit/util/actor.test.js +++ b/test/unit/util/actor.test.js @@ -1,6 +1,7 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Actor from '../../../src/util/actor'; -import WebWorker from '../../../src/util/web_worker'; +import Actor from '../../../rollup/build/tsc/util/actor'; +import WebWorker from '../../../rollup/build/tsc/util/web_worker'; test('Actor', (t) => { t.test('forwards resopnses to correct callback', (t) => { diff --git a/test/unit/util/ajax.test.js b/test/unit/util/ajax.test.js index f7e3bed777..9888022ac3 100644 --- a/test/unit/util/ajax.test.js +++ b/test/unit/util/ajax.test.js @@ -1,3 +1,4 @@ +import '../../stub_loader'; import {test} from '../../util/test'; import { getArrayBuffer, @@ -5,10 +6,9 @@ import { postData, getImage, resetImageRequestQueue -} from '../../../src/util/ajax'; -import window from '../../../src/util/window'; -import config from '../../../src/util/config'; -import webpSupported from '../../../src/util/webp_supported'; +} from '../../../rollup/build/tsc/util/ajax'; +import config from '../../../rollup/build/tsc/util/config'; +import webpSupported from '../../../rollup/build/tsc/util/webp_supported'; test('ajax', (t) => { t.beforeEach(callback => { @@ -17,7 +17,7 @@ test('ajax', (t) => { }); t.afterEach(callback => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -106,21 +106,10 @@ test('ajax', (t) => { const maxRequests = config.MAX_PARALLEL_IMAGE_REQUESTS; - // jsdom doesn't call image onload; fake it https://github.com/jsdom/jsdom/issues/1816 - const jsdomImage = window.Image; - window.Image = class { - set src(src) { - setTimeout(() => { - if (this.onload) this.onload(); - }); - } - }; - function callback(err) { if (err) return; // last request is only added after we got a response from one of the previous ones t.equals(window.server.requests.length, maxRequests + 1); - window.Image = jsdomImage; t.end(); } @@ -139,19 +128,10 @@ test('ajax', (t) => { const maxRequests = config.MAX_PARALLEL_IMAGE_REQUESTS; - // jsdom doesn't call image onload; fake it https://github.com/jsdom/jsdom/issues/1816 - const jsdomImage = window.Image; - window.Image = class { - set src(src) { - setTimeout(() => this.onload()); - } - }; - for (let i = 0; i < maxRequests + 1; i++) { getImage({url: ''}, () => t.fail).cancel(); } t.equals(window.server.requests.length, maxRequests + 1); - window.Image = jsdomImage; t.end(); }); @@ -199,15 +179,6 @@ test('ajax', (t) => { // mock webp support webpSupported.supported = true; - // jsdom doesn't call image onload; fake it https://github.com/jsdom/jsdom/issues/1816 - window.Image = class { - set src(src) { - setTimeout(() => { - if (this.onload) this.onload(); - }); - } - }; - getImage({url: ''}, () => { t.end(); }); window.server.respond(); diff --git a/test/unit/util/browser.test.js b/test/unit/util/browser.test.js index 4a482d5319..2983071721 100644 --- a/test/unit/util/browser.test.js +++ b/test/unit/util/browser.test.js @@ -1,5 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import browser from '../../../src/util/browser'; +import browser from '../../../rollup/build/tsc/util/browser'; test('browser', (t) => { t.test('frame', (t) => { diff --git a/test/unit/util/classify_rings.test.js b/test/unit/util/classify_rings.test.js index 6434d99ac1..ff4bc61f24 100644 --- a/test/unit/util/classify_rings.test.js +++ b/test/unit/util/classify_rings.test.js @@ -3,7 +3,10 @@ import fs from 'fs'; import path from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import classifyRings from '../../../src/util/classify_rings'; +import classifyRings from '../../../rollup/build/tsc/util/classify_rings'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); // Load a fill feature from fixture tile. const vt = new VectorTile(new Protobuf(fs.readFileSync(path.join(__dirname, '/../../fixtures/mbsv5-6-18-23.vector.pbf')))); diff --git a/test/unit/util/color_ramp.test.js b/test/unit/util/color_ramp.test.js index b55e26e629..e1bf66dbec 100644 --- a/test/unit/util/color_ramp.test.js +++ b/test/unit/util/color_ramp.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; -import {renderColorRamp} from '../../../src/util/color_ramp'; -import {createPropertyExpression} from '../../../src/style-spec/expression'; +import {renderColorRamp} from '../../../rollup/build/tsc/util/color_ramp'; +import {createPropertyExpression} from '../../../rollup/build/tsc/style-spec/expression'; const spec = { 'function': true, diff --git a/test/unit/util/dispatcher.test.js b/test/unit/util/dispatcher.test.js index 0fc7db0e4a..cefa3a7d9f 100644 --- a/test/unit/util/dispatcher.test.js +++ b/test/unit/util/dispatcher.test.js @@ -1,7 +1,8 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import Dispatcher from '../../../src/util/dispatcher'; -import WebWorker from '../../../src/util/web_worker'; -import WorkerPool from '../../../src/util/worker_pool'; +import Dispatcher from '../../../rollup/build/tsc/util/dispatcher'; +import WebWorker from '../../../rollup/build/tsc/util/web_worker'; +import WorkerPool from '../../../rollup/build/tsc/util/worker_pool'; test('Dispatcher', (t) => { t.test('requests and releases workers from pool', (t) => { diff --git a/test/unit/util/evented.test.js b/test/unit/util/evented.test.js index eb1ed60b33..e9a01c54d2 100644 --- a/test/unit/util/evented.test.js +++ b/test/unit/util/evented.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {Event, Evented} from '../../../src/util/evented'; +import {Event, Evented} from '../../../rollup/build/tsc/util/evented'; test('Evented', (t) => { diff --git a/test/unit/util/find_pole_of_inaccessibility.test.js b/test/unit/util/find_pole_of_inaccessibility.test.js index a40d3719ed..e7a3544d06 100644 --- a/test/unit/util/find_pole_of_inaccessibility.test.js +++ b/test/unit/util/find_pole_of_inaccessibility.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; -import Point from '../../../src/symbol/point'; -import findPoleOfInaccessibility from '../../../src/util/find_pole_of_inaccessibility'; +import Point from '../../../rollup/build/tsc/symbol/point'; +import findPoleOfInaccessibility from '../../../rollup/build/tsc/util/find_pole_of_inaccessibility'; test('polygon_poi', (t) => { diff --git a/test/unit/util/mapbox.test.js b/test/unit/util/mapbox.test.js index aebba25659..f777a8225b 100644 --- a/test/unit/util/mapbox.test.js +++ b/test/unit/util/mapbox.test.js @@ -1,11 +1,10 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import * as mapbox from '../../../src/util/mapbox'; -import config from '../../../src/util/config'; -import window from '../../../src/util/window'; -import webpSupported from '../../../src/util/webp_supported'; -import {uuid} from '../../../src/util/util'; -import {SKU_ID} from '../../../src/util/sku_token'; -import {version} from '../../../package.json'; +import * as mapbox from '../../../rollup/build/tsc/util/mapbox'; +import config from '../../../rollup/build/tsc/util/config'; +import webpSupported from '../../../rollup/build/tsc/util/webp_supported'; +import {uuid} from '../../../rollup/build/tsc/util/util'; +import {SKU_ID} from '../../../rollup/build/tsc/util/sku_token'; import {equalWithPrecision} from '../../util'; const mapboxTileURLs = [ @@ -426,7 +425,7 @@ test("mapbox", (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -629,7 +628,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=key`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'appUserTurnstile'); - t.equal(reqBody.sdkVersion, version); t.equal(reqBody.skuId, SKU_ID); t.ok(reqBody.userId); @@ -688,7 +686,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=pk.new.*`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'appUserTurnstile'); - t.equal(reqBody.sdkVersion, version); t.equal(reqBody.skuId, SKU_ID); t.ok(reqBody.userId); @@ -711,7 +708,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=key`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'appUserTurnstile'); - t.equal(reqBody.sdkVersion, version); t.equal(reqBody.skuId, SKU_ID); t.ok(reqBody.userId); equalWithPrecision(t, new Date(reqBody.created).valueOf(), tomorrow, 100); @@ -762,7 +758,7 @@ test("mapbox", (t) => { }); t.afterEach((callback) => { - window.restore(); + window.clearFakeXMLHttpRequest(); callback(); }); @@ -948,7 +944,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=key`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'map.load'); - t.equal(reqBody.sdkVersion, version); t.ok(reqBody.userId); t.end(); @@ -982,7 +977,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=pk.new.*`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'map.load'); - t.equal(reqBody.sdkVersion, version); t.ok(reqBody.userId); t.end(); @@ -1002,7 +996,6 @@ test("mapbox", (t) => { t.equal(req.url, `${config.EVENTS_URL}?access_token=key`); t.equal(req.method, 'POST'); t.equal(reqBody.event, 'map.load'); - t.equal(reqBody.sdkVersion, version); t.ok(reqBody.userId); equalWithPrecision(t, new Date(reqBody.created).valueOf(), now, 100); diff --git a/test/unit/util/primitives.test.js b/test/unit/util/primitives.test.js index 35b56d50cb..0789e88166 100644 --- a/test/unit/util/primitives.test.js +++ b/test/unit/util/primitives.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {Aabb, Frustum} from '../../../src/util/primitives'; +import {Aabb, Frustum} from '../../../rollup/build/tsc/util/primitives'; import {mat4, vec3} from 'gl-matrix'; test('primitives', (t) => { @@ -50,6 +50,7 @@ test('primitives', (t) => { const createTestCameraFrustum = (fovy, aspectRatio, zNear, zFar, elevation, rotation) => { const proj = new Float64Array(16); const invProj = new Float64Array(16); + // Note that left handed coordinate space is used where z goes towards the sky. // Y has to be flipped as well because it's part of the projection/camera matrix used in transform.js mat4.perspective(proj, fovy, aspectRatio, zNear, zFar); @@ -92,7 +93,7 @@ test('primitives', (t) => { }); t.test('No intersection between aabb and frustum', (t) => { - const frustum = createTestCameraFrustum(Math.PI / 2, 1.0, 0.1, 100.0, -5); + const frustum = createTestCameraFrustum(Math.PI / 2, 1.0, 0.1, 100.0, -5, 0); const aabbList = [ new Aabb(vec3.fromValues(-6, 0, 0), vec3.fromValues(-5.5, 0, 0)), @@ -111,13 +112,14 @@ test('primitives', (t) => { t.test('frustum', (t) => { t.test('Create a frustum from inverse projection matrix', (t) => { - const proj = new Float64Array(16); - const invProj = new Float64Array(16); + const proj = new Float64Array(16); // [] also passes test + const invProj = new Float64Array(16); // [] also passes test + // FAIL const proj = mat4.create(); // Float32Array also fails + // FAIL const invProj = mat4.create(); // Float32Array also fails mat4.perspective(proj, Math.PI / 2, 1.0, 0.1, 100.0); mat4.invert(invProj, proj); const frustum = Frustum.fromInvProjectionMatrix(invProj, 1.0, 0.0); - // mat4.perspective generates a projection matrix for right handed coordinate space. // This means that forward direction will be -z const expectedFrustumPoints = [ @@ -131,7 +133,6 @@ test('primitives', (t) => { [-100.0, -100.0, -100.0, 1.0], ]; - // Round numbers to mitigate the precision loss frustum.points = frustum.points.map(array => array.map(n => Math.round(n * 10) / 10)); frustum.planes = frustum.planes.map(array => array.map(n => Math.round(n * 1000) / 1000)); diff --git a/test/unit/util/resolve_tokens.test.js b/test/unit/util/resolve_tokens.test.js index 0b2f63965e..a494a1db23 100644 --- a/test/unit/util/resolve_tokens.test.js +++ b/test/unit/util/resolve_tokens.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import resolveTokens from '../../../src/util/resolve_tokens'; +import resolveTokens from '../../../rollup/build/tsc/util/resolve_tokens'; test('resolveToken', (t) => { t.equal('3 Fine Fields', resolveTokens({a:3, b:'Fine', c:'Fields'}, '{a} {b} {c}')); diff --git a/test/unit/util/sku_token.test.js b/test/unit/util/sku_token.test.js index 83c81569c3..eb5e7fd179 100644 --- a/test/unit/util/sku_token.test.js +++ b/test/unit/util/sku_token.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import {createSkuToken, SKU_ID} from '../../../src/util/sku_token'; +import {createSkuToken, SKU_ID} from '../../../rollup/build/tsc/util/sku_token'; test('sku token generation', (t) => { const skuToken = createSkuToken().token; diff --git a/test/unit/util/struct_array.test.js b/test/unit/util/struct_array.test.js index 41d195d7de..ee6b3ced7a 100644 --- a/test/unit/util/struct_array.test.js +++ b/test/unit/util/struct_array.test.js @@ -1,7 +1,7 @@ // @flow import {test} from '../../util/test'; -import {StructArrayLayout3i6, FeatureIndexArray} from '../../../src/data/array_types'; +import {StructArrayLayout3i6, FeatureIndexArray} from '../../../rollup/build/tsc/data/array_types'; test('StructArray', (t) => { class TestArray extends StructArrayLayout3i6 {} diff --git a/test/unit/util/task_queue.test.js b/test/unit/util/task_queue.test.js index 94430433f5..ee4d3473b5 100644 --- a/test/unit/util/task_queue.test.js +++ b/test/unit/util/task_queue.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import TaskQueue from '../../../src/util/task_queue'; +import TaskQueue from '../../../rollup/build/tsc/util/task_queue'; test('TaskQueue', (t) => { t.test('Calls callbacks, in order', (t) => { diff --git a/test/unit/util/throttle.test.js b/test/unit/util/throttle.test.js index 5c1943097d..b53104d3bb 100644 --- a/test/unit/util/throttle.test.js +++ b/test/unit/util/throttle.test.js @@ -2,7 +2,7 @@ import {test} from '../../util/test'; -import throttle from '../../../src/util/throttle'; +import throttle from '../../../rollup/build/tsc/util/throttle'; test('throttle', (t) => { diff --git a/test/unit/util/tile_request_cache.test.js b/test/unit/util/tile_request_cache.test.js index 7b47071c39..2b7704b2d1 100644 --- a/test/unit/util/tile_request_cache.test.js +++ b/test/unit/util/tile_request_cache.test.js @@ -1,6 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import {cacheGet, cachePut, cacheClose} from '../../../src/util/tile_request_cache'; -import window from '../../../src/util/window'; +import {cacheGet, cachePut, cacheClose} from '../../../rollup/build/tsc/util/tile_request_cache'; import sinon from 'sinon'; test('tile_request_cache', (t) => { @@ -11,7 +11,7 @@ test('tile_request_cache', (t) => { }); t.afterEach(callback => { - window.restore(); + delete window.caches; callback(); }); diff --git a/test/unit/util/util.test.js b/test/unit/util/util.test.js index 4b21386606..c6a575a461 100644 --- a/test/unit/util/util.test.js +++ b/test/unit/util/util.test.js @@ -1,9 +1,7 @@ -// @flow - import {test} from '../../util/test'; -import {easeCubicInOut, keysDifference, extend, pick, uniqueId, bindAll, asyncAll, clamp, wrap, bezier, endsWith, mapObject, filterObject, deepEqual, clone, arraysIntersect, isCounterClockwise, isClosedPolygon, parseCacheControl, uuid, validateUuid, nextPowerOfTwo, isPowerOfTwo} from '../../../src/util/util'; -import Point from '../../../src/symbol/point'; +import {easeCubicInOut, keysDifference, extend, pick, uniqueId, bindAll, asyncAll, clamp, wrap, bezier, endsWith, mapObject, filterObject, deepEqual, clone, arraysIntersect, isCounterClockwise, isClosedPolygon, parseCacheControl, uuid, validateUuid, nextPowerOfTwo, isPowerOfTwo} from '../../../rollup/build/tsc/util/util'; +import Point from '../../../rollup/build/tsc/symbol/point'; test('util', (t) => { t.equal(easeCubicInOut(0), 0, 'easeCubicInOut=0'); diff --git a/test/unit/util/web_worker_transfer.test.js b/test/unit/util/web_worker_transfer.test.js index 2fd5c43f55..7626dd9638 100644 --- a/test/unit/util/web_worker_transfer.test.js +++ b/test/unit/util/web_worker_transfer.test.js @@ -1,15 +1,12 @@ -// @flow - +import '../../stub_loader'; import {test} from '../../util/test'; -import {register, serialize, deserialize} from '../../../src/util/web_worker_transfer'; - -import type {Serialized} from '../../../src/util/web_worker_transfer'; +import {register, serialize, deserialize} from '../../../rollup/build/tsc/util/web_worker_transfer'; test('round trip', (t) => { class Foo { - n: number; - buffer: ArrayBuffer; - _cached: ?number; + n; + buffer; + _cached; constructor(n) { this.n = n; @@ -32,7 +29,7 @@ test('round trip', (t) => { const transferables = []; const deserialized = deserialize(serialize(foo, transferables)); t.assert(deserialized instanceof Foo); - const bar: Foo = (deserialized: any); + const bar = deserialized; t.assert(foo !== bar); t.assert(bar.constructor === Foo); @@ -56,19 +53,19 @@ test('anonymous class', (t) => { test('custom serialization', (t) => { class Bar { - id: string; - _deserialized: boolean; + id; + _deserialized; constructor(id) { this.id = id; this._deserialized = false; } - static serialize(b: Bar): Serialized { + static serialize(b) { return {foo: `custom serialization,${b.id}`}; } - static deserialize(input: Serialized): Bar { - const b = new Bar((input: any).foo.split(',')[1]); + static deserialize(input) { + const b = new Bar(input.foo.split(',')[1]); b._deserialized = true; return b; } @@ -81,7 +78,7 @@ test('custom serialization', (t) => { const deserialized = deserialize(serialize(bar)); t.assert(deserialized instanceof Bar); - const bar2: Bar = (deserialized: any); + const bar2 = deserialized; t.equal(bar2.id, bar.id); t.assert(bar2._deserialized); t.end(); diff --git a/test/unit/util/worker_pool.test.js b/test/unit/util/worker_pool.test.js index 3918dcf4ce..3c8b46f6af 100644 --- a/test/unit/util/worker_pool.test.js +++ b/test/unit/util/worker_pool.test.js @@ -1,5 +1,6 @@ +import '../../stub_loader'; import {test} from '../../util/test'; -import WorkerPool from '../../../src/util/worker_pool'; +import WorkerPool from '../../../rollup/build/tsc/util/worker_pool'; test('WorkerPool', (t) => { t.test('#acquire', (t) => { diff --git a/test/util/create_symbol_layer.js b/test/util/create_symbol_layer.js index 7ddde7b710..0e9fa7b950 100644 --- a/test/util/create_symbol_layer.js +++ b/test/util/create_symbol_layer.js @@ -1,6 +1,6 @@ -import SymbolBucket from '../../src/data/bucket/symbol_bucket'; -import SymbolStyleLayer from '../../src/style/style_layer/symbol_style_layer'; -import featureFilter from '../../src/style-spec/feature_filter'; +import SymbolBucket from '../../rollup/build/tsc/data/bucket/symbol_bucket'; +import SymbolStyleLayer from '../../rollup/build/tsc/style/style_layer/symbol_style_layer'; +import featureFilter from '../../rollup/build/tsc/style-spec/feature_filter'; export function createSymbolBucket(layerId, font, text, collisionBoxArray) { const layer = new SymbolStyleLayer({ diff --git a/test/util/index.js b/test/util/index.js index e5ce5cfc8f..b9f5b82ac0 100644 --- a/test/util/index.js +++ b/test/util/index.js @@ -1,6 +1,6 @@ -import window from '../../src/util/window'; -import Map from '../../src/ui/map'; -import {extend} from '../../src/util/util'; +import '../stub_loader'; +import Map from '../../rollup/build/tsc/ui/map'; +import {extend} from '../../rollup/build/tsc/util/util'; export function createMap(t, options, callback) { const container = window.document.createElement('div'); diff --git a/test/util/test.js b/test/util/test.js index 49218e59ad..7d03ade495 100644 --- a/test/util/test.js +++ b/test/util/test.js @@ -3,30 +3,31 @@ import tap from 'tap'; import sinon from 'sinon'; -type CreateTest = (typeof sinon) & { - (name: string, body: (test: CreateTest) => void): void, - - test: CreateTest, - - ok(value: mixed, msg?: string): void, - assert(value: mixed, msg?: string): void, - true(value: mixed, msg?: string): void, - notOk(value: mixed, msg?: string): void, - false(value: mixed, msg?: string): void, - equal(actual: mixed, expected: mixed, msg?: string): void, - notEqual(actual: mixed, expected: mixed, msg?: string): void, - deepEqual(actual: mixed, expected: mixed, msg?: string): void, - fail(msg?: string): void, - ifError(err: mixed, msg?: string): void, - throws(fn: Function, expected?: RegExp | Function, msg?: string): void, - doesNotThrow(fn: Function, expected?: RegExp | Function, msg?: string): void, - plan(n: number): void, - end(): void, - tearDown(() => void): void, -}; - -export const test = (tap.test: CreateTest); -export const only = (tap.only: CreateTest); +// HM TODO: remove this or convert to typescript +//type CreateTest = (typeof sinon) & { +// (name: string, body: (test: CreateTest) => void): void, + +// test: CreateTest, + +// ok(value: mixed, msg?: string): void, +// assert(value: mixed, msg?: string): void, +// true(value: mixed, msg?: string): void, +// notOk(value: mixed, msg?: string): void, +// false(value: mixed, msg?: string): void, +// equal(actual: mixed, expected: mixed, msg?: string): void, +// notEqual(actual: mixed, expected: mixed, msg?: string): void, +// deepEqual(actual: mixed, expected: mixed, msg?: string): void, +// fail(msg?: string): void, +// ifError(err: mixed, msg?: string): void, +// throws(fn: Function, expected?: RegExp | Function, msg?: string): void, +// doesNotThrow(fn: Function, expected?: RegExp | Function, msg?: string): void, +// plan(n: number): void, +// end(): void, +// tearDown(() => void): void, +//}; + +export const test = tap.test; +export const only = tap.only; const consoleError = console.error; const consoleWarn = console.warn; From 7978d0461526fce68974e2b3b3dd9962d17b4165 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 3 Aug 2021 12:48:37 +0300 Subject: [PATCH 082/142] Incorrect invocation of build-dev... --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60f71ddd12..c403ce0f86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: node-version: 14 architecture: x64 - run: npm ci - - run: npm build-dev + - run: npm run build-dev # see: https://github.com/stackgl/headless-gl#how-can-headless-gl-be-used-on-a-headless-linux-machine - run: xvfb-run -s "-ac -screen 0 1280x1024x24" npm run test-unit From e2bced5492c2b9a9fdf7faa0119a91c28e808a1a Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 3 Aug 2021 12:55:52 +0300 Subject: [PATCH 083/142] Fix lint errors --- src/ui/handler_manager.ts | 3 +-- src/util/primitives.ts | 6 +++--- src/util/util.ts | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 56ef0911fc..3c1af25e7d 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -1,7 +1,6 @@ import {Event} from '../util/evented'; import DOM from '../util/dom'; -import type Map from './map'; -import type {CompleteMapOptions} from './map'; +import Map, {CompleteMapOptions} from './map'; import HandlerInertia from './handler_inertia'; import {MapEventHandler, BlockableMapEventHandler} from './handler/map_event'; import BoxZoomHandler from './handler/box_zoom'; diff --git a/src/util/primitives.ts b/src/util/primitives.ts index ea2abe0c57..8ec5254244 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -1,14 +1,14 @@ -import { mat4, vec3, vec4 } from 'gl-matrix'; +import {mat4, vec3, vec4} from 'gl-matrix'; import assert from 'assert'; class Frustum { - constructor(public points: vec4[], public planes: vec4[]) { } + constructor(public points: vec4[], public planes: vec4[]) { } // eslint-disable-line public static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { const toVec3 = (vec4: vec4): vec3 => { return vec3.fromValues(vec4[0], vec4[1], vec4[2]); - } + }; const clipSpaceCorners = [ vec4.fromValues(-1, 1, -1, 1), diff --git a/src/util/util.ts b/src/util/util.ts index 7ee2943d28..177ac4b9b0 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -538,7 +538,6 @@ export function b64DecodeUnicode(str: string) { }).join('')); } - const mapboxHTTPURLRe = /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i; export function isMapboxHTTPURL(url: string): boolean { return mapboxHTTPURLRe.test(url); @@ -546,4 +545,4 @@ export function isMapboxHTTPURL(url: string): boolean { export function hasCacheDefeatingSku(url: string) { return url.indexOf('sku=') > 0 && isMapboxHTTPURL(url); -} \ No newline at end of file +} From 6046b61c0df4ccd596b3c72f94291facaf881720 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 3 Aug 2021 13:51:56 +0300 Subject: [PATCH 084/142] Removed test flow --- .github/workflows/ci.yml | 13 ------------- .github/workflows/release.yml | 1 - 2 files changed, 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c403ce0f86..dc7d5dec08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,19 +52,6 @@ jobs: - run: npm run lint-docs - run: npm run lint-css - test-flow: - runs-on: ubuntu-latest - timeout-minutes: 20 - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 14 x64 - uses: actions/setup-node@v2-beta - with: - node-version: 14 - architecture: x64 - - run: npm ci - - run: npm run test-flow - test-unit: runs-on: ubuntu-latest timeout-minutes: 20 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ed87bb1a79..1e6ecd5178 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,6 @@ jobs: - name: Test run: | - npm run test-flow npm run test-unit npm run test-render npm run test-query From 8f11ef3c1be50e7f36a96cae893712faf01dd4fd Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 09:23:52 +0300 Subject: [PATCH 085/142] Fix build csp, started to fix style build --- rollup.config.csp.js | 4 ++-- src/style-spec/{rollup.config.ts => rollup.config.js} | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) rename src/style-spec/{rollup.config.ts => rollup.config.js} (91%) diff --git a/rollup.config.csp.js b/rollup.config.csp.js index a829145795..3c4f9f9273 100644 --- a/rollup.config.csp.js +++ b/rollup.config.csp.js @@ -19,6 +19,6 @@ const config = (input, file, format) => ({ }); export default [ - config('src/index.js', 'dist/maplibre-gl-csp.js', 'umd'), - config('src/source/worker.js', 'dist/maplibre-gl-csp-worker.js', 'iife') + config('rollup/build/tsc/index.js', 'dist/maplibre-gl-csp.js', 'umd'), + config('rollup/build/tsc/source/worker.js', 'dist/maplibre-gl-csp-worker.js', 'iife') ]; diff --git a/src/style-spec/rollup.config.ts b/src/style-spec/rollup.config.js similarity index 91% rename from src/style-spec/rollup.config.ts rename to src/style-spec/rollup.config.js index bffd3f1839..288b40340e 100644 --- a/src/style-spec/rollup.config.ts +++ b/src/style-spec/rollup.config.js @@ -1,11 +1,14 @@ -import path from 'path'; +import path, {dirname} from 'path'; import replace from 'rollup-plugin-replace'; import buble from 'rollup-plugin-buble'; import resolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; import unassert from 'rollup-plugin-unassert'; import json from 'rollup-plugin-json'; -import {flow} from '../../build/rollup_plugins'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + // Build es modules? const esm = 'esm' in process.env; @@ -18,7 +21,7 @@ const transforms = { const ROOT_DIR = __dirname; const config = [{ - input: `${__dirname}/style-spec.js`, + input: '../../rollup/build/tsc/style-spec/style-spec.js', output: { name: 'maplibreGlStyleSpecification', file: `${__dirname}/dist/${esm ? 'index.es.js' : 'index.js'}`, @@ -51,7 +54,6 @@ const config = [{ '_token_stack:': '' } }), - flow(), json(), buble({transforms, objectAssign: "Object.assign"}), unassert(), From 0aae94b3e0d0bde6ad4366436158e7434a6bafdc Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 09:53:19 +0300 Subject: [PATCH 086/142] Fix css build --- .nvmrc | 2 +- package-lock.json | 2900 +++++++++++++++++++---- package.json | 9 +- postcss.config.js => postcss.config.cjs | 0 4 files changed, 2487 insertions(+), 424 deletions(-) rename postcss.config.js => postcss.config.cjs (100%) diff --git a/.nvmrc b/.nvmrc index dc08cc7bd0..0627d197d0 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -10.24.1 +14.17.4 diff --git a/package-lock.json b/package-lock.json index 1fb713f9f7..0577991425 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1990,6 +1990,56 @@ "dev": true, "requires": { "postcss": "5 - 7" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@types/d3": { @@ -2589,6 +2639,56 @@ "dev": true, "requires": { "postcss": "7.x.x" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@types/supercluster": { @@ -3281,6 +3381,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -3306,6 +3412,56 @@ "num2fraction": "^1.2.2", "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "aws-sign2": { @@ -4878,6 +5034,56 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-select": { @@ -4943,6 +5149,56 @@ "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-preset-default": { @@ -4981,34 +5237,134 @@ "postcss-reduce-transforms": "^4.0.2", "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true }, "csso": { "version": "4.2.0", @@ -5532,9 +5888,9 @@ "dev": true }, "dependency-graph": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.8.1.tgz", - "integrity": "sha512-g213uqF8fyk40W8SBjm079n3CZB4qSpCrA2ye1fLGzH/4HEgB6tzuW2CbLE7leb4t45/6h44Ud59Su1/ROTfqw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", "dev": true }, "deprecation": { @@ -7821,14 +8177,15 @@ "dev": true }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs-minipass": { @@ -8732,12 +9089,12 @@ "dev": true }, "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", "dev": true, "requires": { - "import-from": "^2.1.0" + "import-from": "^3.0.0" } }, "import-fresh": { @@ -8751,12 +9108,20 @@ } }, "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "import-lazy": { @@ -9566,12 +9931,13 @@ } }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "jsonify": { @@ -9760,6 +10126,12 @@ "immediate": "~3.0.5" } }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true + }, "list-npm-contents": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/list-npm-contents/-/list-npm-contents-1.0.2.tgz", @@ -9881,6 +10253,12 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, "lodash.find": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", @@ -9897,12 +10275,24 @@ "lodash._isiterateecall": "^3.0.0" } }, + "lodash.forown": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-4.4.0.tgz", + "integrity": "sha1-hRFc8E9z75ZuztUlEdOJPMRmg68=", + "dev": true + }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -10825,6 +11215,12 @@ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -13024,14 +13420,25 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", + "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" }, "dependencies": { "chalk": { @@ -13056,6 +13463,17 @@ } } }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13073,225 +13491,263 @@ } } }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, "postcss-cli": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-6.1.3.tgz", - "integrity": "sha512-eieqJU+OR1OFc/lQqMsDmROTJpoMZFvoAQ+82utBQ8/8qGMTfH9bBSPsTdsagYA8uvNzxHw2I2cNSSJkLAGhvw==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-8.3.1.tgz", + "integrity": "sha512-leHXsQRq89S3JC9zw/tKyiVV2jAhnfQe0J8VI4eQQbUjwIe0XxVqLrR+7UsahF1s9wi4GlqP6SJ8ydf44cgF2Q==", "dev": true, "requires": { - "chalk": "^2.1.0", - "chokidar": "^2.0.0", - "dependency-graph": "^0.8.0", - "fs-extra": "^7.0.0", - "get-stdin": "^6.0.0", - "globby": "^9.0.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "postcss-reporter": "^6.0.0", + "chalk": "^4.0.0", + "chokidar": "^3.3.0", + "dependency-graph": "^0.9.0", + "fs-extra": "^9.0.0", + "get-stdin": "^8.0.0", + "globby": "^11.0.0", + "postcss-load-config": "^3.0.0", + "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "yargs": "^12.0.1" + "slash": "^3.0.0", + "yargs": "^16.0.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "color-convert": "^2.0.1" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "extend-shallow": { + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "color-name": "~1.1.4" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "path-type": "^4.0.0" } }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "is-number": { + "postcss-reporter": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.2.tgz", + "integrity": "sha512-JyQ96NTQQsso42y6L1H1RqHfWH1C3Jr0pt91mVv5IdYddZAE9DUZxuferNgk6q0o6vBVOrfVJb10X1FgDzjmDw==", + "dev": true, + "requires": { + "colorette": "^1.2.1", + "lodash.difference": "^4.5.0", + "lodash.forown": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.groupby": "^4.6.0", + "lodash.sortby": "^4.7.0" + } + }, + "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ansi-regex": "^5.0.0" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "has-flag": "^4.0.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, @@ -13308,14 +13764,62 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - } - } - }, + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss-convert-values": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", @@ -13326,11 +13830,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13341,6 +13893,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -13350,6 +13952,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-empty": { @@ -13359,37 +14011,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - } - }, - "postcss-inline-svg": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-3.1.1.tgz", - "integrity": "sha512-G2BkarW6gGpGFGAiKzW7aiulUS0/6QuCgq1riZEiX4oMaUTpU1pdW7BU6UFRDrdKkwS0r4icK2pU0bg6sCSOjw==", - "dev": true, - "requires": { - "css-select": "^1.2.0", - "dom-serializer": "^0.1.0", - "htmlparser2": "^3.9.0", - "postcss": "^6.0.1", - "postcss-value-parser": "^3.2.3" }, "dependencies": { "chalk": { @@ -13401,78 +14022,218 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "has-flag": "^3.0.0" } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + } + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "supports-color": "^6.1.0" } }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "postcss-jsx": { + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-inline-svg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-inline-svg/-/postcss-inline-svg-5.0.0.tgz", + "integrity": "sha512-Agqkrn91Qgi+KAO+cTvUS1IAZbHPD4sryPoG0q5U0ThokL4UGoMcmwvNV6tDoRp69B5tgD1VNkn9P09E+xpQAg==", + "dev": true, + "requires": { + "css-select": "^3.1.0", + "dom-serializer": "^1.1.0", + "htmlparser2": "^5.0.1", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "css-select": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", + "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^4.0.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.3", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", + "dev": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + } + } + }, + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + } + } + }, + "postcss-jsx": { "version": "0.36.4", "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", @@ -13488,16 +14249,67 @@ "dev": true, "requires": { "postcss": "^7.0.14" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, "postcss-markdown": { @@ -13629,11 +14441,59 @@ "stylehacks": "^4.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13651,6 +14511,39 @@ "vendors": "^1.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -13661,6 +14554,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13674,11 +14582,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13694,20 +14650,68 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { "alphanum-sort": "^1.0.0", "browserslist": "^4.0.0", "cssnano-util-get-arguments": "^4.0.0", @@ -13716,11 +14720,59 @@ "uniqs": "^2.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13736,6 +14788,39 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -13746,6 +14831,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13756,6 +14856,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-display-values": { @@ -13769,11 +14919,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13789,31 +14987,127 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13828,11 +15122,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13847,11 +15189,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13866,11 +15256,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13886,29 +15324,125 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13923,11 +15457,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13941,6 +15523,56 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -13955,11 +15587,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -13985,43 +15665,221 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-sass": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", + "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", + "dev": true, + "requires": { + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "requires": { - "postcss": "^7.0.26" - } - }, - "postcss-sass": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", - "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", - "dev": true, - "requires": { - "gonzales-pe": "^4.2.3", - "postcss": "^7.0.1" - } - }, - "postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "requires": { - "postcss": "^7.0.6" - } - }, "postcss-selector-parser": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", @@ -14043,11 +15901,59 @@ "svgo": "^1.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -14066,6 +15972,56 @@ "alphanum-sort": "^1.0.0", "postcss": "^7.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-value-parser": { @@ -15871,6 +17827,12 @@ } } }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -16370,6 +18332,39 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -16380,6 +18375,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -16571,6 +18581,28 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -16614,6 +18646,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -16688,6 +18726,56 @@ "dev": true, "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "supercluster": { @@ -16989,52 +19077,26 @@ } }, "tape": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.3.tgz", - "integrity": "sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.14.0.tgz", + "integrity": "sha512-z0+WrUUJuG6wIdWrl4W3rTte2CR26G6qcPOj3w1hfRdcmhF3kHBhOBW9VHsPVAkz08ZmGzp7phVpDupbLzrYKQ==", "dev": true, "requires": { + "call-bind": "~1.0.2", "deep-equal": "~1.1.1", "defined": "~1.0.0", "dotignore": "~0.1.2", "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.6", + "glob": "~7.1.7", "has": "~1.0.3", "inherits": "~2.0.4", - "is-regex": "~1.0.5", + "is-regex": "~1.1.3", "minimist": "~1.2.5", - "object-inspect": "~1.7.0", - "resolve": "~1.17.0", + "object-inspect": "~1.11.0", + "resolve": "~1.20.0", "resumer": "~0.0.0", - "string.prototype.trim": "~1.2.1", + "string.prototype.trim": "~1.2.4", "through": "~2.3.8" - }, - "dependencies": { - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } } }, "tape-filter": { @@ -17930,9 +19992,9 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unpipe": { diff --git a/package.json b/package.json index 37d41c0adf..7280ff0c2c 100644 --- a/package.json +++ b/package.json @@ -124,8 +124,9 @@ "pirates": "^4.0.1", "pixelmatch": "^5.1.0", "pngjs": "^3.4.0", - "postcss-cli": "^6.1.2", - "postcss-inline-svg": "^3.1.1", + "postcss": "^8.3.6", + "postcss-cli": "^8.3.1", + "postcss-inline-svg": "^5.0.0", "pretty-bytes": "^5.1.0", "puppeteer": "^1.18.0", "qrcode-terminal": "^0.12.0", @@ -194,8 +195,8 @@ "test-suite-clean": "find test/integration/{render,query, expressions}-tests -mindepth 2 -type d -exec test -e \"{}/actual.png\" \\; -not \\( -exec test -e \"{}/style.json\" \\; \\) -print | xargs -t rm -r", "test-unit": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage test/unit", "test-unit-file": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage ", - "test-build": "cross-env build/run-tap --no-coverage test/build/**/*.test.js", - "test-browser": "cross-env build/run-tap --reporter spec --no-coverage test/browser/**/*.test.js", + "test-build": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage test/build/**/*.test.js", + "test-browser": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage test/browser/**/*.test.js", "test-render": "node --experimental-specifier-resolution=node --experimental-json-modules --max-old-space-size=2048 test/render.test.js", "test-query-node": "node --experimental-specifier-resolution=node --experimental-json-modules test/query.test.js", "watch-query": "testem -f test/integration/testem.js", diff --git a/postcss.config.js b/postcss.config.cjs similarity index 100% rename from postcss.config.js rename to postcss.config.cjs From c15469fc9fe6fe4f326254a20545b47bdd5a474e Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 09:58:12 +0300 Subject: [PATCH 087/142] Remove to vec3 as to code review requirements --- src/util/primitives.ts | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/util/primitives.ts b/src/util/primitives.ts index 8ec5254244..80fff8b198 100644 --- a/src/util/primitives.ts +++ b/src/util/primitives.ts @@ -6,10 +6,6 @@ class Frustum { constructor(public points: vec4[], public planes: vec4[]) { } // eslint-disable-line public static fromInvProjectionMatrix(invProj: mat4, worldSize: number, zoom: number): Frustum { - const toVec3 = (vec4: vec4): vec3 => { - return vec3.fromValues(vec4[0], vec4[1], vec4[2]); - }; - const clipSpaceCorners = [ vec4.fromValues(-1, 1, -1, 1), vec4.fromValues(1, 1, -1, 1), @@ -29,19 +25,19 @@ class Frustum { .map(v => vec4.scale([] as any, v, 1.0 / v[3] / worldSize * scale)); const frustumPlanePointIndices = [ - vec3.fromValues(0, 1, 2), // near - vec3.fromValues(6, 5, 4), // far - vec3.fromValues(0, 3, 7), // left - vec3.fromValues(2, 1, 5), // right - vec3.fromValues(3, 2, 6), // bottom - vec3.fromValues(0, 4, 5) // top + [0, 1, 2], // near + [6, 5, 4], // far + [0, 3, 7], // left + [2, 1, 5], // right + [3, 2, 6], // bottom + [0, 4, 5] // top ]; - const frustumPlanes = frustumPlanePointIndices.map((p: vec3) => { - const a = vec3.sub(vec3.create(), toVec3(frustumCoords[p[0]]), toVec3(frustumCoords[p[1]])); - const b = vec3.sub(vec3.create(), toVec3(frustumCoords[p[2]]), toVec3(frustumCoords[p[1]])); + const frustumPlanes = frustumPlanePointIndices.map((p: number[]) => { + const a = vec3.sub(vec3.create(), frustumCoords[p[0]] as vec3, frustumCoords[p[1]] as vec3); + const b = vec3.sub(vec3.create(), frustumCoords[p[2]] as vec3, frustumCoords[p[1]] as vec3); const n = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), a, b)); - const d = -vec3.dot(n, toVec3(frustumCoords[p[1]])); + const d = -vec3.dot(n, frustumCoords[p[1]] as vec3); return [n[0], n[1], n[2], d] as any as vec4; }); From 598d3d6c9d13d2c538add45664109a15cebb14c3 Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 10:00:41 +0300 Subject: [PATCH 088/142] Remove flow from build in ci --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ca1ceb38c8..e5f009157c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,6 @@ jobs: - run: npm run build-dev - run: npm run build-css - run: npm run build-style-spec - - run: npm run build-flow-types - run: npm run test-build - run: find dist - run: mkdir build-info From 24f374ea8400be419aae2e711826ccd08c4f2c44 Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 15:29:12 +0300 Subject: [PATCH 089/142] Remove references to @mapbox/point-geometry --- src/symbol/point.ts | 9 +++++++-- src/ui/camera.ts | 5 ++--- src/ui/map.ts | 11 +++++------ src/ui/marker.ts | 7 +++---- src/ui/popup.ts | 5 ++--- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/symbol/point.ts b/src/symbol/point.ts index f53b480467..fada4d8237 100644 --- a/src/symbol/point.ts +++ b/src/symbol/point.ts @@ -31,6 +31,8 @@ import {register} from '../util/web_worker_transfer'; * var point = new Point(-77, 38); */ +export type PointLike = Point | [number, number]; + class Point { x: number; y: number; @@ -321,14 +323,17 @@ class Point { * // is equivalent to * var point = new Point(0, 1); */ - static convert = function (a) { + static convert(a: PointLike | {x: number, y: number}): Point { if (a instanceof Point) { return a; } if (Array.isArray(a)) { return new Point(a[0], a[1]); } - return a; + if (typeof a.x === 'number') { + return new Point(a.x, a.y); + } + throw new Error(`Unable to convert to point: ${JSON.stringify(a)}`); }; } diff --git a/src/ui/camera.ts b/src/ui/camera.ts index d4e8271310..2edecf48a7 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -3,7 +3,7 @@ import {number as interpolate} from '../style-spec/util/interpolate'; import browser from '../util/browser'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point from '../symbol/point'; +import Point, {PointLike} from '../symbol/point'; import {Event, Evented} from '../util/evented'; import assert from 'assert'; import {Debug} from '../util/debug'; @@ -12,7 +12,6 @@ import type Transform from '../geo/transform'; import type {LngLatLike} from '../geo/lng_lat'; import type {LngLatBoundsLike} from '../geo/lng_lat_bounds'; import type {TaskID} from '../util/task_queue'; -import type {PointLike} from '@mapbox/point-geometry'; import type {PaddingOptions} from '../geo/edge_insets'; /** @@ -568,7 +567,7 @@ abstract class Camera extends Evented { const zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), options.maxZoom); // Calculate center: apply the zoom, the configured offset, as well as offset that exists as a result of padding. - const offset = (typeof options.offset.x === 'number') ? new Point(options.offset.x, options.offset.y) : Point.convert(options.offset); + const offset = Point.convert(options.offset); const paddingOffsetX = (options.padding.left - options.padding.right) / 2; const paddingOffsetY = (options.padding.top - options.padding.bottom) / 2; const paddingOffset = new Point(paddingOffsetX, paddingOffsetY); diff --git a/src/ui/map.ts b/src/ui/map.ts index 611c33e354..95e5726328 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -12,7 +12,7 @@ import HandlerManager from './handler_manager'; import Camera from './camera'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point from '../symbol/point'; +import Point, {PointLike} from '../symbol/point'; import AttributionControl from './control/attribution_control'; import LogoControl from './control/logo_control'; import isSupported from '@mapbox/mapbox-gl-supported'; @@ -25,7 +25,6 @@ import {PerformanceMarkers, PerformanceUtils} from '../util/performance'; import {setCacheLimits} from '../util/tile_request_cache'; -import type {PointLike} from '@mapbox/point-geometry'; import type {RequestTransformFunction} from '../util/mapbox'; import type {LngLatLike} from '../geo/lng_lat'; import type {LngLatBoundsLike} from '../geo/lng_lat_bounds'; @@ -1258,7 +1257,7 @@ class Map extends Camera { } if (options === undefined && geometry !== undefined && !(geometry instanceof Point) && !Array.isArray(geometry)) { - options = (geometry as any); + options = geometry; geometry = undefined; } @@ -1267,10 +1266,10 @@ class Map extends Camera { let queryGeometry; if (geometry instanceof Point || typeof geometry[0] === 'number') { - queryGeometry = [Point.convert(geometry)]; + queryGeometry = [Point.convert(geometry as PointLike)]; } else { - const tl = Point.convert(geometry[0]); - const br = Point.convert(geometry[1]); + const tl = Point.convert(geometry[0] as PointLike); + const br = Point.convert(geometry[1] as PointLike); queryGeometry = [tl, new Point(br.x, tl.y), br, new Point(tl.x, br.y), tl]; } diff --git a/src/ui/marker.ts b/src/ui/marker.ts index bf6b9bcd50..4cb2476771 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -1,16 +1,15 @@ import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; -import Point from '../symbol/point'; +import Point, {PointLike} from '../symbol/point'; import smartWrap from '../util/smart_wrap'; import {bindAll, extend} from '../util/util'; import {anchorTranslate, applyAnchorClass} from './anchor'; import type {Anchor} from './anchor'; import {Event, Evented} from '../util/evented'; import type Map from './map'; -import type Popup from './popup'; +import Popup, {Offset} from './popup'; import type {LngLatLike} from "../geo/lng_lat"; import type {MapMouseEvent, MapTouchEvent} from './events'; -import type {PointLike} from '@mapbox/point-geometry'; type Options = { element?: HTMLElement, @@ -365,7 +364,7 @@ export default class Marker extends Evented { 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1], 'left': [markerRadius, (markerHeight - markerRadius) * -1], 'right': [-markerRadius, (markerHeight - markerRadius) * -1] - } : this._offset; + } as Offset : this._offset; } this._popup = popup; if (this._lngLat) this._popup.setLngLat(this._lngLat); diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 2895175e3c..0cfa6160fa 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -3,7 +3,7 @@ import {Event, Evented} from '../util/evented'; import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; -import Point from '../symbol/point'; +import Point, {PointLike} from '../symbol/point'; import smartWrap from '../util/smart_wrap'; import {anchorTranslate, applyAnchorClass} from './anchor'; @@ -11,7 +11,6 @@ import type {Anchor} from './anchor'; import type Map from './map'; import type {LngLatLike} from '../geo/lng_lat'; -import type {PointLike} from '@mapbox/point-geometry'; const defaultOptions = { closeButton: true, @@ -512,7 +511,7 @@ export default class Popup extends Evented { this._update(event.point); } - _update(cursor?: PointLike | null) { + _update(cursor?: Point) { const hasPosition = this._lngLat || this._trackPointer; if (!this._map || !hasPosition || !this._content) { return; } From baabb53e5b334421890d42b07362b4b8cf95854c Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 17:27:45 +0300 Subject: [PATCH 090/142] Allow building style-spec --- package.json | 2 +- .../rollup.config.js => rollup.config.style-spec.js | 4 ++-- src/style-spec/package.json | 5 ----- 3 files changed, 3 insertions(+), 8 deletions(-) rename src/style-spec/rollup.config.js => rollup.config.style-spec.js (94%) diff --git a/package.json b/package.json index 7280ff0c2c..145f6e84f0 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ "build-csp": "rollup -c rollup.config.csp.js", "build-query-suite": "rollup -c test/integration/rollup.config.test.js", "build-css": "postcss -o dist/maplibre-gl.css src/css/maplibre-gl.css", - "build-style-spec": "cd src/style-spec && npm run build && cd ../.. && mkdir -p dist/style-spec && cp src/style-spec/dist/* dist/style-spec", + "build-style-spec": "npm run build-tsc && rollup -c rollup.config.style-spec.js --environment esm", "build-diagrams": "cd docs/diagrams; ls *.plantuml | xargs -I {} puml generate --svg {} -o {}.svg", "watch-css": "postcss --watch -o dist/maplibre-gl.css src/css/maplibre-gl.css", "build-benchmarks": "BENCHMARK_VERSION=${BENCHMARK_VERSION:-\"$(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short=7 HEAD)\"} rollup -c bench/versions/rollup_config_benchmarks.js", diff --git a/src/style-spec/rollup.config.js b/rollup.config.style-spec.js similarity index 94% rename from src/style-spec/rollup.config.js rename to rollup.config.style-spec.js index 288b40340e..227c5832ec 100644 --- a/src/style-spec/rollup.config.js +++ b/rollup.config.style-spec.js @@ -21,10 +21,10 @@ const transforms = { const ROOT_DIR = __dirname; const config = [{ - input: '../../rollup/build/tsc/style-spec/style-spec.js', + input: 'rollup/build/tsc/style-spec/style-spec.js', output: { name: 'maplibreGlStyleSpecification', - file: `${__dirname}/dist/${esm ? 'index.es.js' : 'index.js'}`, + file: `dist/style-spec/${esm ? 'index.es.js' : 'index.js'}`, format: esm ? 'esm' : 'umd', sourcemap: true }, diff --git a/src/style-spec/package.json b/src/style-spec/package.json index e71949d86c..5826109308 100644 --- a/src/style-spec/package.json +++ b/src/style-spec/package.json @@ -15,10 +15,6 @@ "main": "./dist/index.js", "module": "./dist/index.es.js", "scripts": { - "copy-flow-typed": "cp -R ../../flow-typed .", - "build": "../../node_modules/.bin/rollup -c && ../../node_modules/.bin/rollup -c --environment esm", - "prepublish": "git clean -fdx && yarn copy-flow-typed && yarn build", - "postpublish": "rm -r flow-typed dist/index.js" }, "repository": { "type": "git", @@ -33,7 +29,6 @@ "dependencies": { "@mapbox/jsonlint-lines-primitives": "~2.0.2", "@mapbox/unitbezier": "^0.0.0", - "@mapbox/point-geometry": "^0.1.0", "csscolorparser": "~1.0.2", "json-stringify-pretty-compact": "^2.0.0", "minimist": "^1.2.5", From 79e475479e518c5140ac5f3e510103111baf94b0 Mon Sep 17 00:00:00 2001 From: HarelM Date: Wed, 4 Aug 2021 21:38:07 +0300 Subject: [PATCH 091/142] Fix build tests --- package.json | 2 +- test/build/min.test.js | 28 ++++++++++++++++++++-------- test/build/style-spec.test.js | 27 +++++++++++---------------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 145f6e84f0..8f4168195a 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ "build-csp": "rollup -c rollup.config.csp.js", "build-query-suite": "rollup -c test/integration/rollup.config.test.js", "build-css": "postcss -o dist/maplibre-gl.css src/css/maplibre-gl.css", - "build-style-spec": "npm run build-tsc && rollup -c rollup.config.style-spec.js --environment esm", + "build-style-spec": "npm run build-tsc && rollup -c rollup.config.style-spec.js && rollup -c rollup.config.style-spec.js --environment esm", "build-diagrams": "cd docs/diagrams; ls *.plantuml | xargs -I {} puml generate --svg {} -o {}.svg", "watch-css": "postcss --watch -o dist/maplibre-gl.css src/css/maplibre-gl.css", "build-benchmarks": "BENCHMARK_VERSION=${BENCHMARK_VERSION:-\"$(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short=7 HEAD)\"} rollup -c bench/versions/rollup_config_benchmarks.js", diff --git a/test/build/min.test.js b/test/build/min.test.js index a402b4a01b..fec6e2c62d 100644 --- a/test/build/min.test.js +++ b/test/build/min.test.js @@ -1,10 +1,13 @@ import {test} from '../util/test'; import fs from 'fs'; -import path from 'path'; -import reference from '../../src/style-spec/reference/latest'; +import path, {dirname} from 'path'; +import reference from '../../rollup/build/tsc/style-spec/reference/latest'; import {Linter} from 'eslint'; -import {scripts} from '../../package.json'; +import packageJson from '../../package.json'; +import browserify from 'browserify'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); const minBundle = fs.readFileSync('dist/maplibre-gl.js', 'utf8'); test('production build removes asserts', (t) => { @@ -16,8 +19,8 @@ test('production build removes asserts', (t) => { test('trims package.json assets', (t) => { // confirm that the entire package.json isn't present by asserting // the absence of each of our script strings - for (const name in scripts) { - t.assert(minBundle.indexOf(scripts[name]) === -1); + for (const name in packageJson.scripts) { + t.assert(minBundle.indexOf(packageJson.scripts[name]) === -1); } t.end(); }); @@ -29,15 +32,24 @@ test('trims reference.json fields', (t) => { }); test('can be browserified', (t) => { - const browserify = require('browserify'); browserify(path.join(__dirname, 'browserify-test-fixture.js')).bundle((err) => { t.ifError(err); t.end(); }); }); -test('evaluates without errors', (t) => { - t.doesNotThrow(() => require(path.join(__dirname, '../../dist/maplibre-gl.js'))); +test('evaluates without errors', async (t) => { + global.window = { + URL: { + createObjectURL: () => {} + } + }; + global.Blob = function() {}; + try { + let mgl = await import ('../../dist/maplibre-gl.js'); + } catch { + t.fail(); + } t.end(); }); diff --git a/test/build/style-spec.test.js b/test/build/style-spec.test.js index 4d98121e42..f28889651e 100644 --- a/test/build/style-spec.test.js +++ b/test/build/style-spec.test.js @@ -1,20 +1,16 @@ +import fs from 'fs'; +import isBuiltin from 'is-builtin-module'; -/* eslint-disable import/no-commonjs */ - -const fs = require('fs'); -const path = require('path'); -const isBuiltin = require('is-builtin-module'); - -const Linter = require('eslint').Linter; -const rollup = require('rollup'); +import {Linter} from 'eslint'; +import * as rollup from 'rollup'; import {test} from '../util/test'; -import rollupConfig from '../../src/style-spec/rollup.config'; +import rollupConfig from '../../rollup.config.style-spec'; +import styleSpecPackage from '../../src/style-spec/package.json'; +import * as spec from '../../dist/style-spec/index.es.js'; + -// some paths -const styleSpecDirectory = path.join(__dirname, '../../src/style-spec'); -const styleSpecPackage = require('../../src/style-spec/package.json'); -const styleSpecDistBundle = fs.readFileSync(path.join(__dirname, '../../dist/style-spec/index.js'), 'utf-8'); +const styleSpecDistBundle = fs.readFileSync('./dist/style-spec/index.js', 'utf-8'); test('@mapbox/mapbox-gl-style-spec npm package', (t) => { t.test('build plain ES5 bundle in prepublish', (t) => { @@ -32,7 +28,7 @@ test('@mapbox/mapbox-gl-style-spec npm package', (t) => { t.stub(console, 'warn'); rollup.rollup({ - input: `${styleSpecDirectory}/style-spec.js`, + input: `./rollup/build/tsc/style-spec/style-spec.js`, plugins: [{ resolveId: (id, importer) => { if ( @@ -55,9 +51,8 @@ test('@mapbox/mapbox-gl-style-spec npm package', (t) => { }); t.test('exports components directly, not behind `default` - https://github.com/mapbox/mapbox-gl-js/issues/6601', (t) => { - const spec = require('../../dist/style-spec/index.js'); - t.ok(spec.validate); t.notOk(spec.default && spec.default.validate); + t.ok(spec.validate); t.end(); }); From f8208b37b4650d94d0da61765c9f5fab794dbc7c Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 6 Aug 2021 15:30:07 +0300 Subject: [PATCH 092/142] Remove window, fix missing references to FeatureIndex using typescript config, update rollup dependencies --- build/rollup_plugins.js | 17 +++- package-lock.json | 138 ++++++++++++++------------ package.json | 9 +- rollup.config.style-spec.js | 8 +- src/render/painter.ts | 2 +- src/source/canvas_source.ts | 2 +- src/source/tile.ts | 2 +- src/symbol/point.ts | 2 +- src/ui/control/attribution_control.ts | 2 +- src/ui/control/fullscreen_control.ts | 18 ++-- src/ui/control/geolocate_control.ts | 2 +- src/ui/control/logo_control.ts | 2 +- src/ui/control/navigation_control.ts | 2 +- src/ui/control/scale_control.ts | 2 +- src/ui/handler_manager.ts | 8 +- src/ui/hash.ts | 4 +- src/ui/map.ts | 18 ++-- src/ui/popup.ts | 8 +- src/util/browser.ts | 14 +-- src/util/browser/web_worker.ts | 7 -- src/util/performance.ts | 2 - src/util/tile_request_cache.ts | 6 +- src/util/web_worker.ts | 104 ++++--------------- src/util/web_worker_transfer.ts | 4 +- src/util/webp_supported.ts | 4 +- src/util/worker_pool.ts | 4 +- tsconfig.json | 1 + 27 files changed, 166 insertions(+), 226 deletions(-) delete mode 100644 src/util/browser/web_worker.ts diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index 54b233f772..86d6da8b4d 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -1,9 +1,9 @@ -import buble from 'rollup-plugin-buble'; -import resolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import replace from '@rollup/plugin-replace'; +import commonjs from '@rollup/plugin-commonjs'; import unassert from 'rollup-plugin-unassert'; -import json from 'rollup-plugin-json'; +import json from '@rollup/plugin-json'; import {terser} from 'rollup-plugin-terser'; import minifyStyleSpec from './rollup_plugin_minify_style_spec'; import strip from '@rollup/plugin-strip'; @@ -18,7 +18,6 @@ export const plugins = (minified, production) => [ sourceMap: true, functions: ['PerformanceUtils.*', 'Debug.*'] }) : false, - buble({transforms: {dangerousForOf: true}, objectAssign: "Object.assign"}), minified ? terser({ compress: { pure_getters: true, @@ -26,6 +25,14 @@ export const plugins = (minified, production) => [ } }) : false, production ? unassert() : false, + // https://github.com/zaach/jison/issues/351 + replace({ + include: /\/jsonlint-lines-primitives\/lib\/jsonlint.js/, + delimiters: ['', ''], + values: { + '_token_stack:': '' + } + }), resolve({ browser: true, preferBuiltins: false diff --git a/package-lock.json b/package-lock.json index 0577991425..a79718f168 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1760,6 +1760,29 @@ "@octokit/openapi-types": "^8.3.0" } }, + "@rollup/plugin-commonjs": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz", + "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/plugin-json": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", @@ -1769,6 +1792,41 @@ "@rollup/pluginutils": "^3.0.8" } }, + "@rollup/plugin-node-resolve": { + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz", + "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + } + } + }, + "@rollup/plugin-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", + "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, "@rollup/plugin-strip": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-strip/-/plugin-strip-1.3.3.tgz", @@ -2532,15 +2590,6 @@ } } }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/rollup-plugin-buble": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/@types/rollup-plugin-buble/-/rollup-plugin-buble-0.19.2.tgz", @@ -4677,6 +4726,12 @@ "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -5813,6 +5868,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -16950,9 +17011,9 @@ } }, "rollup": { - "version": "2.54.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.54.0.tgz", - "integrity": "sha512-RHzvstAVwm9A751NxWIbGPFXs3zL4qe/eYg+N7WwGtIXVLy1cK64MiU37+hXeFm1jqipK6DGgMi6Z2hhPuCC3A==", + "version": "2.56.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.0.tgz", + "integrity": "sha512-weEafgbjbHCnrtJPNyCrhYnjP62AkF04P0BcV/1mofy1+gytWln4VVB1OK462cq2EAyWzRDpTMheSP/o+quoiA==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -16968,59 +17029,6 @@ "rollup-pluginutils": "^2.3.3" } }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-replace": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", - "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", - "dev": true, - "requires": { - "magic-string": "^0.25.2", - "rollup-pluginutils": "^2.6.0" - } - }, "rollup-plugin-sourcemaps": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", diff --git a/package.json b/package.json index 8f4168195a..7f1866af47 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,10 @@ "@mapbox/mapbox-gl-rtl-text": "^0.2.1", "@mapbox/mvt-fixtures": "^3.6.0", "@octokit/rest": "^16.30.1", + "@rollup/plugin-commonjs": "^20.0.0", "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.4", + "@rollup/plugin-replace": "^3.0.0", "@rollup/plugin-strip": "^1.3.1", "@types/babel__core": "^7.1.12", "@types/babelify": "^7.3.6", @@ -133,12 +136,8 @@ "react": "^16.8.6", "react-dom": "^16.8.6", "request": "^2.88.0", - "rollup": "^2.54.0", + "rollup": "^2.56.0", "rollup-plugin-buble": "^0.19.8", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-replace": "^2.2.0", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-unassert": "^0.3.0", diff --git a/rollup.config.style-spec.js b/rollup.config.style-spec.js index 227c5832ec..f83ca81b54 100644 --- a/rollup.config.style-spec.js +++ b/rollup.config.style-spec.js @@ -1,10 +1,10 @@ import path, {dirname} from 'path'; -import replace from 'rollup-plugin-replace'; +import replace from '@rollup/plugin-replace'; import buble from 'rollup-plugin-buble'; -import resolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; import unassert from 'rollup-plugin-unassert'; -import json from 'rollup-plugin-json'; +import json from '@rollup/plugin-json'; import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); diff --git a/src/render/painter.ts b/src/render/painter.ts index d8a7febc6a..8f48e13f91 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -651,7 +651,7 @@ class Painter { initDebugOverlayCanvas() { if (this.debugOverlayCanvas == null) { - this.debugOverlayCanvas = window.document.createElement('canvas'); + this.debugOverlayCanvas = document.createElement('canvas'); this.debugOverlayCanvas.width = 512; this.debugOverlayCanvas.height = 512; const gl = this.context.gl; diff --git a/src/source/canvas_source.ts b/src/source/canvas_source.ts index 7777703c2e..814b33edb0 100644 --- a/src/source/canvas_source.ts +++ b/src/source/canvas_source.ts @@ -112,7 +112,7 @@ class CanvasSource extends ImageSource { if (!this.canvas) { this.canvas = (this.options.canvas instanceof HTMLCanvasElement) ? this.options.canvas : - window.document.getElementById(this.options.canvas) as HTMLCanvasElement; + document.getElementById(this.options.canvas) as HTMLCanvasElement; // cast to HTMLCanvasElement in else of ternary // should we do a safety check and throw if it's not actually HTMLCanvasElement? } diff --git a/src/source/tile.ts b/src/source/tile.ts index 07c21f7809..61131d043a 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -54,7 +54,7 @@ class Tile { buckets: { [_: string]: Bucket }; - latestFeatureIndex: FeatureIndex | undefined | null; + latestFeatureIndex: FeatureIndex; latestRawTileData: ArrayBuffer | undefined | null; imageAtlas: ImageAtlas | undefined | null; imageAtlasTexture: Texture; diff --git a/src/symbol/point.ts b/src/symbol/point.ts index fada4d8237..95c10c0887 100644 --- a/src/symbol/point.ts +++ b/src/symbol/point.ts @@ -334,7 +334,7 @@ class Point { return new Point(a.x, a.y); } throw new Error(`Unable to convert to point: ${JSON.stringify(a)}`); - }; + } } register('Point', Point); diff --git a/src/ui/control/attribution_control.ts b/src/ui/control/attribution_control.ts index 1eda9e09dc..3e78401ffc 100644 --- a/src/ui/control/attribution_control.ts +++ b/src/ui/control/attribution_control.ts @@ -3,7 +3,7 @@ import {bindAll} from '../../util/util'; import config from '../../util/config'; import type Map from '../map'; -import {ControlPosition, IControl} from './control'; +import type {ControlPosition, IControl} from './control'; type Options = { compact?: boolean, diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index 9cbb4c6cf9..1face93368 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -3,7 +3,7 @@ import DOM from '../../util/dom'; import {bindAll, warnOnce} from '../../util/util'; import type Map from '../map'; -import {IControl} from './control'; +import type {IControl} from './control'; type Options = { container?: HTMLElement @@ -42,13 +42,13 @@ class FullscreenControl implements IControl { '_onClickFullscreen', '_changeIcon' ], this); - if ('onfullscreenchange' in window.document) { + if ('onfullscreenchange' in document) { this._fullscreenchange = 'fullscreenchange'; - } else if ('onmozfullscreenchange' in window.document) { + } else if ('onmozfullscreenchange' in document) { this._fullscreenchange = 'mozfullscreenchange'; - } else if ('onwebkitfullscreenchange' in window.document) { + } else if ('onwebkitfullscreenchange' in document) { this._fullscreenchange = 'webkitfullscreenchange'; - } else if ('onmsfullscreenchange' in window.document) { + } else if ('onmsfullscreenchange' in document) { this._fullscreenchange = 'MSFullscreenChange'; } } @@ -74,10 +74,10 @@ class FullscreenControl implements IControl { _checkFullscreenSupport() { return !!( - window.document.fullscreenEnabled || - (window.document as any).mozFullScreenEnabled || - (window.document as any).msFullscreenEnabled || - (window.document as any).webkitFullscreenEnabled + document.fullscreenEnabled || + (document as any).mozFullScreenEnabled || + (document as any).msFullscreenEnabled || + (document as any).webkitFullscreenEnabled ); } diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index 75b1a39aa4..c281e7232a 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -7,7 +7,7 @@ import Marker from '../marker'; import type Map from '../map'; import type {AnimationOptions, CameraOptions} from '../camera'; -import {IControl} from './control'; +import type {IControl} from './control'; type Options = { positionOptions?: PositionOptions, diff --git a/src/ui/control/logo_control.ts b/src/ui/control/logo_control.ts index f3ba5f5d29..72e22bb755 100644 --- a/src/ui/control/logo_control.ts +++ b/src/ui/control/logo_control.ts @@ -3,7 +3,7 @@ import DOM from '../../util/dom'; import {bindAll} from '../../util/util'; import type Map from '../map'; -import {ControlPosition, IControl} from './control'; +import type {ControlPosition, IControl} from './control'; /** * A `LogoControl` is a control that adds the watermark. diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index 508313ff65..c36c563174 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -5,7 +5,7 @@ import {extend, bindAll} from '../../util/util'; import {MouseRotateHandler, MousePitchHandler} from '../handler/mouse'; import type Map from '../map'; -import {IControl} from './control'; +import type {IControl} from './control'; type Options = { showCompass?: boolean, diff --git a/src/ui/control/scale_control.ts b/src/ui/control/scale_control.ts index 28538833a6..5506798f99 100644 --- a/src/ui/control/scale_control.ts +++ b/src/ui/control/scale_control.ts @@ -2,7 +2,7 @@ import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; import type Map from '../map'; -import {ControlPosition, IControl} from './control'; +import type {ControlPosition, IControl} from './control'; type Unit = "imperial" | "metric" | "nautical"; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 3c1af25e7d..e58ab0572c 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -152,8 +152,8 @@ class HandlerManager { // window-level event listeners give us the best shot at capturing events that // fall outside the map canvas element. Use `{capture: true}` for the move event // to prevent map move events from being fired during a drag. - [window.document, 'mousemove', {capture: true}], - [window.document, 'mouseup', undefined], + [document, 'mousemove', {capture: true}], + [document, 'mouseup', undefined], [el, 'mouseover', undefined], [el, 'mouseout', undefined], @@ -170,13 +170,13 @@ class HandlerManager { ]; for (const [target, type, listenerOptions] of this._listeners) { - DOM.addEventListener(target, type, target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions); + DOM.addEventListener(target, type, target === document ? this.handleWindowEvent : this.handleEvent, listenerOptions); } } destroy() { for (const [target, type, listenerOptions] of this._listeners) { - DOM.removeEventListener(target, type, target === window.document ? this.handleWindowEvent : this.handleEvent, listenerOptions); + DOM.removeEventListener(target, type, target === document ? this.handleWindowEvent : this.handleEvent, listenerOptions); } } diff --git a/src/ui/hash.ts b/src/ui/hash.ts index 19ae1b9a8a..a37a0fda1b 100644 --- a/src/ui/hash.ts +++ b/src/ui/hash.ts @@ -34,7 +34,7 @@ class Hash { */ addTo(map: Map) { this._map = map; - window.addEventListener('hashchange', this._onHashChange, false); + addEventListener('hashchange', this._onHashChange, false); this._map.on('moveend', this._updateHash); return this; } @@ -45,7 +45,7 @@ class Hash { * @returns {Popup} `this` */ remove() { - window.removeEventListener('hashchange', this._onHashChange, false); + removeEventListener('hashchange', this._onHashChange, false); this._map.off('moveend', this._updateHash); clearTimeout(this._updateHash()); diff --git a/src/ui/map.ts b/src/ui/map.ts index 95e5726328..777fee0756 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -52,9 +52,9 @@ import type { LightSpecification, SourceSpecification } from '../style-spec/types'; -import {Listener} from 'selenium-webdriver'; +import type {Listener} from 'selenium-webdriver'; import {Callback} from '../types/callback'; -import {ControlPosition, IControl} from './control/control'; +import type {ControlPosition, IControl} from './control/control'; /* eslint-enable no-use-before-define */ @@ -413,7 +413,7 @@ class Map extends Camera { this._requestManager = new RequestManager(options.transformRequest, options.accessToken); if (typeof options.container === 'string') { - this._container = window.document.getElementById(options.container); + this._container = document.getElementById(options.container); if (!this._container) { throw new Error(`Container '${options.container}' not found.`); } @@ -446,9 +446,9 @@ class Map extends Camera { this.on('zoom', () => this._update(true)); if (typeof window !== 'undefined') { - window.addEventListener('online', this._onWindowOnline, false); - window.addEventListener('resize', this._onWindowResize, false); - window.addEventListener('orientationchange', this._onWindowResize, false); + addEventListener('online', this._onWindowOnline, false); + addEventListener('resize', this._onWindowResize, false); + addEventListener('orientationchange', this._onWindowResize, false); } this.handlers = new HandlerManager(this, options as CompleteMapOptions); @@ -2637,9 +2637,9 @@ class Map extends Camera { delete this.handlers; this.setStyle(null); if (typeof window !== 'undefined') { - window.removeEventListener('resize', this._onWindowResize, false); - window.removeEventListener('orientationchange', this._onWindowResize, false); - window.removeEventListener('online', this._onWindowOnline, false); + removeEventListener('resize', this._onWindowResize, false); + removeEventListener('orientationchange', this._onWindowResize, false); + removeEventListener('online', this._onWindowOnline, false); } const extension = this.painter.context.gl.getExtension('WEBGL_lose_context'); diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 0cfa6160fa..b463132a1d 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -338,7 +338,7 @@ export default class Popup extends Evented { * .addTo(map); */ setText(text: string) { - return this.setDOMContent(window.document.createTextNode(text)); + return this.setDOMContent(document.createTextNode(text)); } /** @@ -361,8 +361,8 @@ export default class Popup extends Evented { * @see [Attach a popup to a marker instance](https://maplibre.org/maplibre-gl-js-docs/example/set-popup/) */ setHTML(html: string) { - const frag = window.document.createDocumentFragment(); - const temp = window.document.createElement('body'); + const frag = document.createDocumentFragment(); + const temp = document.createElement('body'); let child; temp.innerHTML = html; while (true) { @@ -403,7 +403,7 @@ export default class Popup extends Evented { * @returns {Popup} `this` * @example * // create an element with the popup content - * var div = window.document.createElement('div'); + * var div = document.createElement('div'); * div.innerHTML = 'Hello, world!'; * var popup = new maplibregl.Popup() * .setLngLat(e.lngLat) diff --git a/src/util/browser.ts b/src/util/browser.ts index 97c930abb4..b983f6c22a 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -1,7 +1,7 @@ import type {Cancelable} from '../types/cancelable'; -const now = window.performance && window.performance.now ? - window.performance.now.bind(window.performance) : +const now = performance && performance.now ? + performance.now.bind(performance) : Date.now.bind(Date); let linkEl; @@ -36,20 +36,20 @@ const exported = { }, resolveURL(path: string) { - if (!linkEl) linkEl = window.document.createElement('a'); + if (!linkEl) linkEl = document.createElement('a'); linkEl.href = path; return linkEl.href; }, - hardwareConcurrency: window.navigator && window.navigator.hardwareConcurrency || 4, + hardwareConcurrency: navigator && navigator.hardwareConcurrency || 4, // HM TODO: remove this from here... - get devicePixelRatio() { return window.devicePixelRatio; }, + get devicePixelRatio() { return devicePixelRatio; }, get prefersReducedMotion(): boolean { - if (!window.matchMedia) return false; + if (!matchMedia) return false; //Lazily initialize media query if (reducedMotionQuery == null) { - reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)'); + reducedMotionQuery = matchMedia('(prefers-reduced-motion: reduce)'); } return reducedMotionQuery.matches; }, diff --git a/src/util/browser/web_worker.ts b/src/util/browser/web_worker.ts deleted file mode 100644 index 888c127899..0000000000 --- a/src/util/browser/web_worker.ts +++ /dev/null @@ -1,7 +0,0 @@ -import mapboxgl from '../../'; - -import type {WorkerInterface} from '../web_worker'; - -export default function(): WorkerInterface { - return new Worker(mapboxgl.workerUrl) as any; -} diff --git a/src/util/performance.ts b/src/util/performance.ts index 07aa168453..db679a2712 100644 --- a/src/util/performance.ts +++ b/src/util/performance.ts @@ -1,7 +1,5 @@ import type {RequestParameters} from '../util/ajax'; -const performance = window.performance; - export type PerformanceMetrics = { loadTime: number, fullLoadTime: number, diff --git a/src/util/tile_request_cache.ts b/src/util/tile_request_cache.ts index 495b8297ce..19775329b3 100644 --- a/src/util/tile_request_cache.ts +++ b/src/util/tile_request_cache.ts @@ -20,8 +20,8 @@ export type ResponseOptions = { let sharedCache: Promise | undefined | null; function cacheOpen() { - if (window.caches && !sharedCache) { - sharedCache = window.caches.open(CACHE_NAME); + if (caches && !sharedCache) { + sharedCache = caches.open(CACHE_NAME); } } @@ -157,7 +157,7 @@ export function enforceCacheSizeLimit(limit: number) { } export function clearTileCache(callback?: (err?: Error | null) => void) { - const promise = window.caches.delete(CACHE_NAME); + const promise = caches.delete(CACHE_NAME); if (callback) { promise.catch(callback).then(() => callback()); } diff --git a/src/util/web_worker.ts b/src/util/web_worker.ts index 719e3c2fe9..f4120c45ae 100644 --- a/src/util/web_worker.ts +++ b/src/util/web_worker.ts @@ -1,98 +1,30 @@ -// This file is intended for use in the GL-JS test suite -// It implements a MessageBus main thread interface for use in Node environments -// In a browser environment, this file is replaced with ./src/util/browser/web_worker.js -// when Rollup builds the main bundle. -// See package.json#browser - -import Worker from '../source/worker'; - +import mapboxgl from '../'; import type {WorkerSource} from '../source/worker_source'; type MessageListener = ( - a: { - data: any, - target: any - } + a: { + data: any, + target: any + } ) => unknown; - -// The main thread interface. Provided by Worker in a browser environment, -// and MessageBus below in a node environment. export interface WorkerInterface { - addEventListener(type: "message", listener: MessageListener): void; - removeEventListener(type: "message", listener: MessageListener): void; - postMessage(message: any): void; - terminate(): void; + addEventListener(type: "message", listener: MessageListener): void; + removeEventListener(type: "message", listener: MessageListener): void; + postMessage(message: any): void; + terminate(): void; } export interface WorkerGlobalScopeInterface { - importScripts(...urls: Array): void; - registerWorkerSource: ( - b: string, - a: { - new (...args: any): WorkerSource - } - ) => void; - registerRTLTextPlugin: (_: any) => void; -} - -class MessageBus implements WorkerInterface, WorkerGlobalScopeInterface { - addListeners: Array; - postListeners: Array; - target: MessageBus; - registerWorkerSource: any; - registerRTLTextPlugin: any; - - constructor(addListeners: Array, postListeners: Array) { - this.addListeners = addListeners; - this.postListeners = postListeners; - } - - addEventListener(event: "message", callback: MessageListener) { - if (event === 'message') { - this.addListeners.push(callback); + importScripts(...urls: Array): void; + registerWorkerSource: ( + name: string, + WorkerSource: { + new(...args: any): WorkerSource } - } - - removeEventListener(event: "message", callback: MessageListener) { - const i = this.addListeners.indexOf(callback); - if (i >= 0) { - this.addListeners.splice(i, 1); - } - } - - postMessage(data: any) { - setImmediate(() => { - try { - for (const listener of this.postListeners) { - listener({data, target: this.target}); - } - } catch (e) { - console.error(e); - } - }); - } - - terminate() { - this.addListeners.splice(0, this.addListeners.length); - this.postListeners.splice(0, this.postListeners.length); - } - - importScripts() {} + ) => void; + registerRTLTextPlugin: (_: any) => void; } -export default function WebWorker(): WorkerInterface { - const parentListeners = [], - workerListeners = [], - parentBus = new MessageBus(workerListeners, parentListeners), - workerBus = new MessageBus(parentListeners, workerListeners); - - parentBus.target = workerBus; - workerBus.target = parentBus; - - new WebWorker.Worker(workerBus); - - return parentBus; +export default function (): WorkerInterface { + return new Worker(mapboxgl.workerUrl) as any; } - -// expose to allow stubbing in unit tests -WebWorker.Worker = Worker; diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index a31de26464..14b9be192f 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -243,7 +243,9 @@ export function deserialize(input: Serialized): unknown { if (typeof input === 'object') { const name = (input as any).$name || 'Object'; - + if (!registry[name]) { + throw new Error(`can't deserialize unregistered class ${name}`); + } const {klass} = registry[name]; if (!klass) { throw new Error(`can't deserialize unregistered class ${name}`); diff --git a/src/util/webp_supported.ts b/src/util/webp_supported.ts index 7e62846b2c..c063500148 100755 --- a/src/util/webp_supported.ts +++ b/src/util/webp_supported.ts @@ -10,8 +10,8 @@ let webpCheckComplete = false; let webpImgTest; let webpImgTestOnloadComplete = false; -if (window.document) { - webpImgTest = window.document.createElement('img'); +if (typeof document !== 'undefined') { + webpImgTest = document.createElement('img'); webpImgTest.onload = function() { if (glForTesting) testWebpTextureUpload(glForTesting); glForTesting = null; diff --git a/src/util/worker_pool.ts b/src/util/worker_pool.ts index 5a38c35380..44520da603 100644 --- a/src/util/worker_pool.ts +++ b/src/util/worker_pool.ts @@ -1,4 +1,4 @@ -import WebWorker from './web_worker'; +import webWorkerFactory from './web_worker'; import type {WorkerInterface} from './web_worker'; import browser from './browser'; @@ -26,7 +26,7 @@ export default class WorkerPool { // client code has had a chance to set it. this.workers = []; while (this.workers.length < WorkerPool.workerCount) { - this.workers.push(WebWorker()); + this.workers.push(webWorkerFactory()); } } diff --git a/tsconfig.json b/tsconfig.json index e89ea1f940..c887cb7292 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,7 @@ "esModuleInterop": true, "importHelpers": false, "isolatedModules": true, + "importsNotUsedAsValues": "preserve", "jsx": "preserve", "module": "ES6", "moduleResolution": "Node", From 24e2c8fc7ed9c271b9f50ff6c3a9c258ce5dcef4 Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 6 Aug 2021 15:41:23 +0300 Subject: [PATCH 093/142] Fix lint --- src/render/painter.ts | 2 +- src/render/program.ts | 6 ++--- src/shaders/shaders.ts | 56 ++++++++++++++++++++++-------------------- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/render/painter.ts b/src/render/painter.ts index 8f48e13f91..71b0ff3c62 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -11,7 +11,7 @@ import rasterBoundsAttributes from '../data/raster_bounds_attributes'; import posAttributes from '../data/pos_attributes'; import ProgramConfiguration from '../data/program_configuration'; import CrossTileSymbolIndex from '../symbol/cross_tile_symbol_index'; -import * as shaders from '../shaders/shaders'; +import shaders from '../shaders/shaders'; import Program from './program'; import {programUniforms} from './program/program_uniforms'; import Context from '../gl/context'; diff --git a/src/render/program.ts b/src/render/program.ts index 8b77e5ed67..2cafd05622 100644 --- a/src/render/program.ts +++ b/src/render/program.ts @@ -1,4 +1,4 @@ -import {prelude} from '../shaders/shaders'; +import shaders from '../shaders/shaders'; import assert from 'assert'; import ProgramConfiguration from '../data/program_configuration'; import VertexArrayObject from './vertex_array_object'; @@ -68,8 +68,8 @@ class Program { defines.push('#define OVERDRAW_INSPECTOR;'); } - const fragmentSource = defines.concat(prelude.fragmentSource, source.fragmentSource).join('\n'); - const vertexSource = defines.concat(prelude.vertexSource, source.vertexSource).join('\n'); + const fragmentSource = defines.concat(shaders.prelude.fragmentSource, source.fragmentSource).join('\n'); + const vertexSource = defines.concat(shaders.prelude.vertexSource, source.vertexSource).join('\n'); const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); if (gl.isContextLost()) { this.failedToCreate = true; diff --git a/src/shaders/shaders.ts b/src/shaders/shaders.ts index 4b3e6626c1..ccd1598e9e 100644 --- a/src/shaders/shaders.ts +++ b/src/shaders/shaders.ts @@ -54,32 +54,34 @@ import symbolSDFVert from './symbol_sdf.vertex.glsl'; import symbolTextAndIconFrag from './symbol_text_and_icon.fragment.glsl'; import symbolTextAndIconVert from './symbol_text_and_icon.vertex.glsl'; -export const prelude = compile(preludeFrag, preludeVert); -export const background = compile(backgroundFrag, backgroundVert); -export const backgroundPattern = compile(backgroundPatternFrag, backgroundPatternVert); -export const circle = compile(circleFrag, circleVert); -export const clippingMask = compile(clippingMaskFrag, clippingMaskVert); -export const heatmap = compile(heatmapFrag, heatmapVert); -export const heatmapTexture = compile(heatmapTextureFrag, heatmapTextureVert); -export const collisionBox = compile(collisionBoxFrag, collisionBoxVert); -export const collisionCircle = compile(collisionCircleFrag, collisionCircleVert); -export const debug = compile(debugFrag, debugVert); -export const fill = compile(fillFrag, fillVert); -export const fillOutline = compile(fillOutlineFrag, fillOutlineVert); -export const fillOutlinePattern = compile(fillOutlinePatternFrag, fillOutlinePatternVert); -export const fillPattern = compile(fillPatternFrag, fillPatternVert); -export const fillExtrusion = compile(fillExtrusionFrag, fillExtrusionVert); -export const fillExtrusionPattern = compile(fillExtrusionPatternFrag, fillExtrusionPatternVert); -export const hillshadePrepare = compile(hillshadePrepareFrag, hillshadePrepareVert); -export const hillshade = compile(hillshadeFrag, hillshadeVert); -export const line = compile(lineFrag, lineVert); -export const lineGradient = compile(lineGradientFrag, lineGradientVert); -export const linePattern = compile(linePatternFrag, linePatternVert); -export const lineSDF = compile(lineSDFFrag, lineSDFVert); -export const raster = compile(rasterFrag, rasterVert); -export const symbolIcon = compile(symbolIconFrag, symbolIconVert); -export const symbolSDF = compile(symbolSDFFrag, symbolSDFVert); -export const symbolTextAndIcon = compile(symbolTextAndIconFrag, symbolTextAndIconVert); +export default { + prelude: compile(preludeFrag, preludeVert), + background: compile(backgroundFrag, backgroundVert), + backgroundPattern: compile(backgroundPatternFrag, backgroundPatternVert), + circle: compile(circleFrag, circleVert), + clippingMask: compile(clippingMaskFrag, clippingMaskVert), + heatmap: compile(heatmapFrag, heatmapVert), + heatmapTexture: compile(heatmapTextureFrag, heatmapTextureVert), + collisionBox: compile(collisionBoxFrag, collisionBoxVert), + collisionCircle: compile(collisionCircleFrag, collisionCircleVert), + debug: compile(debugFrag, debugVert), + fill: compile(fillFrag, fillVert), + fillOutline: compile(fillOutlineFrag, fillOutlineVert), + fillOutlinePattern: compile(fillOutlinePatternFrag, fillOutlinePatternVert), + fillPattern: compile(fillPatternFrag, fillPatternVert), + fillExtrusion: compile(fillExtrusionFrag, fillExtrusionVert), + fillExtrusionPattern: compile(fillExtrusionPatternFrag, fillExtrusionPatternVert), + hillshadePrepare: compile(hillshadePrepareFrag, hillshadePrepareVert), + hillshade: compile(hillshadeFrag, hillshadeVert), + line: compile(lineFrag, lineVert), + lineGradient: compile(lineGradientFrag, lineGradientVert), + linePattern: compile(linePatternFrag, linePatternVert), + lineSDF: compile(lineSDFFrag, lineSDFVert), + raster: compile(rasterFrag, rasterVert), + symbolIcon: compile(symbolIconFrag, symbolIconVert), + symbolSDF: compile(symbolSDFFrag, symbolSDFVert), + symbolTextAndIcon: compile(symbolTextAndIconFrag, symbolTextAndIconVert) +}; // Expand #pragmas to #ifdefs. @@ -167,7 +169,7 @@ uniform ${precision} ${type} u_${name}; ${precision} ${type} ${name} = u_${name}; #endif `; - } else /* */{ + } else /* */ { return ` #ifndef HAS_UNIFORM_u_${name} ${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t); From 3cee03e32f5597ce4c79d44626d006c47e48ad9e Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 6 Aug 2021 15:42:03 +0300 Subject: [PATCH 094/142] Fix production build --- build/rollup_plugins.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index 86d6da8b4d..844f7091e1 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -14,6 +14,14 @@ import strip from '@rollup/plugin-strip'; export const plugins = (minified, production) => [ minifyStyleSpec(), json(), + // https://github.com/zaach/jison/issues/351 + replace({ + include: /\/jsonlint-lines-primitives\/lib\/jsonlint.js/, + delimiters: ['', ''], + values: { + '_token_stack:': '' + } + }), production ? strip({ sourceMap: true, functions: ['PerformanceUtils.*', 'Debug.*'] @@ -25,14 +33,6 @@ export const plugins = (minified, production) => [ } }) : false, production ? unassert() : false, - // https://github.com/zaach/jison/issues/351 - replace({ - include: /\/jsonlint-lines-primitives\/lib\/jsonlint.js/, - delimiters: ['', ''], - values: { - '_token_stack:': '' - } - }), resolve({ browser: true, preferBuiltins: false From e3eefb26ab0e7313e679d0cefd6904bab9a97867 Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 6 Aug 2021 16:22:44 +0300 Subject: [PATCH 095/142] Remove buble, stop compiling for es5 --- bench/rollup_config_benchmarks.js | 2 - package-lock.json | 89 ------------------------------- package.json | 2 - rollup.config.js | 14 ++--- rollup.config.style-spec.js | 9 ---- test/build/min.test.js | 24 ++------- test/build/style-spec.test.js | 12 ----- 7 files changed, 12 insertions(+), 140 deletions(-) diff --git a/bench/rollup_config_benchmarks.js b/bench/rollup_config_benchmarks.js index 8ef5437de9..b4ae0e9951 100644 --- a/bench/rollup_config_benchmarks.js +++ b/bench/rollup_config_benchmarks.js @@ -2,7 +2,6 @@ import fs from 'fs'; import sourcemaps from 'rollup-plugin-sourcemaps'; import replace from 'rollup-plugin-replace'; import {plugins} from '../build/rollup_plugins'; -import buble from 'rollup-plugin-buble'; import resolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; @@ -58,7 +57,6 @@ const viewConfig = { sourcemap: false }, plugins: [ - buble({transforms: {dangerousForOf: true}, objectAssign: true}), resolve({browser: true, preferBuiltins: false}), commonjs(), replace(replaceConfig) diff --git a/package-lock.json b/package-lock.json index a79718f168..9977df7ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2008,15 +2008,6 @@ "@types/node": "*" } }, - "@types/buble": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.20.1.tgz", - "integrity": "sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ==", - "dev": true, - "requires": { - "magic-string": "^0.25.0" - } - }, "@types/caseless": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", @@ -2590,29 +2581,6 @@ } } }, - "@types/rollup-plugin-buble": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@types/rollup-plugin-buble/-/rollup-plugin-buble-0.19.2.tgz", - "integrity": "sha512-GcWqRXqQrBRlyR4u6/xrGjwTpmVLd8Qt91Cf/7hoOtYiU49FLeQoaiACLozKdClYVz7xs/6USIIFFk9zuzsUbw==", - "dev": true, - "requires": { - "@types/buble": "*", - "@types/node": "*", - "rollup": "^0.63.4" - }, - "dependencies": { - "rollup": { - "version": "0.63.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.5.tgz", - "integrity": "sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "@types/node": "*" - } - } - } - }, "@types/rollup-plugin-json": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/rollup-plugin-json/-/rollup-plugin-json-3.0.3.tgz", @@ -3031,12 +2999,6 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, "acorn-globals": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", @@ -4105,41 +4067,6 @@ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, - "buble": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", - "integrity": "sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==", - "dev": true, - "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.3", - "minimist": "^1.2.0", - "os-homedir": "^2.0.0", - "regexpu-core": "^4.5.4" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, "buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", @@ -12938,12 +12865,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-2.0.0.tgz", - "integrity": "sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==", - "dev": true - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -17019,16 +16940,6 @@ "fsevents": "~2.3.2" } }, - "rollup-plugin-buble": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.19.8.tgz", - "integrity": "sha512-8J4zPk2DQdk3rxeZvxgzhHh/rm5nJkjwgcsUYisCQg1QbT5yagW+hehYEW7ZNns/NVbDCTv4JQ7h4fC8qKGOKw==", - "dev": true, - "requires": { - "buble": "^0.19.8", - "rollup-pluginutils": "^2.3.3" - } - }, "rollup-plugin-sourcemaps": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", diff --git a/package.json b/package.json index 7f1866af47..ccce9afe5a 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "@types/react": "^16.14.2", "@types/react-dom": "^16.9.10", "@types/request": "^2.48.5", - "@types/rollup-plugin-buble": "^0.19.1", "@types/rollup-plugin-json": "^3.0.2", "@types/rollup-plugin-sourcemaps": "^0.4.2", "@types/selenium-webdriver": "^4.0.10", @@ -137,7 +136,6 @@ "react-dom": "^16.8.6", "request": "^2.88.0", "rollup": "^2.56.0", - "rollup-plugin-buble": "^0.19.8", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-unassert": "^0.3.0", diff --git a/rollup.config.js b/rollup.config.js index 887e1ad8ed..9cf8ce2afd 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -11,14 +11,14 @@ const outputFile = minified ? 'dist/maplibre-gl.js' : 'dist/maplibre-gl-unminified.js'; export default [{ - // First, use code splitting to bundle GL JS into three "chunks": - // - rollup/build/index.js: the main module, plus all its dependencies not shared by the worker module - // - rollup/build/worker.js: the worker module, plus all dependencies not shared by the main module - // - rollup/build/shared.js: the set of modules that are dependencies of both the main module and the worker module + // Before rollup you should run build-tsc to transpile from typesript to javascript + // and to copy the shaders and convert them to js strings + // Rollup will use code splitting to bundle GL JS into three "chunks": + // - rollup/build/maplibregl/index.js: the main module, plus all its dependencies not shared by the worker module + // - rollup/build/maplibregl/worker.js: the worker module, plus all dependencies not shared by the main module + // - rollup/build/maplibregl/shared.js: the set of modules that are dependencies of both the main module and the worker module // - // This is also where we do all of our source transformations: removing - // flow annotations, transpiling ES6 features using buble, inlining shader - // sources as strings, etc. + // This is also where we do all of our source transformations using the plugins. input: ['rollup/build/tsc/index.js', 'rollup/build/tsc/source/worker.js'], output: { dir: 'rollup/build/maplibregl', diff --git a/rollup.config.style-spec.js b/rollup.config.style-spec.js index f83ca81b54..b13145eae3 100644 --- a/rollup.config.style-spec.js +++ b/rollup.config.style-spec.js @@ -1,6 +1,5 @@ import path, {dirname} from 'path'; import replace from '@rollup/plugin-replace'; -import buble from 'rollup-plugin-buble'; import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import unassert from 'rollup-plugin-unassert'; @@ -9,15 +8,8 @@ import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); - -// Build es modules? const esm = 'esm' in process.env; -const transforms = { - dangerousForOf: true, - modules: esm ? false : undefined -}; - const ROOT_DIR = __dirname; const config = [{ @@ -55,7 +47,6 @@ const config = [{ } }), json(), - buble({transforms, objectAssign: "Object.assign"}), unassert(), resolve({ browser: true, diff --git a/test/build/min.test.js b/test/build/min.test.js index fec6e2c62d..719ea04791 100644 --- a/test/build/min.test.js +++ b/test/build/min.test.js @@ -2,7 +2,6 @@ import {test} from '../util/test'; import fs from 'fs'; import path, {dirname} from 'path'; import reference from '../../rollup/build/tsc/style-spec/reference/latest'; -import {Linter} from 'eslint'; import packageJson from '../../package.json'; import browserify from 'browserify'; import { fileURLToPath } from 'url'; @@ -45,26 +44,13 @@ test('evaluates without errors', async (t) => { } }; global.Blob = function() {}; + global.performance = {}; + global.navigator = {}; try { - let mgl = await import ('../../dist/maplibre-gl.js'); - } catch { - t.fail(); + await import ('../../dist/maplibre-gl.js'); + } catch (e) { + t.error(e); } t.end(); }); -test('distributed in plain ES5 code', (t) => { - const linter = new Linter(); - const messages = linter.verify(minBundle, { - parserOptions: { - ecmaVersion: 5 - }, - rules: {}, - env: { - node: true - } - }); - t.deepEqual(messages.map(message => `${message.line}:${message.column}: ${message.message}`), []); - t.end(); -}); - diff --git a/test/build/style-spec.test.js b/test/build/style-spec.test.js index f28889651e..09ba2673d9 100644 --- a/test/build/style-spec.test.js +++ b/test/build/style-spec.test.js @@ -14,18 +14,6 @@ const styleSpecDistBundle = fs.readFileSync('./dist/style-spec/index.js', 'utf-8 test('@mapbox/mapbox-gl-style-spec npm package', (t) => { t.test('build plain ES5 bundle in prepublish', (t) => { - const linter = new Linter(); - const messages = linter.verify(styleSpecDistBundle, { - parserOptions: { - ecmaVersion: 5 - }, - rules: {}, - env: { - node: true - } - }).map(message => `${message.line}:${message.column}: ${message.message}`); - t.deepEqual(messages, [], 'distributed bundle is plain ES5 code'); - t.stub(console, 'warn'); rollup.rollup({ input: `./rollup/build/tsc/style-spec/style-spec.js`, From f05202f541e6c58b7bd9ce4f603fefb4d8d31bba Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 6 Aug 2021 23:22:21 +0300 Subject: [PATCH 096/142] Added missing global definitions after removing window --- test/stub_loader.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/stub_loader.js b/test/stub_loader.js index 2db82e47e9..a4d741a8ea 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -21,6 +21,8 @@ global.HTMLCanvasElement = window.HTMLCanvasElement; global.OffscreenCanvas = window.OffscreenCanvas; global.Image = window.Image; global.navigator = window.navigator; +global.performance = window.performance; +global.devicePixelRatio = window.devicePixelRatio; global.WheelEvent = window.WheelEvent; // stubbing image load as it is not implemented in jsdom // eslint-disable-next-line accessor-pairs From 784e23de2410df190494f22a627f15b361a83f87 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 8 Aug 2021 00:49:59 +0300 Subject: [PATCH 097/142] Fix tests, bring back web_worker mock file, fix maplibre-gl loading issue, revert tsconfig. --- build/web_worker_replacement.js | 5 ++ package.json | 4 +- src/source/tile.ts | 1 + src/util/tile_request_cache.ts | 2 +- src/util/web_worker.ts | 80 +++++++++++++++++++++-- test/stub_loader.js | 6 ++ test/unit/ui/map.test.js | 7 +- test/unit/util/actor.test.js | 10 +-- test/unit/util/mapbox.test.js | 4 +- test/unit/util/tile_request_cache.test.js | 18 ++--- tsconfig.json | 2 +- 11 files changed, 109 insertions(+), 30 deletions(-) create mode 100644 build/web_worker_replacement.js diff --git a/build/web_worker_replacement.js b/build/web_worker_replacement.js new file mode 100644 index 0000000000..a4d9df48b5 --- /dev/null +++ b/build/web_worker_replacement.js @@ -0,0 +1,5 @@ +import maplibregl from '../' + +export default function () { + return new Worker(maplibregl.workerUrl); +} \ No newline at end of file diff --git a/package.json b/package.json index ccce9afe5a..fa774ea5af 100644 --- a/package.json +++ b/package.json @@ -155,9 +155,7 @@ "typescript": "^4.3.5" }, "browser": { - "./src/shaders/index.js": "./src/shaders/shaders.js", - "./src/util/window.js": "./src/util/browser/window.js", - "./src/util/web_worker.js": "./src/util/browser/web_worker.js" + "./rollup/build/tsc/util/web_worker.js": "./build/web_worker_replacement.js" }, "scripts": { "build-glsl": "node rollup/copy-glsl-files.js ./rollup/build/tsc/shaders", diff --git a/src/source/tile.ts b/src/source/tile.ts index 61131d043a..27651d84a2 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -1,5 +1,6 @@ import {uniqueId, parseCacheControl} from '../util/util'; import {deserialize as deserializeBucket} from '../data/bucket'; +import '../data/feature_index'; import FeatureIndex from '../data/feature_index'; import GeoJSONFeature from '../util/vectortile_to_geojson'; import featureFilter from '../style-spec/feature_filter'; diff --git a/src/util/tile_request_cache.ts b/src/util/tile_request_cache.ts index 19775329b3..b7b49e702f 100644 --- a/src/util/tile_request_cache.ts +++ b/src/util/tile_request_cache.ts @@ -20,7 +20,7 @@ export type ResponseOptions = { let sharedCache: Promise | undefined | null; function cacheOpen() { - if (caches && !sharedCache) { + if (typeof caches !== 'undefined' && !sharedCache) { sharedCache = caches.open(CACHE_NAME); } } diff --git a/src/util/web_worker.ts b/src/util/web_worker.ts index f4120c45ae..1ba31c7811 100644 --- a/src/util/web_worker.ts +++ b/src/util/web_worker.ts @@ -1,5 +1,12 @@ -import mapboxgl from '../'; -import type {WorkerSource} from '../source/worker_source'; +// When Rollup builds the main bundle this file is replaced with ./build/web_worker_replacement.js +// See package.json 'browser' field and rollup documentation. +// This file is intended for use in the GL-JS test suite when they run on node since node doesn't support workers. +// It implements a MessageBus main thread interface +// I haven't fuond a good way to remove this file and stub its code in stub loader file... delete this comment if you managed to :-) + +import MaplibreWorker from '../source/worker'; + +import type { WorkerSource } from '../source/worker_source'; type MessageListener = ( a: { @@ -7,6 +14,9 @@ type MessageListener = ( target: any } ) => unknown; + +// The main thread interface. Provided by Worker in a browser environment, +// and MessageBus below in a node environment. export interface WorkerInterface { addEventListener(type: "message", listener: MessageListener): void; removeEventListener(type: "message", listener: MessageListener): void; @@ -17,14 +27,72 @@ export interface WorkerInterface { export interface WorkerGlobalScopeInterface { importScripts(...urls: Array): void; registerWorkerSource: ( - name: string, - WorkerSource: { + b: string, + a: { new(...args: any): WorkerSource } ) => void; registerRTLTextPlugin: (_: any) => void; } -export default function (): WorkerInterface { - return new Worker(mapboxgl.workerUrl) as any; +class MessageBus implements WorkerInterface, WorkerGlobalScopeInterface { + addListeners: Array; + postListeners: Array; + target: MessageBus; + registerWorkerSource: any; + registerRTLTextPlugin: any; + + constructor(addListeners: Array, postListeners: Array) { + this.addListeners = addListeners; + this.postListeners = postListeners; + } + + addEventListener(event: "message", callback: MessageListener) { + if (event === 'message') { + this.addListeners.push(callback); + } + } + + removeEventListener(event: "message", callback: MessageListener) { + const i = this.addListeners.indexOf(callback); + if (i >= 0) { + this.addListeners.splice(i, 1); + } + } + + postMessage(data: any) { + setImmediate(() => { + try { + for (const listener of this.postListeners) { + listener({ data, target: this.target }); + } + } catch (e) { + console.error(e); + } + }); + } + + terminate() { + this.addListeners.splice(0, this.addListeners.length); + this.postListeners.splice(0, this.postListeners.length); + } + + importScripts() { } +} + +export default function workerFactory(): WorkerInterface { + const parentListeners = [], + workerListeners = [], + parentBus = new MessageBus(workerListeners, parentListeners), + workerBus = new MessageBus(parentListeners, workerListeners); + + parentBus.target = workerBus; + workerBus.target = parentBus; + + new workerFactory.Worker(workerBus); + + return parentBus; } + +// expose to allow stubbing in unit tests +workerFactory.Worker = MaplibreWorker; \ No newline at end of file diff --git a/test/stub_loader.js b/test/stub_loader.js index a4d741a8ea..dda5c268d0 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -23,6 +23,10 @@ global.Image = window.Image; global.navigator = window.navigator; global.performance = window.performance; global.devicePixelRatio = window.devicePixelRatio; +global.addEventListener = window.addEventListener; +global.removeEventListener = window.removeEventListener; +global.matchMedia = window.matchMedia; +global.caches = window.caches; global.WheelEvent = window.WheelEvent; // stubbing image load as it is not implemented in jsdom // eslint-disable-next-line accessor-pairs @@ -137,3 +141,5 @@ window.performance.mark = function () { }; window.performance.measure = function () { }; window.performance.clearMarks = function () { }; window.performance.clearMeasures = function () { }; + + diff --git a/test/unit/ui/map.test.js b/test/unit/ui/map.test.js index b41a25cb1d..54f97727e3 100755 --- a/test/unit/ui/map.test.js +++ b/test/unit/ui/map.test.js @@ -568,10 +568,11 @@ test('Map', (t) => { }); t.test('listen to window resize event', (t) => { - window.addEventListener = function(type) { + let original = global.addEventListener; + global.addEventListener = function(type) { if (type === 'resize') { - //restore empty function not to mess with other tests - window.addEventListener = function() {}; + //restore original function not to mess with other tests + global.addEventListener = original; t.end(); } diff --git a/test/unit/util/actor.test.js b/test/unit/util/actor.test.js index 52d993bb46..d91c59bdb4 100644 --- a/test/unit/util/actor.test.js +++ b/test/unit/util/actor.test.js @@ -1,11 +1,11 @@ import '../../stub_loader'; import {test} from '../../util/test'; import Actor from '../../../rollup/build/tsc/util/actor'; -import WebWorker from '../../../rollup/build/tsc/util/web_worker'; +import workerFactory from '../../../rollup/build/tsc/util/web_worker'; test('Actor', (t) => { t.test('forwards resopnses to correct callback', (t) => { - t.stub(WebWorker, 'Worker').callsFake(function Worker(self) { + t.stub(workerFactory, 'Worker').callsFake(function Worker(self) { this.self = self; this.actor = new Actor(self, this); this.test = function (mapId, params, callback) { @@ -13,7 +13,7 @@ test('Actor', (t) => { }; }); - const worker = new WebWorker(); + const worker = workerFactory(); const m1 = new Actor(worker, {}, 1); const m2 = new Actor(worker, {}, 2); @@ -32,12 +32,12 @@ test('Actor', (t) => { t.test('targets worker-initiated messages to correct map instance', (t) => { let workerActor; - t.stub(WebWorker, 'Worker').callsFake(function Worker(self) { + t.stub(workerFactory, 'Worker').callsFake(function Worker(self) { this.self = self; this.actor = workerActor = new Actor(self, this); }); - const worker = new WebWorker(); + const worker = workerFactory(); new Actor(worker, { test () { t.end(); } diff --git a/test/unit/util/mapbox.test.js b/test/unit/util/mapbox.test.js index f777a8225b..24f12c56a3 100644 --- a/test/unit/util/mapbox.test.js +++ b/test/unit/util/mapbox.test.js @@ -326,14 +326,14 @@ test("mapbox", (t) => { }); t.test('.normalizeTileURL inserts @2x on 2x devices', (t) => { - window.devicePixelRatio = 2; + global.devicePixelRatio = 2; config.API_URL = 'http://path.png'; config.REQUIRE_ACCESS_TOKEN = false; t.equal(manager.normalizeTileURL('mapbox://path.png/tile.png'), `http://path.png/v4/tile@2x.png`); t.equal(manager.normalizeTileURL('mapbox://path.png/tile.png32'), `http://path.png/v4/tile@2x.png32`); t.equal(manager.normalizeTileURL('mapbox://path.png/tile.jpg70'), `http://path.png/v4/tile@2x.jpg70`); t.equal(manager.normalizeTileURL('mapbox://path.png/tile.png?access_token=foo'), `http://path.png/v4/tile@2x.png?access_token=foo`); - window.devicePixelRatio = 1; + global.devicePixelRatio = 1; t.end(); }); diff --git a/test/unit/util/tile_request_cache.test.js b/test/unit/util/tile_request_cache.test.js index 2b7704b2d1..b2d8e14cd0 100644 --- a/test/unit/util/tile_request_cache.test.js +++ b/test/unit/util/tile_request_cache.test.js @@ -6,17 +6,17 @@ import sinon from 'sinon'; test('tile_request_cache', (t) => { t.beforeEach(callback => { cacheClose(); - window.caches = sinon.stub(); + global.caches = sinon.stub(); callback(); }); t.afterEach(callback => { - delete window.caches; + delete global.caches; callback(); }); - t.test('cachePut, no window.caches', (t) => { - delete window.caches; + t.test('cachePut, no caches', (t) => { + delete global.caches; let result; try { @@ -29,8 +29,8 @@ test('tile_request_cache', (t) => { t.end(); }); - t.test('cacheGet, no window.caches', (t) => { - delete window.caches; + t.test('cacheGet, no caches', (t) => { + delete global.caches; cacheGet({url:''}, (result) => { t.ifError(result, 'should not result in error'); @@ -40,7 +40,7 @@ test('tile_request_cache', (t) => { }); t.test('cacheGet, cache open error', (t) => { - window.caches.open = sinon.stub().rejects(new Error('The operation is insecure')); + global.caches.open = sinon.stub().rejects(new Error('The operation is insecure')); cacheGet({url:''}, (error) => { t.ok(error, 'should result in error'); @@ -52,7 +52,7 @@ test('tile_request_cache', (t) => { t.test('cacheGet, cache match error', (t) => { const fakeCache = sinon.stub(); fakeCache.match = sinon.stub().withArgs('someurl').rejects(new Error('ohno')); - window.caches.open = sinon.stub().resolves(fakeCache); + global.caches.open = sinon.stub().resolves(fakeCache); cacheGet({url:'someurl'}, (error) => { t.ok(error, 'should result in error'); @@ -76,7 +76,7 @@ test('tile_request_cache', (t) => { fakeCache.delete = sinon.stub(); fakeCache.put = sinon.stub(); - window.caches.open = sinon.stub().resolves(fakeCache); + global.caches.open = sinon.stub().resolves(fakeCache); cacheGet({url:'someurl'}, (error, response, fresh) => { t.ifError(error, 'should not result in error'); diff --git a/tsconfig.json b/tsconfig.json index c887cb7292..0cad85d29c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "esModuleInterop": true, "importHelpers": false, "isolatedModules": true, - "importsNotUsedAsValues": "preserve", + //"importsNotUsedAsValues": "preserve", "jsx": "preserve", "module": "ES6", "moduleResolution": "Node", From 6610b951ffde78e5a2f6f3e81a8dfb7ff6bb8ba5 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 8 Aug 2021 08:58:37 +0300 Subject: [PATCH 098/142] Fix build? --- build/web_worker_replacement.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/web_worker_replacement.js b/build/web_worker_replacement.js index a4d9df48b5..a8775b89bd 100644 --- a/build/web_worker_replacement.js +++ b/build/web_worker_replacement.js @@ -1,4 +1,4 @@ -import maplibregl from '../' +import maplibregl from '../rollup/build/tsc/index' export default function () { return new Worker(maplibregl.workerUrl); From 4db26290f0c43076767adc59a1fd29e797a386e2 Mon Sep 17 00:00:00 2001 From: HarelM Date: Sun, 8 Aug 2021 09:10:17 +0300 Subject: [PATCH 099/142] Fix lint --- src/source/tile.ts | 2 +- src/util/web_worker.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/source/tile.ts b/src/source/tile.ts index 27651d84a2..839a075f59 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -1,7 +1,7 @@ import {uniqueId, parseCacheControl} from '../util/util'; import {deserialize as deserializeBucket} from '../data/bucket'; import '../data/feature_index'; -import FeatureIndex from '../data/feature_index'; +import type FeatureIndex from '../data/feature_index'; import GeoJSONFeature from '../util/vectortile_to_geojson'; import featureFilter from '../style-spec/feature_filter'; import SymbolBucket from '../data/bucket/symbol_bucket'; diff --git a/src/util/web_worker.ts b/src/util/web_worker.ts index 1ba31c7811..956cba3d75 100644 --- a/src/util/web_worker.ts +++ b/src/util/web_worker.ts @@ -6,7 +6,7 @@ import MaplibreWorker from '../source/worker'; -import type { WorkerSource } from '../source/worker_source'; +import type {WorkerSource} from '../source/worker_source'; type MessageListener = ( a: { @@ -64,7 +64,7 @@ class MessageBus implements WorkerInterface, WorkerGlobalScopeInterface { setImmediate(() => { try { for (const listener of this.postListeners) { - listener({ data, target: this.target }); + listener({data, target: this.target}); } } catch (e) { console.error(e); @@ -95,4 +95,4 @@ export default function workerFactory(): WorkerInterface { } // expose to allow stubbing in unit tests -workerFactory.Worker = MaplibreWorker; \ No newline at end of file +workerFactory.Worker = MaplibreWorker; From 1d76444e2378f18413d53995b205f2892ea08074 Mon Sep 17 00:00:00 2001 From: Harel M Date: Mon, 9 Aug 2021 00:02:09 +0300 Subject: [PATCH 100/142] Typescript: Fix query-tests (#240) * Initial commit to fix query-tests * Fix query tests --- build/rollup_plugins.js | 2 +- build/test/build-tape.js | 10 ++- package.json | 4 +- rollup.config.js | 6 +- test/integration/lib/generate-fixture-json.js | 15 +++-- test/integration/lib/localize-urls.js | 10 +-- test/integration/lib/server.js | 2 +- test/integration/rollup.config.test.js | 2 +- test/integration/{testem.js => testem.cjs} | 61 +++++++++-------- test/stub_loader.js | 23 +++++-- test/suite_implementation.js | 66 ++++++------------- 11 files changed, 96 insertions(+), 105 deletions(-) rename test/integration/{testem.js => testem.cjs} (75%) diff --git a/build/rollup_plugins.js b/build/rollup_plugins.js index 844f7091e1..664ad1c672 100644 --- a/build/rollup_plugins.js +++ b/build/rollup_plugins.js @@ -5,7 +5,7 @@ import commonjs from '@rollup/plugin-commonjs'; import unassert from 'rollup-plugin-unassert'; import json from '@rollup/plugin-json'; import {terser} from 'rollup-plugin-terser'; -import minifyStyleSpec from './rollup_plugin_minify_style_spec'; +import minifyStyleSpec from './rollup_plugin_minify_style_spec.js'; import strip from '@rollup/plugin-strip'; // Common set of plugins/transformations shared across different rollup diff --git a/build/test/build-tape.js b/build/test/build-tape.js index 78f11d8d1e..81345061ee 100644 --- a/build/test/build-tape.js +++ b/build/test/build-tape.js @@ -1,11 +1,9 @@ -/* eslint-disable import/no-commonjs */ -/* eslint-disable flowtype/require-valid-file-annotation */ -const browserify = require('browserify'); -const fs = require('fs'); +import browserify from 'browserify'; +import fs from 'fs'; -module.exports = function() { +export default function() { return new Promise((resolve, reject) => { - browserify(require.resolve('../../test/util/tape_config.js'), { standalone: 'tape' }) + browserify('./test/util/tape_config.js', { standalone: 'tape' }) .transform("babelify", {presets: ["@babel/preset-env"], global: true}) .bundle((err, buff) => { if (err) { throw err; } diff --git a/package.json b/package.json index fa774ea5af..200f5a8f45 100644 --- a/package.json +++ b/package.json @@ -194,8 +194,8 @@ "test-browser": "tap --node-arg --no-warnings --node-arg --experimental-specifier-resolution=node --node-arg --experimental-json-modules --reporter classic --no-coverage test/browser/**/*.test.js", "test-render": "node --experimental-specifier-resolution=node --experimental-json-modules --max-old-space-size=2048 test/render.test.js", "test-query-node": "node --experimental-specifier-resolution=node --experimental-json-modules test/query.test.js", - "watch-query": "testem -f test/integration/testem.js", - "test-query": "testem ci -f test/integration/testem.js -R xunit > test/integration/query-tests/test-results.xml", + "watch-query": "testem -f test/integration/testem.cjs", + "test-query": "testem ci -f test/integration/testem.cjs -R xunit > test/integration/query-tests/test-results.xml", "test-expressions": "node --experimental-specifier-resolution=node test/expression.test.js", "test-cov": "nyc --reporter=text-summary --reporter=lcov --cache run-s test-unit test-expressions test-query test-render", "prepublishOnly": "run-s prepare-publish build-dev build-prod-min build-prod build-csp build-css build-style-spec test-build diff-tarball", diff --git a/rollup.config.js b/rollup.config.js index 9cf8ce2afd..770e8b265f 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,7 @@ import fs from 'fs'; import sourcemaps from 'rollup-plugin-sourcemaps'; -import {plugins} from './build/rollup_plugins'; -import banner from './build/banner'; +import {plugins} from './build/rollup_plugins.js'; +import banner from './build/banner.js'; const {BUILD, MINIFY} = process.env; const minified = MINIFY === 'true'; @@ -40,7 +40,7 @@ export default [{ format: 'umd', sourcemap: production ? true : 'inline', indent: false, - intro: fs.readFileSync(require.resolve('./rollup/bundle_prelude.js'), 'utf8'), + intro: fs.readFileSync('./rollup/bundle_prelude.js', 'utf8'), banner }, treeshake: false, diff --git a/test/integration/lib/generate-fixture-json.js b/test/integration/lib/generate-fixture-json.js index b4bf77377f..17af524bcc 100644 --- a/test/integration/lib/generate-fixture-json.js +++ b/test/integration/lib/generate-fixture-json.js @@ -1,13 +1,14 @@ -/* eslint-disable import/no-commonjs */ -const path = require('path'); -const fs = require('fs'); -const glob = require('glob'); -const localizeURLs = require('./localize-urls'); +import path from 'path'; +import fs from 'fs'; +import glob from 'glob'; +import localizeURLs from './localize-urls.js'; const OUTPUT_FILE = 'fixtures.json'; -exports.generateFixtureJson = generateFixtureJson; -exports.getAllFixtureGlobs = getAllFixtureGlobs; +export default { + generateFixtureJson: generateFixtureJson, + getAllFixtureGlobs: getAllFixtureGlobs +} /** * Analyzes the contents of the specified `path.join(rootDirectory, suiteDirectory)`, and inlines diff --git a/test/integration/lib/localize-urls.js b/test/integration/lib/localize-urls.js index 39a6fcb018..8556761144 100644 --- a/test/integration/lib/localize-urls.js +++ b/test/integration/lib/localize-urls.js @@ -50,23 +50,23 @@ export default function localizeURLs(style, port) { }; function localizeURL(url, port) { - return url.replace(/^local:\/\//, `test://localhost:${port}/`); + return url.replace(/^local:\/\//, `http://localhost:${port}/`); } function localizeMapboxSpriteURL(url, port) { - return url.replace(/^mapbox:\/\//, `test://localhost:${port}/`); + return url.replace(/^mapbox:\/\//, `http://localhost:${port}/`); } function localizeMapboxFontsURL(url, port) { - return url.replace(/^mapbox:\/\/fonts/, `test://localhost:${port}/glyphs`); + return url.replace(/^mapbox:\/\/fonts/, `http://localhost:${port}/glyphs`); } function localizeMapboxTilesURL(url, port) { - return url.replace(/^mapbox:\/\//, `test://localhost:${port}/tiles/`); + return url.replace(/^mapbox:\/\//, `http://localhost:${port}/tiles/`); } function localizeMapboxTilesetURL(url, port) { - return url.replace(/^mapbox:\/\//, `test://localhost:${port}/tilesets/`); + return url.replace(/^mapbox:\/\//, `http://localhost:${port}/tilesets/`); } function localizeSourceURLs(source, port) { diff --git a/test/integration/lib/server.js b/test/integration/lib/server.js index bfa28bcd14..f4ab33875d 100644 --- a/test/integration/lib/server.js +++ b/test/integration/lib/server.js @@ -2,7 +2,7 @@ import path, {dirname} from 'path'; import fs from 'fs'; import st from 'st'; import {createServer} from 'http'; -import localizeURLs from './localize-urls'; +import localizeURLs from './localize-urls.js'; import { fileURLToPath } from 'url'; import { createRequire } from 'module'; diff --git a/test/integration/rollup.config.test.js b/test/integration/rollup.config.test.js index 668ef4e013..f3dbf92b03 100644 --- a/test/integration/rollup.config.test.js +++ b/test/integration/rollup.config.test.js @@ -1,4 +1,4 @@ -import {plugins} from '../../build/rollup_plugins'; +import {plugins} from '../../build/rollup_plugins.js'; export default { input: 'test/integration/lib/query-browser.js', diff --git a/test/integration/testem.js b/test/integration/testem.cjs similarity index 75% rename from test/integration/testem.js rename to test/integration/testem.cjs index 777c010a23..d41cf750a4 100644 --- a/test/integration/testem.js +++ b/test/integration/testem.cjs @@ -1,16 +1,8 @@ -/* eslint-disable no-global-assign */ -/* eslint-disable import/no-commonjs */ -/* eslint-disable flowtype/require-valid-file-annotation */ -require = require("esm")(module); -const {generateFixtureJson, getAllFixtureGlobs} = require('./lib/generate-fixture-json'); -const createServer = require('./lib/server'); -const buildTape = require('../../build/test/build-tape'); const runAll = require('npm-run-all'); const chokidar = require('chokidar'); const rollup = require('rollup'); const notifier = require('node-notifier'); -const rollupDevConfig = require('../../rollup.config').default; -const rollupTestConfig = require('./rollup.config.test').default; +let generateFixtureJson, getAllFixtureGlobs, buildTape, rollupDevConfig, rollupTestConfig, createServer const rootFixturePath = 'test/integration/'; const suitePath = 'query-tests'; @@ -22,21 +14,31 @@ let server; let fixtureWatcher; const rollupWatchers = {}; -module.exports = { - "test_page": "test/integration/testem_page.html", - "src_files": [ +async function loadEs6StyleFiles() { + let importGenerate = (await import('./lib/generate-fixture-json.js')).default; + generateFixtureJson = importGenerate.generateFixtureJson; + getAllFixtureGlobs = importGenerate.getAllFixtureGlobs; + buildTape = (await import('../../build/test/build-tape.js')).default; + rollupDevConfig = (await import('../../rollup.config.js')).default; + rollupTestConfig = (await import('./rollup.config.test.js')).default; + createServer = (await import('./lib/server.js')).default; +} + +module.exports = { + test_page: "test/integration/testem_page.html", + src_files: [ "dist/maplibre-gl-dev.js", "test/integration/dist/query-test.js" ], - "launch_in_dev": [], - "launch_in_ci": [ "Chrome" ], - "browser_args": { - "Chrome": { - "mode": "ci", - "args": [ "--headless", "--disable-gpu", "--remote-debugging-port=9222" ] + launch_in_dev: [], + launch_in_ci: [ "Chrome" ], + browser_args: { + Chrome: { + mode: "ci", + args: [ "--headless", "--disable-gpu", "--remote-debugging-port=9222" ] } }, - "proxies": { + proxies: { "/tiles":{ "target": "http://localhost:2900" }, @@ -56,20 +58,21 @@ module.exports = { "target": "http://localhost:2900" } }, - "before_tests"(config, data, callback) { + before_tests(config, data, callback) { if (!beforeHookInvoked) { - server = createServer(); - const buildPromise = config.appMode === 'ci' ? buildArtifactsCi() : buildArtifactsDev(); - buildPromise.then(() => { - server.listen(callback); - }).catch((e) => { - callback(e); + loadEs6StyleFiles().then(() => { + server = createServer(); + const buildPromise = config.appMode === 'ci' ? buildArtifactsCi() : buildArtifactsDev(); + buildPromise.then(() => { + server.listen(callback); + }).catch((e) => { + callback(e); + }); + beforeHookInvoked = true; }); - - beforeHookInvoked = true; } }, - "after_tests"(config, data, callback) { + after_tests(config, data, callback) { if (config.appMode === 'ci') { server.close(callback); } diff --git a/test/stub_loader.js b/test/stub_loader.js index dda5c268d0..108c49c06b 100644 --- a/test/stub_loader.js +++ b/test/stub_loader.js @@ -28,6 +28,11 @@ global.removeEventListener = window.removeEventListener; global.matchMedia = window.matchMedia; global.caches = window.caches; global.WheelEvent = window.WheelEvent; +global.Blob = window.Blob; +global.URL = window.URL; +global.fetch = window.fetch; +global.document = window.document; +global.window = window; // stubbing image load as it is not implemented in jsdom // eslint-disable-next-line accessor-pairs Object.defineProperty(global.Image.prototype, 'src', { @@ -35,6 +40,18 @@ Object.defineProperty(global.Image.prototype, 'src', { if (!this.onload) { return; } + if (src.startsWith('data:image/png')) { + let base64 = src.replace(/data:.*;base64,/, ''); + let buff = Buffer.from(base64, 'base64'); + new PNG().parse(buff, (err, png) => { + if (err) throw new Error("Couldn't parse PNG"); + this.data = png.data; + this.height = png.height; + this.width = png.width; + this.onload(); + }); + return; + } if (src && typeof src === 'string' && !src.startsWith('blob')) { this.onload(); return; @@ -62,11 +79,7 @@ Object.defineProperty(global.Image.prototype, 'src', { reader.readAsArrayBuffer(lastDataFromUrl); } }); -global.Blob = window.Blob; -global.URL = window.URL; -global.fetch = window.fetch; -global.document = window.document; -global.window = window; + // Delete local and session storage from JSDOM and stub them out with a warning log // Accessing these properties during extend() produces an error in Node environments diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 7476c08b8d..f10551ea7f 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -26,7 +26,13 @@ rtlTextPlugin['processBidirectionalText'] = rtlText.processBidirectionalText; rtlTextPlugin['processStyledBidirectionalText'] = rtlText.processStyledBidirectionalText; // replacing the browser method of get image in order to avoid usage of context and canvas 2d with Image object... -browser.getImageData = function({width, height, data}, padding = 0) { +browser.getImageData = function (img, padding = 0) { + if (!img.data) { + return {width: 1, height: 1, data: new Uint8Array(1)} + } + let width = img.width; + let height = img.height; + let data = img.data; const source = new Uint8Array(data); const dest = new Uint8Array((2 * padding + width) * (2 * padding + height) * 4); @@ -53,10 +59,20 @@ export default function(style, options, _callback) { } window.devicePixelRatio = options.pixelRatio; - - maplibregl.addProtocol('test', (req, callback) => { - handleProtocolRequest(req, callback); - }) + window.useFakeXMLHttpRequest(); + XMLHttpRequest.onCreate = req => { + setTimeout(() => { + let reqObj = req.url + if (req.responseType == 'arraybuffer') { + reqObj = { url: req.url, encoding: null } + } + request(reqObj, (error, response, body) => { + req.setStatus(response.statusCode); + req.response = body; + req.onload(); + }); + }, 0); + } if (options.addFakeCanvas) { const fakeCanvas = createFakeCanvas(window.document, options.addFakeCanvas.id, options.addFakeCanvas.image); @@ -227,43 +243,3 @@ function updateFakeCanvas(document, id, imagePath) { fakeCanvas.data = image.data; } -function handleProtocolRequest(req, callback) { - const getJSON = function({url}, callback) { - if (cache[url]) return cached(cache[url], callback); - return request(url, (error, response, body) => { - if (!error && response.statusCode >= 200 && response.statusCode < 300) { - let data; - try { - body = body.replace('http', 'test'); - data = JSON.parse(body); - } catch (err) { - return callback(err); - } - cache[url] = data; - callback(null, data); - } else { - callback(error || new Error(response.statusCode)); - } - }); - }; - - const getArrayBuffer = function({url}, callback) { - if (cache[url]) return cached(cache[url], callback); - return request({url, encoding: null}, (error, response, body) => { - if (!error && response.statusCode >= 200 && response.statusCode < 300) { - cache[url] = body; - callback(null, body); - } else { - if (!error) error = {status: +response.statusCode}; - callback(error); - } - }); - }; - - req.url = req.url.replace('test', 'http'); - if (req.type === 'json') { - getJSON(req, callback); - } else { - getArrayBuffer(req, callback) - } -} \ No newline at end of file From 140ad5869c97ad39b85c5eb797e8341663e1067f Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 9 Aug 2021 00:40:15 +0300 Subject: [PATCH 101/142] Fix some lint issues --- build/test/build-tape.js | 2 +- debug/2762.html | 2 +- debug/canvas.html | 2 +- debug/cluster.html | 2 +- debug/csp-static.html | 2 +- debug/csp.html | 2 +- debug/debug.html | 2 +- debug/image.html | 2 +- debug/index.html | 2 +- debug/mobile_scroll.html | 2 +- debug/no_wrap.html | 2 +- debug/popup.html | 2 +- debug/raster-streets.html | 2 +- debug/rtl.html | 2 +- debug/satellite.html | 2 +- debug/token.html | 2 +- debug/variable-anchor-with-icon-text-fit.html | 2 +- package-lock.json | 110 ++++++++++++++---- package.json | 8 +- test/build/min.test.js | 4 +- test/build/style-spec.test.js | 7 -- test/integration/lib/expression.js | 4 +- test/integration/lib/generate-fixture-json.js | 6 +- test/integration/lib/harness.js | 10 +- test/integration/lib/localize-urls.js | 9 +- test/integration/lib/query.js | 6 +- test/integration/lib/render.js | 2 +- test/integration/lib/server.js | 6 +- test/stub_loader.js | 6 +- test/suite_implementation.js | 27 +++-- test/unit/data/fill_bucket.test.js | 5 +- test/unit/data/line_bucket.test.js | 5 +- test/unit/data/load_geometry.test.js | 5 +- test/unit/data/symbol_bucket.test.js | 5 +- test/unit/source/tile.test.js | 5 +- .../source/vector_tile_worker_source.test.js | 5 +- test/unit/style-spec/migrate.test.js | 5 +- test/unit/style-spec/validate.test.js | 5 +- test/unit/style/load_glyph_range.test.js | 5 +- test/unit/symbol/shaping.test.js | 5 +- test/unit/ui/map.test.js | 2 +- test/unit/util/classify_rings.test.js | 5 +- 42 files changed, 169 insertions(+), 127 deletions(-) diff --git a/build/test/build-tape.js b/build/test/build-tape.js index 81345061ee..f122c6b053 100644 --- a/build/test/build-tape.js +++ b/build/test/build-tape.js @@ -14,4 +14,4 @@ export default function() { }); }); }); -}; +} diff --git a/debug/2762.html b/debug/2762.html index d2dd80e153..e1ebce5450 100644 --- a/debug/2762.html +++ b/debug/2762.html @@ -46,7 +46,7 @@ } }); -map.on('click', function(e) { +map.on('click', function(_) { map.setPaintProperty("circle", "circle-color", "red"); map.setPaintProperty("circle", "circle-translate", [50, 50]); }); diff --git a/debug/canvas.html b/debug/canvas.html index 461593bdfa..0aa055fe25 100644 --- a/debug/canvas.html +++ b/debug/canvas.html @@ -61,7 +61,7 @@ }] }; -var map = new maplibregl.Map({ +new maplibregl.Map({ container: 'map', minZoom: 14, zoom: 17, diff --git a/debug/cluster.html b/debug/cluster.html index 4fa5f8b5ca..21724c1370 100644 --- a/debug/cluster.html +++ b/debug/cluster.html @@ -117,7 +117,7 @@ }); }); - map.on('mouseleave', 'cluster', (e) => { + map.on('mouseleave', 'cluster', (_) => { map.getCanvas().style.cursor = ''; updateHover([]); }); diff --git a/debug/csp-static.html b/debug/csp-static.html index 6db7070814..26b27d4e1f 100644 --- a/debug/csp-static.html +++ b/debug/csp-static.html @@ -22,7 +22,7 @@ maplibregl.workerUrl = '/dist/maplibre-gl-csp-worker.js'; -var map = window.map = new maplibregl.Map({ +new maplibregl.Map({ container: 'map', zoom: 12.5, center: [-77.01866, 38.888], diff --git a/debug/csp.html b/debug/csp.html index 80e56c1772..bc2457c462 100644 --- a/debug/csp.html +++ b/debug/csp.html @@ -18,7 +18,7 @@ - + diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 1a6105dee0..d231d295bb 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -9,13 +9,6 @@ import path, {dirname} from 'path'; import customLayerImplementations from './integration/custom_layer_implementations'; import {fileURLToPath} from 'url'; -const cache = {}; -function cached(data, callback) { - setImmediate(() => { - callback(null, data); - }); -} - const __dirname = dirname(fileURLToPath(import.meta.url)); const {plugin: rtlTextPlugin} = rtlTextPluginModule; @@ -99,12 +92,6 @@ export default function(style, options, _callback) { // Configure the map to never stop the render loop map.repaint = true; - let now = 0; - //HM TODO: do we need this? - //browser.now = function() { - // return now; - //}; - if (options.debug) map.showTileBoundaries = true; if (options.showOverdrawInspector) map.showOverdrawInspector = true; if (options.showPadding) map.showPadding = true; diff --git a/test/unit/source/vector_tile_source.test.js b/test/unit/source/vector_tile_source.test.js index 8c1f0244f2..bb23feaf83 100644 --- a/test/unit/source/vector_tile_source.test.js +++ b/test/unit/source/vector_tile_source.test.js @@ -4,7 +4,7 @@ import VectorTileSource from '../../../rollup/build/tsc/source/vector_tile_sourc import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; import {Evented} from '../../../rollup/build/tsc/util/evented'; import {RequestManager} from '../../../rollup/build/tsc/util/mapbox'; -import fixturesSource from '../../fixtures/source'; +import fixturesSource from '../../fixtures/source.json'; const wrapDispatcher = (dispatcher) => { return { diff --git a/test/unit/style-spec/expression.test.js b/test/unit/style-spec/expression.test.js index 7e36da5555..8e6369d456 100644 --- a/test/unit/style-spec/expression.test.js +++ b/test/unit/style-spec/expression.test.js @@ -1,6 +1,7 @@ import {test} from '../../util/test'; import {createPropertyExpression} from '../../../rollup/build/tsc/style-spec/expression'; import definitions from '../../../rollup/build/tsc/style-spec/expression/definitions'; +/* eslint-disable import/no-unresolved */ import v8 from '../../../rollup/build/tsc/style-spec/reference/v8'; // filter out interal "error" and "filter-*" expressions from definition list diff --git a/test/unit/style-spec/migrate.test.js b/test/unit/style-spec/migrate.test.js index 339096d03a..660fb83935 100644 --- a/test/unit/style-spec/migrate.test.js +++ b/test/unit/style-spec/migrate.test.js @@ -3,14 +3,14 @@ import fs from 'fs'; import glob from 'glob'; import path, {dirname} from 'path'; import validate from '../../../rollup/build/tsc/style-spec/validate_style'; +/* eslint-disable import/no-unresolved */ import v8 from '../../../rollup/build/tsc/style-spec/reference/v8'; import migrate from '../../../rollup/build/tsc/style-spec/migrate'; import {fileURLToPath} from 'url'; -const __dirname = dirname(fileURLToPath(import.meta.url)); - /* eslint-disable import/namespace */ import * as spec from '../../../rollup/build/tsc/style-spec/style-spec'; +const __dirname = dirname(fileURLToPath(import.meta.url)); const UPDATE = !!process.env.UPDATE; test('does not migrate from version 5', (t) => { diff --git a/test/unit/ui/control/fullscreen.test.js b/test/unit/ui/control/fullscreen.test.js index 204b2bc4a6..d3527fab1e 100644 --- a/test/unit/ui/control/fullscreen.test.js +++ b/test/unit/ui/control/fullscreen.test.js @@ -35,7 +35,7 @@ test('FullscreenControl makes optional container element full screen', (t) => { const fullscreen = new FullscreenControl({container: window.document.querySelector('body')}); map.addControl(fullscreen); const control = map._controls.find((ctrl) => { - return ctrl.hasOwnProperty('_fullscreen'); + return Object.hasOwnProperty.call(ctrl, '_fullscreen'); }); control._onClickFullscreen(); diff --git a/test/unit/util/mapbox.test.js b/test/unit/util/mapbox.test.js index 24f12c56a3..f1401e3a67 100644 --- a/test/unit/util/mapbox.test.js +++ b/test/unit/util/mapbox.test.js @@ -496,10 +496,10 @@ test("mapbox", (t) => { this.data[id] = String(val); }, getItem (id) { - return this.data.hasOwnProperty(id) ? this.data[id] : undefined; + return Object.prototype.hasOwnProperty.call(this.data, id) ? this.data[id] : undefined; }, removeItem (id) { - if (this.hasOwnProperty(id)) delete this[id]; + if (Object.prototype.hasOwnProperty.call(this, id)) delete this[id]; } }; callback(); @@ -829,10 +829,10 @@ test("mapbox", (t) => { this.data[id] = String(val); }, getItem (id) { - return this.data.hasOwnProperty(id) ? this.data[id] : undefined; + return Object.prototype.hasOwnProperty.call(this.data, id) ? this.data[id] : undefined; }, removeItem (id) { - if (this.hasOwnProperty(id)) delete this[id]; + if (Object.prototype.hasOwnProperty.call(this, id)) delete this[id]; } }; callback(); From f7a290572ced0df3ab9d8ae507eab71f8d6cb290 Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 9 Aug 2021 23:40:36 +0300 Subject: [PATCH 109/142] Fix lint for windows, update versions. --- package-lock.json | 72 ++++++++++++++++++++++------------------------- package.json | 8 +++--- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93a1e1b91e..3265cb498b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1362,9 +1362,9 @@ } }, "@eslint/eslintrc": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", - "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -6956,13 +6956,13 @@ } }, "eslint": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", - "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.2", + "@eslint/eslintrc": "^0.4.3", "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -7034,9 +7034,9 @@ "dev": true }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -7308,36 +7308,30 @@ "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz", + "integrity": "sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" + "debug": "^3.2.7", + "resolve": "^1.20.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, "eslint-module-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", - "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", "dev": true, "requires": { "debug": "^3.2.7", @@ -7416,17 +7410,17 @@ } }, "eslint-plugin-import": { - "version": "2.23.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", - "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz", + "integrity": "sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==", "dev": true, "requires": { "array-includes": "^3.1.3", "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.1", + "eslint-import-resolver-node": "^0.3.5", + "eslint-module-utils": "^2.6.2", "find-up": "^2.0.0", "has": "^1.0.3", "is-core-module": "^2.4.0", @@ -8145,9 +8139,9 @@ } }, "flatted": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", - "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true } } @@ -17162,9 +17156,9 @@ } }, "rollup": { - "version": "2.56.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.0.tgz", - "integrity": "sha512-weEafgbjbHCnrtJPNyCrhYnjP62AkF04P0BcV/1mofy1+gytWln4VVB1OK462cq2EAyWzRDpTMheSP/o+quoiA==", + "version": "2.56.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.1.tgz", + "integrity": "sha512-KkrsNjeiTfGJMUFBi/PNfj3fnt70akqdoNXOjlzwo98uA1qrlkmgt6SGaK5OwhyDYCVnJb6jb2Xa2wbI47P4Nw==", "dev": true, "requires": { "fsevents": "~2.3.2" diff --git a/package.json b/package.json index 40b1bb31f4..804dcab033 100644 --- a/package.json +++ b/package.json @@ -100,10 +100,10 @@ "diff": "^4.0.1", "documentation": "~12.1.1", "ejs": "^2.5.7", - "eslint": "^7.15.0", + "eslint": "^7.32.0", "eslint-config-mourner": "^3.0.0", "eslint-plugin-html": "^6.1.2", - "eslint-plugin-import": "^2.23.4", + "eslint-plugin-import": "^2.24.0", "eslint-plugin-jsdoc": "^36.0.6", "eslint-plugin-react": "^7.24.0", "gl": "^4.5.3", @@ -135,7 +135,7 @@ "react": "^16.8.6", "react-dom": "^16.8.6", "request": "^2.88.0", - "rollup": "^2.56.0", + "rollup": "^2.56.1", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-unassert": "^0.3.0", @@ -182,7 +182,7 @@ "start-release": "run-s build-prod-min build-css print-release-url start-server", "diff-tarball": "cross-env build/run-node build/diff-tarball", "prepare-publish": "git clean -fdx && yarn install", - "lint": "eslint --ext '.ts,.js,.html' --ignore-path .gitignore src build debug/*.html", + "lint": "eslint --ext \".ts,.js,.html\" --ignore-path .gitignore src build debug/*.html", "lint-docs": "documentation lint src/index.js", "lint-css": "stylelint 'src/css/maplibre-gl.css'", "test": "run-s lint lint-css lint-docs test-unit", From 1d8e3f7b65b147f49aa6d4be5e808727aa28633d Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 9 Aug 2021 23:45:49 +0300 Subject: [PATCH 110/142] Fix browser tests due to incorrect lint fix --- test/browser/fixtures/land.html | 2 +- test/unit/ui/control/fullscreen.test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/browser/fixtures/land.html b/test/browser/fixtures/land.html index fe0eb04ca7..a49c8b1c7a 100644 --- a/test/browser/fixtures/land.html +++ b/test/browser/fixtures/land.html @@ -18,7 +18,7 @@ diff --git a/debug/7517.html b/debug/7517.html index 3e3ecbdcff..59deded219 100644 --- a/debug/7517.html +++ b/debug/7517.html @@ -62,11 +62,11 @@ ]; const maineBBoxPolygon = { - "type": "Feature", - "properties": {}, - "geometry": { - "type": "Polygon", - "coordinates": [ + 'type': 'Feature', + 'properties': {}, + 'geometry': { + 'type': 'Polygon', + 'coordinates': [ [ [-71.08482, 43.08003225358635], [-66.96466, 43.08003225358635], diff --git a/debug/animate.html b/debug/animate.html index 71b558ed2a..e74d952774 100644 --- a/debug/animate.html +++ b/debug/animate.html @@ -27,10 +27,10 @@ function line(angle, radius) { return { - "type": "Feature", - "geometry": { - "type": "LineString", - "coordinates": [ + 'type': 'Feature', + 'geometry': { + 'type': 'LineString', + 'coordinates': [ [-Math.cos(angle) * radius, -Math.sin(angle) * radius + 1], [Math.cos(angle) * radius, Math.sin(angle) * radius + 1], ] @@ -40,8 +40,8 @@ function crossWithAngle(angle) { return { - "type": "FeatureCollection", - "features": [ + 'type': 'FeatureCollection', + 'features': [ line(angle - Math.PI / 4, radius), line(angle + Math.PI / 4, radius) ] @@ -51,27 +51,27 @@ map.on('load', function () { // Add a source and layer displaying a point which will be animated in a circle. map.addSource('lines', { - "type": "geojson", - "data": crossWithAngle(0) + 'type': 'geojson', + 'data': crossWithAngle(0) }); map.addLayer({ - "id": "lines", - "source": "lines", - "type": "line", - "paint": { - "line-width": 4, - "line-color": "#007cbf" + 'id': 'lines', + 'source': 'lines', + 'type': 'line', + 'paint': { + 'line-width': 4, + 'line-color': '#007cbf' } }); map.addLayer({ - "id": "dot", - "source": "lines", - "type": "circle", - "paint": { - "circle-radius": 10, - "circle-color": "#007cbf" + 'id': 'dot', + 'source': 'lines', + 'type': 'circle', + 'paint': { + 'circle-radius': 10, + 'circle-color': '#007cbf' } }); diff --git a/debug/bounds.html b/debug/bounds.html index a99fb2d50c..c7ab8a6272 100644 --- a/debug/bounds.html +++ b/debug/bounds.html @@ -49,7 +49,7 @@ type: 'fill', source: 'bounds', paint: { - 'fill-color': "rgba(255,0,0,0.2)" + 'fill-color': 'rgba(255,0,0,0.2)' } }); diff --git a/debug/cache_api.html b/debug/cache_api.html index 591ca44818..d68818d587 100644 --- a/debug/cache_api.html +++ b/debug/cache_api.html @@ -111,38 +111,38 @@ map.on('style.load', function() { // add traffic layer that shouldn't be cached because of short expiry map.addLayer({ - "id": "traffic", - "source": { - "url": "mapbox://mapbox.mapbox-traffic-v1", - "type": "vector" + 'id': 'traffic', + 'source': { + 'url': 'mapbox://mapbox.mapbox-traffic-v1', + 'type': 'vector' }, - "source-layer": "traffic", - "type": "line", - "paint": { - "line-width": 1.5, - "line-color": "red" + 'source-layer': 'traffic', + 'type': 'line', + 'paint': { + 'line-width': 1.5, + 'line-color': 'red' } }); // add third party source that shouldn't be cached map.addLayer({ - "id": "mapillary", - "type": "line", - "source": { - "type": "vector", - "tiles": ["https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt"], - "minzoom": 6, - "maxzoom": 14 + 'id': 'mapillary', + 'type': 'line', + 'source': { + 'type': 'vector', + 'tiles': ['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt'], + 'minzoom': 6, + 'maxzoom': 14 }, - "source-layer": "mapillary-sequences", - "layout": { - "line-cap": "round", - "line-join": "round" + 'source-layer': 'mapillary-sequences', + 'layout': { + 'line-cap': 'round', + 'line-join': 'round' }, - "paint": { - "line-opacity": 0.6, - "line-color": "rgb(53, 175, 109)", - "line-width": 2 + 'paint': { + 'line-opacity': 0.6, + 'line-color': 'rgb(53, 175, 109)', + 'line-width': 2 } }); @@ -155,25 +155,25 @@ const dontCache = ['traffic', 'style', 'fonts', 'd25uarhxywzl1j.cloudfront.net']; for (const urlSubstring of dontCache) { - log(!matchURL(keys, urlSubstring), "Does not cache wrong resource: " + urlSubstring); + log(!matchURL(keys, urlSubstring), 'Does not cache wrong resource: ' + urlSubstring); } } function testFirstView(done) { cache.keys().catch(catchError).then(keys => { - log(keys.length === 4, "keys.length = 4"); + log(keys.length === 4, 'keys.length = 4'); // check for expected cache entries const expected = [ - "mapbox.mapbox-streets-v7/12/1171/1566.vector.pbf", - "mapbox.mapbox-streets-v7/12/1171/1567.vector.pbf", - "mapbox.mapbox-streets-v7/12/1172/1566.vector.pbf", - "mapbox.mapbox-streets-v7/12/1172/1567.vector.pbf", + 'mapbox.mapbox-streets-v7/12/1171/1566.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1171/1567.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1172/1566.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1172/1567.vector.pbf', ]; for (const expect of expected) { - log(matchURL(keys, expect), "Caches correct resource: " + expect); + log(matchURL(keys, expect), 'Caches correct resource: ' + expect); } checkNotCached(keys); @@ -191,18 +191,18 @@ cache.keys().catch(catchError).then(keys => { // some tiles were evicted! - log(keys.length === 6, "Enforces cache size limit: keys.length = 6"); + log(keys.length === 6, 'Enforces cache size limit: keys.length = 6'); // all the most recent tiles are in the cache const expected = [ - "mapbox.mapbox-streets-v7/13/2342/3133.vector.pbf", - "mapbox.mapbox-streets-v7/13/2342/3134.vector.pbf", - "mapbox.mapbox-streets-v7/13/2343/3133.vector.pbf", - "mapbox.mapbox-streets-v7/13/2343/3134.vector.pbf", + 'mapbox.mapbox-streets-v7/13/2342/3133.vector.pbf', + 'mapbox.mapbox-streets-v7/13/2342/3134.vector.pbf', + 'mapbox.mapbox-streets-v7/13/2343/3133.vector.pbf', + 'mapbox.mapbox-streets-v7/13/2343/3134.vector.pbf', ]; for (const expect of expected) { - log(matchURL(keys, expect), "Evicts correct tiles: still has " + expect); + log(matchURL(keys, expect), 'Evicts correct tiles: still has ' + expect); } checkNotCached(keys); @@ -220,7 +220,7 @@ cache.keys().catch(catchError).then(keys => { // some tiles were evicted! - log(keys.length === 6, "Enforces cache size limit: keys.length = 6"); + log(keys.length === 6, 'Enforces cache size limit: keys.length = 6'); // check that the cache entries are ordered in order of most least use @@ -231,14 +231,14 @@ // all the most recent tiles are in the cache const expected = [ - "mapbox.mapbox-streets-v7/12/1171/1566.vector.pbf", - "mapbox.mapbox-streets-v7/12/1171/1567.vector.pbf", - "mapbox.mapbox-streets-v7/12/1172/1566.vector.pbf", - "mapbox.mapbox-streets-v7/12/1172/1567.vector.pbf", + 'mapbox.mapbox-streets-v7/12/1171/1566.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1171/1567.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1172/1566.vector.pbf', + 'mapbox.mapbox-streets-v7/12/1172/1567.vector.pbf', ]; for (const expect of expected) { - log(matchURL(keys, expect), "Evicts correct tiles: still has " + expect); + log(matchURL(keys, expect), 'Evicts correct tiles: still has ' + expect); } checkNotCached(keys); diff --git a/debug/canvas.html b/debug/canvas.html index 0aa055fe25..e22544c5c6 100644 --- a/debug/canvas.html +++ b/debug/canvas.html @@ -34,13 +34,13 @@ } var canvasStyle = { - "version": 8, - "sources": { - "canvas": { - "type": "canvas", - "canvas": "testCanvasID", - "animate": false, - "coordinates": [ + 'version': 8, + 'sources': { + 'canvas': { + 'type': 'canvas', + 'canvas': 'testCanvasID', + 'animate': false, + 'coordinates': [ [-122.51596391201019, 37.56238816766053], [-122.51467645168304, 37.56410183312965], [-122.51309394836426, 37.563391708549425], @@ -48,16 +48,16 @@ ] } }, - "layers": [{ - "id": "background", - "type": "background", - "paint": { - "background-color": "rgb(4,7,14)" + 'layers': [{ + 'id': 'background', + 'type': 'background', + 'paint': { + 'background-color': 'rgb(4,7,14)' } }, { - "id": "canvas", - "type": "raster", - "source": "canvas" + 'id': 'canvas', + 'type': 'raster', + 'source': 'canvas' }] }; diff --git a/debug/chinese.html b/debug/chinese.html index f971e7880c..c7e664d3cb 100644 --- a/debug/chinese.html +++ b/debug/chinese.html @@ -38,23 +38,23 @@ map.addControl(new maplibregl.NavigationControl()); map.on('load', function () { - map.addSource("points", { - "type": "geojson", - "data": '/test/integration/data/chinese.geojson' + map.addSource('points', { + 'type': 'geojson', + 'data': '/test/integration/data/chinese.geojson' }); map.addLayer({ - "id": "points", - "type": "symbol", - "source": "points", - "layout": { - "icon-image": "{icon}-15", - "text-field": "{name}", - "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"], - "text-offset": [0, 0.6], - "text-anchor": "top", - "text-allow-overlap": true, - "icon-allow-overlap": true + 'id': 'points', + 'type': 'symbol', + 'source': 'points', + 'layout': { + 'icon-image': '{icon}-15', + 'text-field': '{name}', + 'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'], + 'text-offset': [0, 0.6], + 'text-anchor': 'top', + 'text-allow-overlap': true, + 'icon-allow-overlap': true } }); }); diff --git a/debug/circles.html b/debug/circles.html index b74cefc70b..90e0a0bd34 100644 --- a/debug/circles.html +++ b/debug/circles.html @@ -31,53 +31,53 @@ map.on('load', function() { map.addSource('circles', { - "type": "geojson", - "data": "/test/integration/data/places.geojson" + 'type': 'geojson', + 'data': '/test/integration/data/places.geojson' }); map.addLayer({ - "id": "circles", - "type": "circle", - "source": "circles", - "paint": { - "circle-radius": [ - "interpolate", - ["exponential", 2.0], - ["zoom"], + 'id': 'circles', + 'type': 'circle', + 'source': 'circles', + 'paint': { + 'circle-radius': [ + 'interpolate', + ['exponential', 2.0], + ['zoom'], 0, 5, - 5, ['*', ["get", "scalerank"], 20], + 5, ['*', ['get', 'scalerank'], 20], ], - "circle-color": [ - "match", - ["get", "featureclass"], - "cape", "orange", - "island", "#0088ff", - "plain", "yellow", - "pole", "white", - "waterfall", "blue", - "red" + 'circle-color': [ + 'match', + ['get', 'featureclass'], + 'cape', 'orange', + 'island', '#0088ff', + 'plain', 'yellow', + 'pole', 'white', + 'waterfall', 'blue', + 'red' ], - "circle-pitch-scale": "map", - "circle-pitch-alignment": "map" + 'circle-pitch-scale': 'map', + 'circle-pitch-alignment': 'map' } }); map.addLayer({ - "id": "labels", - "type": "symbol", - "source": "circles", - "minzoom": 1, - "layout": { - "text-field": [ - "concat", - ["get", "name"], - " (", + 'id': 'labels', + 'type': 'symbol', + 'source': 'circles', + 'minzoom': 1, + 'layout': { + 'text-field': [ + 'concat', + ['get', 'name'], + ' (', [ - "coalesce", - ["get", "subregion"], - ["get", "region"] + 'coalesce', + ['get', 'subregion'], + ['get', 'region'] ], - ")" + ')' ] } }); diff --git a/debug/cluster.html b/debug/cluster.html index 21724c1370..a5eb315f72 100644 --- a/debug/cluster.html +++ b/debug/cluster.html @@ -27,67 +27,67 @@ map.on('load', () => { map.addSource('geojson', { - "type": "geojson", - "data": "/test/integration/data/places.geojson", - "cluster": true, - "clusterRadius": 50, - "clusterProperties": { - "max": ["max", ["get", "scalerank"]], - "sum": ["+", ["get", "scalerank"]], - "has_island": ["any", ["==", ["get", "featureclass"], "island"]] + 'type': 'geojson', + 'data': '/test/integration/data/places.geojson', + 'cluster': true, + 'clusterRadius': 50, + 'clusterProperties': { + 'max': ['max', ['get', 'scalerank']], + 'sum': ['+', ['get', 'scalerank']], + 'has_island': ['any', ['==', ['get', 'featureclass'], 'island']] } }); map.addLayer({ - "id": "cluster", - "type": "circle", - "source": "geojson", - "filter": ["==", "cluster", true], - "paint": { - "circle-color": ["case", ["get", "has_island"], "orange", "rgba(0, 200, 0, 1)"], - "circle-radius": 20 + 'id': 'cluster', + 'type': 'circle', + 'source': 'geojson', + 'filter': ['==', 'cluster', true], + 'paint': { + 'circle-color': ['case', ['get', 'has_island'], 'orange', 'rgba(0, 200, 0, 1)'], + 'circle-radius': 20 } }); map.addLayer({ - "id": "cluster_label", - "type": "symbol", - "source": "geojson", - "filter": ["==", "cluster", true], - "layout": { - "text-field": "{point_count} ({max})", - "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"], - "text-size": 12, - "text-allow-overlap": true, - "text-ignore-placement": true + 'id': 'cluster_label', + 'type': 'symbol', + 'source': 'geojson', + 'filter': ['==', 'cluster', true], + 'layout': { + 'text-field': '{point_count} ({max})', + 'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'], + 'text-size': 12, + 'text-allow-overlap': true, + 'text-ignore-placement': true } }); map.addLayer({ - "id": "unclustered_point", - "type": "circle", - "source": "geojson", - "filter": ["!=", "cluster", true], - "paint": { - "circle-color": "rgb(0, 0, 200)", - "circle-radius": 10 + 'id': 'unclustered_point', + 'type': 'circle', + 'source': 'geojson', + 'filter': ['!=', 'cluster', true], + 'paint': { + 'circle-color': 'rgb(0, 0, 200)', + 'circle-radius': 10 } }); var hoverData = { - "type": "FeatureCollection", - "features": [] + 'type': 'FeatureCollection', + 'features': [] }; map.addSource('cluster_children', { - "type": "geojson", - "data": hoverData + 'type': 'geojson', + 'data': hoverData }); map.addLayer({ - "id": "cluster_children", - "type": "circle", - "source": "cluster_children", - "paint": { - "circle-color": "rgb(0, 150, 0)", - "circle-radius": 7 + 'id': 'cluster_children', + 'type': 'circle', + 'source': 'cluster_children', + 'paint': { + 'circle-color': 'rgb(0, 150, 0)', + 'circle-radius': 7 } }); diff --git a/debug/color_spaces.html b/debug/color_spaces.html index 466ab836dc..c9fc0df5aa 100644 --- a/debug/color_spaces.html +++ b/debug/color_spaces.html @@ -46,19 +46,19 @@ map.on('load', function() { map.addSource('geojson', { - "type": "geojson", - "data": "https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson" + 'type': 'geojson', + 'data': 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson' }); map.addLayer({ - "id": "countries", - "type": "fill", - "source": "geojson", - "paint": { - "fill-color": { - "property": "pop_est", - "colorSpace": "lab", - "stops": [ + 'id': 'countries', + 'type': 'fill', + 'source': 'geojson', + 'paint': { + 'fill-color': { + 'property': 'pop_est', + 'colorSpace': 'lab', + 'stops': [ [0, 'blue'], [140041247, 'red'] ] @@ -69,9 +69,9 @@ function pickInterpolation(input) { map.setPaintProperty('countries', 'fill-color', { - "property": "pop_est", - "colorSpace": input.value, - "stops": [ + 'property': 'pop_est', + 'colorSpace': input.value, + 'stops': [ [0, 'blue'], [140041247, 'red'] ] diff --git a/debug/custom3d.html b/debug/custom3d.html index 27fe9971fe..0912ee0b6c 100644 --- a/debug/custom3d.html +++ b/debug/custom3d.html @@ -65,8 +65,8 @@ gl.linkProgram(this.program); gl.validateProgram(this.program); - this.program.aPos = gl.getAttribLocation(this.program, "aPos"); - this.program.uMatrix = gl.getUniformLocation(this.program, "uMatrix"); + this.program.aPos = gl.getAttribLocation(this.program, 'aPos'); + this.program.uMatrix = gl.getUniformLocation(this.program, 'uMatrix'); const x = 0.5; const y = 0.5; diff --git a/debug/debug.html b/debug/debug.html index 2841a88744..1adc205e89 100644 --- a/debug/debug.html +++ b/debug/debug.html @@ -55,57 +55,57 @@ map.on('load', function() { map.addSource('geojson', { - "type": "geojson", - "data": "/test/integration/data/linestring.geojson", - "attribution": "GeoJSON Attribution" + 'type': 'geojson', + 'data': '/test/integration/data/linestring.geojson', + 'attribution': 'GeoJSON Attribution' }); map.addLayer({ - "id": "route", - "type": "line", - "source": "geojson", - "paint": { - "line-color": "#EC8D8D", - "line-width": {"base": 1.5, "stops": [[5, 0.75], [18, 32]]} + 'id': 'route', + 'type': 'line', + 'source': 'geojson', + 'paint': { + 'line-color': '#EC8D8D', + 'line-width': {'base': 1.5, 'stops': [[5, 0.75], [18, 32]]} } }, 'country-label-lg'); - map.addSource("points", { - "type": "geojson", - "data": '/debug/cross_source_points.geojson' + map.addSource('points', { + 'type': 'geojson', + 'data': '/debug/cross_source_points.geojson' }); map.addLayer({ - "id": "points", - "type": "symbol", - "source": "points", - "layout": { - "text-field": "{name}", - "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"] + 'id': 'points', + 'type': 'symbol', + 'source': 'points', + 'layout': { + 'text-field': '{name}', + 'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'] } }); map.addLayer({ - id: "marker", - type: "symbol", - source: "points", + id: 'marker', + type: 'symbol', + source: 'points', layout: { - "icon-image": "bus-11", - "icon-size": 2, - "icon-ignore-placement": true, - "icon-allow-overlap": true + 'icon-image': 'bus-11', + 'icon-size': 2, + 'icon-ignore-placement': true, + 'icon-allow-overlap': true } }); map.addLayer({ - id: "marker-hover", - type: "symbol", - filter: ["==", "name", ""], - source: "points", + id: 'marker-hover', + type: 'symbol', + filter: ['==', 'name', ''], + source: 'points', layout: { - "icon-image": "bus-15", - "icon-size": 2, - "icon-ignore-placement": true, - "icon-allow-overlap": true + 'icon-image': 'bus-15', + 'icon-size': 2, + 'icon-ignore-placement': true, + 'icon-allow-overlap': true } }); @@ -122,7 +122,7 @@ if (e.originalEvent.shiftKey) return; (new maplibregl.Popup()) .setLngLat(map.unproject(e.point)) - .setHTML("

Hello World!

") + .setHTML('

Hello World!

') .addTo(map); }); @@ -146,7 +146,7 @@ document.onkeypress = function(e) { if (e.charCode === 111 && !e.shiftKey && !e.metaKey && !e.altKey) { var center = map.getCenter(); - location.href = "mapboxgl://?center=" + center.lat + "," + center.lng + "&zoom=" + map.getZoom() + "&bearing=" + map.getBearing(); + location.href = 'mapboxgl://?center=' + center.lat + ',' + center.lng + '&zoom=' + map.getZoom() + '&bearing=' + map.getBearing(); return false; } }; diff --git a/debug/default-image.html b/debug/default-image.html index 099f86ae07..962a96c277 100644 --- a/debug/default-image.html +++ b/debug/default-image.html @@ -27,55 +27,55 @@ map.on('load', function () { map.addLayer({ - "id": "points", - "type": "symbol", - "source": { - "type": "geojson", - "data": { - "type": "FeatureCollection", - "features": [ + 'id': 'points', + 'type': 'symbol', + 'source': { + 'type': 'geojson', + 'data': { + 'type': 'FeatureCollection', + 'features': [ { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ + 'type': 'Feature', + 'geometry': { + 'type': 'Point', + 'coordinates': [ -77.03238901390978, 38.913188059745586 ] }, - "properties": { - "icon": "monument", - "title": "Mapbox DC" + 'properties': { + 'icon': 'monument', + 'title': 'Mapbox DC' } }, { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ + 'type': 'Feature', + 'geometry': { + 'type': 'Point', + 'coordinates': [ -122.414, 37.776 ] }, - "properties": { - "title": "Mapbox SF", - "icon": "harbor" + 'properties': { + 'title': 'Mapbox SF', + 'icon': 'harbor' } } ] } }, - "layout": { - "icon-image": ["coalesce", ["image", "foo"], ["image", "bar"], ["image", ["concat", ["get", "icon"], "-15"]], ["image", "baz"]], - "text-field": "{title}", - "text-font": [ - "Open Sans Semibold", - "Arial Unicode MS Bold" + 'layout': { + 'icon-image': ['coalesce', ['image', 'foo'], ['image', 'bar'], ['image', ['concat', ['get', 'icon'], '-15']], ['image', 'baz']], + 'text-field': '{title}', + 'text-font': [ + 'Open Sans Semibold', + 'Arial Unicode MS Bold' ], - "text-offset": [ + 'text-offset': [ 0, 0.6 ], - "text-anchor": "top" + 'text-anchor': 'top' } }); }); diff --git a/debug/extrusion-query.html b/debug/extrusion-query.html index dc4eab8c97..155f2cdf16 100644 --- a/debug/extrusion-query.html +++ b/debug/extrusion-query.html @@ -41,7 +41,7 @@ 'minzoom': 15, 'paint': { 'fill-extrusion-color': ['rgb', ['number', ['feature-state', 'hover-r'], r], ['number', ['feature-state', 'hover-g'], r], ['number', ['feature-state', 'hover-b'], r]], - 'fill-extrusion-height': ["get", "height"], + 'fill-extrusion-height': ['get', 'height'], 'fill-extrusion-opacity': 0.6 } diff --git a/debug/featurestate.html b/debug/featurestate.html index 6b2bc08592..b195dad0e1 100644 --- a/debug/featurestate.html +++ b/debug/featurestate.html @@ -27,19 +27,19 @@ map.on('load', () => { map.addSource('counties', { - "type": "vector", - "url": "mapbox://mapbox.82pkq93d", - "promoteId": {"original": "COUNTY"} + 'type': 'vector', + 'url': 'mapbox://mapbox.82pkq93d', + 'promoteId': {'original': 'COUNTY'} }); map.addLayer({ - "id": "counties", - "type": "fill", - "source": "counties", - "source-layer": "original", - "paint": { - "fill-outline-color": "black", - "fill-color": ["case", ["boolean", ["feature-state", "hover"], false], "red", "lightgrey"] + 'id': 'counties', + 'type': 'fill', + 'source': 'counties', + 'source-layer': 'original', + 'paint': { + 'fill-outline-color': 'black', + 'fill-color': ['case', ['boolean', ['feature-state', 'hover'], false], 'red', 'lightgrey'] } }); @@ -52,11 +52,11 @@ } } - map.on("mouseleave", "counties", () => { + map.on('mouseleave', 'counties', () => { resetFeatureState(); }); - map.on("mousemove", "counties", (e) => { + map.on('mousemove', 'counties', (e) => { const feature = e.features[0]; if (selectedCounty !== feature.id) { diff --git a/debug/heatmap.html b/debug/heatmap.html index df7027a3ad..7f458b4eee 100644 --- a/debug/heatmap.html +++ b/debug/heatmap.html @@ -31,31 +31,31 @@ map.on('load', function() { map.addSource('heatmap', { - "type": "geojson", - "data": "../test/integration/data/places.geojson", - "maxzoom": 23 + 'type': 'geojson', + 'data': '../test/integration/data/places.geojson', + 'maxzoom': 23 }); map.addLayer({ - "id": "heatmap", - "type": "heatmap", - "source": "heatmap", - "paint": { - "heatmap-radius": 50, - "heatmap-weight": { - "stops": [[0, 0.5], [4, 2]] + 'id': 'heatmap', + 'type': 'heatmap', + 'source': 'heatmap', + 'paint': { + 'heatmap-radius': 50, + 'heatmap-weight': { + 'stops': [[0, 0.5], [4, 2]] }, - "heatmap-intensity": 0.9, - "heatmap-color": [ - "interpolate", - ["linear"], - ["heatmap-density"], - 0, "rgba(0, 0, 255, 0)", - 0.1, "royalblue", - 0.3, "cyan", - 0.5, "lime", - 0.7, "yellow", - 1, "red" + 'heatmap-intensity': 0.9, + 'heatmap-color': [ + 'interpolate', + ['linear'], + ['heatmap-density'], + 0, 'rgba(0, 0, 255, 0)', + 0.1, 'royalblue', + 0.3, 'cyan', + 0.5, 'lime', + 0.7, 'yellow', + 1, 'red' ] } }, 'waterway-label'); diff --git a/debug/highlightpoints.html b/debug/highlightpoints.html index 45ae3d21d3..affce60183 100644 --- a/debug/highlightpoints.html +++ b/debug/highlightpoints.html @@ -27,23 +27,23 @@ map.showTileBoundaries = true; map.on('load', function() { map.addSource('places', { - type: "geojson", - data: "/test/integration/data/places.geojson" + type: 'geojson', + data: '/test/integration/data/places.geojson' }); map.addLayer({ - id:"places", - source: "places", - type:"circle", + id:'places', + source: 'places', + type:'circle', paint: { - "circle-radius": ["case", - ["boolean", ["feature-state", "hover"], false], - ["number", 20], - ["number", 10] + 'circle-radius': ['case', + ['boolean', ['feature-state', 'hover'], false], + ['number', 20], + ['number', 10] ], - "circle-color": ["case", - ["boolean", ["feature-state", "hover"], false], - ["rgb", 21, 210, 210], - ["rgb", 233, 103, 233] + 'circle-color': ['case', + ['boolean', ['feature-state', 'hover'], false], + ['rgb', 21, 210, 210], + ['rgb', 233, 103, 233] ] } }); diff --git a/debug/hillshade.html b/debug/hillshade.html index dd87dd448f..7c606b737d 100644 --- a/debug/hillshade.html +++ b/debug/hillshade.html @@ -73,33 +73,33 @@ map.on('load', function () { map.addSource('mapbox-dem', { - "type": "raster-dem", - "url": "mapbox://mapbox.terrain-rgb", - "tileSize": 256, + 'type': 'raster-dem', + 'url': 'mapbox://mapbox.terrain-rgb', + 'tileSize': 256, }); map.addLayer({ - "id": "Mapbox data", - "source": "mapbox-dem", - "type": "hillshade" + 'id': 'Mapbox data', + 'source': 'mapbox-dem', + 'type': 'hillshade' // insert below waterway-river-canal-shadow; // where hillshading sits in the Mapbox Outdoors style }, 'waterway-river-canal-shadow'); map.addSource('terrarium-dem', { - "type": "raster-dem", - "encoding": "terrarium", - "tiles": [ - "https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png" + 'type': 'raster-dem', + 'encoding': 'terrarium', + 'tiles': [ + 'https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png' ], - "tileSize": 128, - "maxzoom": 15 + 'tileSize': 128, + 'maxzoom': 15 }); map.addLayer({ - "id": "Terrarium data", - "source": "terrarium-dem", - "type": "hillshade", - "layout": { - "visibility": "none" + 'id': 'Terrarium data', + 'source': 'terrarium-dem', + 'type': 'hillshade', + 'layout': { + 'visibility': 'none' } // insert below waterway-river-canal-shadow; // where hillshading sits in the Mapbox Outdoors style @@ -108,17 +108,17 @@ // Add variant of Hillshade that overzooms beyond zoom 7. // Note: source tiles are 512, so the following only goes up to native zoom 7. map.addSource('mapbox-dem-z8', { - "type": "raster-dem", - "url": "mapbox://mapbox.terrain-rgb", - "tileSize": 256, - "maxzoom": 8 + 'type': 'raster-dem', + 'url': 'mapbox://mapbox.terrain-rgb', + 'tileSize': 256, + 'maxzoom': 8 }); map.addLayer({ - "id": "Mapbox data to Z8", - "source": "mapbox-dem-z8", - "type": "hillshade", - "layout": { - "visibility": "none" + 'id': 'Mapbox data to Z8', + 'source': 'mapbox-dem-z8', + 'type': 'hillshade', + 'layout': { + 'visibility': 'none' } }, 'waterway-river-canal-shadow'); }); diff --git a/debug/iframe-blob.html b/debug/iframe-blob.html index 2f7e908525..e5c251f70b 100644 --- a/debug/iframe-blob.html +++ b/debug/iframe-blob.html @@ -13,10 +13,10 @@ const maplibregl = {}; diff --git a/debug/wms.html b/debug/wms.html index caeb843dbf..cac0fc1e1d 100644 --- a/debug/wms.html +++ b/debug/wms.html @@ -29,17 +29,17 @@ map.on('load', function() { map.addSource('wms-test', { - "type": "raster", - "tiles": ['https://img.nj.gov/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&transparent=true&width=256&height=256&layers=Natural2015' + 'type': 'raster', + 'tiles': ['https://img.nj.gov/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&transparent=true&width=256&height=256&layers=Natural2015' ], - "tileSize": 256 + 'tileSize': 256 }); map.addLayer({ - "id": "wms-test-layer", - "type": "raster", - "source": "wms-test", - "paint": {} + 'id': 'wms-test-layer', + 'type': 'raster', + 'source': 'wms-test', + 'paint': {} }); }); diff --git a/src/data/bucket.ts b/src/data/bucket.ts index 8f73c2ddca..aa89e26460 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -43,9 +43,9 @@ export type BucketFeature = { id?: any; readonly patterns: { [_: string]: { - "min": string; - "mid": string; - "max": string; + 'min': string; + 'mid': string; + 'max': string; }; }; sortKey?: number; diff --git a/src/data/bucket/pattern_bucket_features.ts b/src/data/bucket/pattern_bucket_features.ts index 0099a5ffc4..22b26d937b 100644 --- a/src/data/bucket/pattern_bucket_features.ts +++ b/src/data/bucket/pattern_bucket_features.ts @@ -37,7 +37,7 @@ export function addPatternDependencies(type: string, layers: PatternStyleLayers, const patternProperty = (layer.paint as PossiblyEvaluated).get(`${type}-pattern`); const patternPropertyValue = patternProperty.value; - if (patternPropertyValue.kind !== "constant") { + if (patternPropertyValue.kind !== 'constant') { let min = patternPropertyValue.evaluate({zoom: zoom - 1}, patternFeature, {}, options.availableImages); let mid = patternPropertyValue.evaluate({zoom}, patternFeature, {}, options.availableImages); let max = patternPropertyValue.evaluate({zoom: zoom + 1}, patternFeature, {}, options.availableImages); diff --git a/src/data/dem_data.ts b/src/data/dem_data.ts index 0ebbce80d8..a14a601bea 100644 --- a/src/data/dem_data.ts +++ b/src/data/dem_data.ts @@ -18,14 +18,14 @@ export default class DEMData { data: Uint32Array; stride: number; dim: number; - encoding: "mapbox" | "terrarium"; + encoding: 'mapbox' | 'terrarium'; // RGBAImage data has uniform 1px padding on all sides: square tile edge size defines stride // and dim is calculated as stride - 2. - constructor(uid: string, data: RGBAImage, encoding: "mapbox" | "terrarium") { + constructor(uid: string, data: RGBAImage, encoding: 'mapbox' | 'terrarium') { this.uid = uid; if (data.height !== data.width) throw new RangeError('DEM tiles must be square'); - if (encoding && encoding !== "mapbox" && encoding !== "terrarium") { + if (encoding && encoding !== 'mapbox' && encoding !== 'terrarium') { warnOnce(`"${encoding}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`); return; } @@ -57,12 +57,12 @@ export default class DEMData { get(x: number, y: number) { const pixels = new Uint8Array(this.data.buffer); const index = this._idx(x, y) * 4; - const unpack = this.encoding === "terrarium" ? this._unpackTerrarium : this._unpackMapbox; + const unpack = this.encoding === 'terrarium' ? this._unpackTerrarium : this._unpackMapbox; return unpack(pixels[index], pixels[index + 1], pixels[index + 2]); } getUnpackVector() { - return this.encoding === "terrarium" ? [256.0, 1.0, 1.0 / 256.0, 32768.0] : [6553.6, 25.6, 0.1, 10000.0]; + return this.encoding === 'terrarium' ? [256.0, 1.0, 1.0 / 256.0, 32768.0] : [6553.6, 25.6, 0.1, 10000.0]; } _idx(x: number, y: number) { diff --git a/src/data/evaluation_feature.ts b/src/data/evaluation_feature.ts index 851f8e9f94..52550238f8 100644 --- a/src/data/evaluation_feature.ts +++ b/src/data/evaluation_feature.ts @@ -2,14 +2,14 @@ import loadGeometry from './load_geometry'; import type Point from '../symbol/point'; type EvaluationFeature = { - readonly type: 1 | 2 | 3 | "Unknown" | "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon"; + readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon'; readonly id?: any; readonly properties: {[_: string]: any}; readonly patterns?: { [_: string]: { - "min": string; - "mid": string; - "max": string; + 'min': string; + 'mid': string; + 'max': string; }; }; geometry: Array>; diff --git a/src/geo/edge_insets.ts b/src/geo/edge_insets.ts index 138a8f864b..2287455ba0 100644 --- a/src/geo/edge_insets.ts +++ b/src/geo/edge_insets.ts @@ -1,6 +1,6 @@ -import {number} from "../style-spec/util/interpolate"; +import {number} from '../style-spec/util/interpolate'; import Point from '../symbol/point'; -import {clamp} from "../util/util"; +import {clamp} from '../util/util'; /** * An `EdgeInset` object represents screen space padding applied to the edges of the viewport. diff --git a/src/geo/lng_lat.ts b/src/geo/lng_lat.ts index 11e802f85f..9ad6de6cd5 100644 --- a/src/geo/lng_lat.ts +++ b/src/geo/lng_lat.ts @@ -146,7 +146,7 @@ class LngLat { Number(input.lat) ); } - throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]"); + throw new Error('`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]'); } } diff --git a/src/geo/transform.ts b/src/geo/transform.ts index e6cf878e29..f6ea65566c 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -6,7 +6,7 @@ import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; import {vec4, mat4, mat2, vec2, vec3} from 'gl-matrix'; -import {Aabb, Frustum} from "../util/primitives"; +import {Aabb, Frustum} from '../util/primitives'; import EdgeInsets from './edge_insets'; import {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../source/tile_id'; @@ -762,7 +762,7 @@ class Transform { // inverse matrix for conversion from screen coordinaes to location m = mat4.invert(new Float64Array(16) as any, this.pixelMatrix); - if (!m) throw new Error("failed to invert matrix"); + if (!m) throw new Error('failed to invert matrix'); this.pixelMatrixInverse = m; this._posMatrixCache = {}; diff --git a/src/gl/types.ts b/src/gl/types.ts index f516254801..895648aa4e 100644 --- a/src/gl/types.ts +++ b/src/gl/types.ts @@ -1,12 +1,12 @@ -type BlendFuncConstant = WebGLRenderingContext["ZERO"] | WebGLRenderingContext["ONE"] | WebGLRenderingContext["SRC_COLOR"] | WebGLRenderingContext["ONE_MINUS_SRC_COLOR"] | WebGLRenderingContext["DST_COLOR"] | WebGLRenderingContext["ONE_MINUS_DST_COLOR"] | WebGLRenderingContext["SRC_ALPHA"] | WebGLRenderingContext["ONE_MINUS_SRC_ALPHA"] | WebGLRenderingContext["DST_ALPHA"] | WebGLRenderingContext["ONE_MINUS_DST_ALPHA"] | WebGLRenderingContext["CONSTANT_COLOR"] | WebGLRenderingContext["ONE_MINUS_CONSTANT_COLOR"] | WebGLRenderingContext["CONSTANT_ALPHA"] | WebGLRenderingContext["ONE_MINUS_CONSTANT_ALPHA"] | WebGLRenderingContext["BLEND_COLOR"]; +type BlendFuncConstant = WebGLRenderingContext['ZERO'] | WebGLRenderingContext['ONE'] | WebGLRenderingContext['SRC_COLOR'] | WebGLRenderingContext['ONE_MINUS_SRC_COLOR'] | WebGLRenderingContext['DST_COLOR'] | WebGLRenderingContext['ONE_MINUS_DST_COLOR'] | WebGLRenderingContext['SRC_ALPHA'] | WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'] | WebGLRenderingContext['DST_ALPHA'] | WebGLRenderingContext['ONE_MINUS_DST_ALPHA'] | WebGLRenderingContext['CONSTANT_COLOR'] | WebGLRenderingContext['ONE_MINUS_CONSTANT_COLOR'] | WebGLRenderingContext['CONSTANT_ALPHA'] | WebGLRenderingContext['ONE_MINUS_CONSTANT_ALPHA'] | WebGLRenderingContext['BLEND_COLOR']; export type BlendFuncType = [BlendFuncConstant, BlendFuncConstant]; -export type BlendEquationType = WebGLRenderingContext["FUNC_ADD"] | WebGLRenderingContext["FUNC_SUBTRACT"] | WebGLRenderingContext["FUNC_REVERSE_SUBTRACT"]; +export type BlendEquationType = WebGLRenderingContext['FUNC_ADD'] | WebGLRenderingContext['FUNC_SUBTRACT'] | WebGLRenderingContext['FUNC_REVERSE_SUBTRACT']; export type ColorMaskType = [boolean, boolean, boolean, boolean]; -export type CompareFuncType = WebGLRenderingContext["NEVER"] | WebGLRenderingContext["LESS"] | WebGLRenderingContext["EQUAL"] | WebGLRenderingContext["LEQUAL"] | WebGLRenderingContext["GREATER"] | WebGLRenderingContext["NOTEQUAL"] | WebGLRenderingContext["GEQUAL"] | WebGLRenderingContext["ALWAYS"]; +export type CompareFuncType = WebGLRenderingContext['NEVER'] | WebGLRenderingContext['LESS'] | WebGLRenderingContext['EQUAL'] | WebGLRenderingContext['LEQUAL'] | WebGLRenderingContext['GREATER'] | WebGLRenderingContext['NOTEQUAL'] | WebGLRenderingContext['GEQUAL'] | WebGLRenderingContext['ALWAYS']; export type DepthMaskType = boolean; @@ -20,7 +20,7 @@ export type StencilFuncType = { mask: number; }; -export type StencilOpConstant = WebGLRenderingContext["KEEP"] | WebGLRenderingContext["ZERO"] | WebGLRenderingContext["REPLACE"] | WebGLRenderingContext["INCR"] | WebGLRenderingContext["INCR_WRAP"] | WebGLRenderingContext["DECR"] | WebGLRenderingContext["DECR_WRAP"] | WebGLRenderingContext["INVERT"]; +export type StencilOpConstant = WebGLRenderingContext['KEEP'] | WebGLRenderingContext['ZERO'] | WebGLRenderingContext['REPLACE'] | WebGLRenderingContext['INCR'] | WebGLRenderingContext['INCR_WRAP'] | WebGLRenderingContext['DECR'] | WebGLRenderingContext['DECR_WRAP'] | WebGLRenderingContext['INVERT']; export type StencilOpType = [StencilOpConstant, StencilOpConstant, StencilOpConstant]; @@ -29,31 +29,31 @@ export type TextureUnitType = number; export type ViewportType = [number, number, number, number]; export type StencilTest = { - func: WebGLRenderingContext["NEVER"]; + func: WebGLRenderingContext['NEVER']; mask: 0; } | { - func: WebGLRenderingContext["LESS"]; + func: WebGLRenderingContext['LESS']; mask: number; } | { - func: WebGLRenderingContext["EQUAL"]; + func: WebGLRenderingContext['EQUAL']; mask: number; } | { - func: WebGLRenderingContext["LEQUAL"]; + func: WebGLRenderingContext['LEQUAL']; mask: number; } | { - func: WebGLRenderingContext["GREATER"]; + func: WebGLRenderingContext['GREATER']; mask: number; } | { - func: WebGLRenderingContext["NOTEQUAL"]; + func: WebGLRenderingContext['NOTEQUAL']; mask: number; } | { - func: WebGLRenderingContext["GEQUAL"]; + func: WebGLRenderingContext['GEQUAL']; mask: number; } | { - func: WebGLRenderingContext["ALWAYS"]; + func: WebGLRenderingContext['ALWAYS']; mask: 0; }; -export type CullFaceModeType = WebGLRenderingContext["FRONT"] | WebGLRenderingContext["BACK"] | WebGLRenderingContext["FRONT_AND_BACK"]; +export type CullFaceModeType = WebGLRenderingContext['FRONT'] | WebGLRenderingContext['BACK'] | WebGLRenderingContext['FRONT_AND_BACK']; -export type FrontFaceType = WebGLRenderingContext["CW"] | WebGLRenderingContext["CCW"]; +export type FrontFaceType = WebGLRenderingContext['CW'] | WebGLRenderingContext['CCW']; diff --git a/src/render/draw_collision_debug.ts b/src/render/draw_collision_debug.ts index 6c41bed68f..c836af42ff 100644 --- a/src/render/draw_collision_debug.ts +++ b/src/render/draw_collision_debug.ts @@ -26,7 +26,7 @@ type TileBatch = { let quadTriangles: QuadTriangleArray | undefined | null; -function drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array, translate: [number, number], translateAnchor: "map" | "viewport", isText: boolean) { +function drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array, translate: [number, number], translateAnchor: 'map' | 'viewport', isText: boolean) { const context = painter.context; const gl = context.gl; const program = painter.useProgram('collisionBox'); diff --git a/src/render/line_atlas.ts b/src/render/line_atlas.ts index 65d552d303..6df412c5dd 100644 --- a/src/render/line_atlas.ts +++ b/src/render/line_atlas.ts @@ -40,7 +40,7 @@ class LineAtlas { * @private */ getDash(dasharray: Array, round: boolean) { - const key = dasharray.join(",") + String(round); + const key = dasharray.join(',') + String(round); if (!this.dashEntry[key]) { this.dashEntry[key] = this.addDash(dasharray, round); diff --git a/src/render/painter.ts b/src/render/painter.ts index 5ca829c990..d5756be724 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -62,7 +62,7 @@ import type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types'; import type ResolvedImage from '../style-spec/expression/types/resolved_image'; import type {RGBAImage} from '../util/image'; -export type RenderPass = "offscreen" | "opaque" | "translucent"; +export type RenderPass = 'offscreen' | 'opaque' | 'translucent'; type PainterOptions = { showOverdrawInspector: boolean; @@ -541,7 +541,7 @@ class Painter { * @returns {mat4} matrix * @private */ - translatePosMatrix(matrix: mat4, tile: Tile, translate: [number, number], translateAnchor: "map" | "viewport", inViewportPixelUnitsUnits?: boolean) { + translatePosMatrix(matrix: mat4, tile: Tile, translate: [number, number], translateAnchor: 'map' | 'viewport', inViewportPixelUnitsUnits?: boolean) { if (!translate[0] && !translate[1]) return matrix; const angle = inViewportPixelUnitsUnits ? diff --git a/src/render/program.ts b/src/render/program.ts index 3e71871ecb..138c51fa90 100644 --- a/src/render/program.ts +++ b/src/render/program.ts @@ -14,7 +14,7 @@ import type CullFaceMode from '../gl/cull_face_mode'; import type {UniformBindings, UniformValues, UniformLocations} from './uniform_binding'; import type {BinderUniform} from '../data/program_configuration'; -export type DrawMode = WebGLRenderingContext["LINES"] | WebGLRenderingContext["TRIANGLES"] | WebGLRenderingContext["LINE_STRIP"]; +export type DrawMode = WebGLRenderingContext['LINES'] | WebGLRenderingContext['TRIANGLES'] | WebGLRenderingContext['LINE_STRIP']; function getTokenizedAttributesAndUniforms(array: Array): Array { const result = []; diff --git a/src/render/program/hillshade_program.ts b/src/render/program/hillshade_program.ts index ae7f2fe02d..b40a16346a 100644 --- a/src/render/program/hillshade_program.ts +++ b/src/render/program/hillshade_program.ts @@ -56,9 +56,9 @@ const hillshadePrepareUniforms = (context: Context, locations: UniformLocations) }); const hillshadeUniformValues = (painter: Painter, tile: Tile, layer: HillshadeStyleLayer): UniformValues => { - const shadow = layer.paint.get("hillshade-shadow-color"); - const highlight = layer.paint.get("hillshade-highlight-color"); - const accent = layer.paint.get("hillshade-accent-color"); + const shadow = layer.paint.get('hillshade-shadow-color'); + const highlight = layer.paint.get('hillshade-highlight-color'); + const accent = layer.paint.get('hillshade-accent-color'); let azimuthal = layer.paint.get('hillshade-illumination-direction') * (Math.PI / 180); // modify azimuthal angle by map rotation if light is anchored at the viewport diff --git a/src/render/texture.ts b/src/render/texture.ts index 3d87afbb04..295f82eafb 100644 --- a/src/render/texture.ts +++ b/src/render/texture.ts @@ -1,9 +1,9 @@ import type Context from '../gl/context'; import type {RGBAImage, AlphaImage} from '../util/image'; -export type TextureFormat = WebGLRenderingContext["RGBA"] | WebGLRenderingContext["ALPHA"]; -export type TextureFilter = WebGLRenderingContext["LINEAR"] | WebGLRenderingContext["LINEAR_MIPMAP_NEAREST"] | WebGLRenderingContext["NEAREST"]; -export type TextureWrap = WebGLRenderingContext["REPEAT"] | WebGLRenderingContext["CLAMP_TO_EDGE"] | WebGLRenderingContext["MIRRORED_REPEAT"]; +export type TextureFormat = WebGLRenderingContext['RGBA'] | WebGLRenderingContext['ALPHA']; +export type TextureFilter = WebGLRenderingContext['LINEAR'] | WebGLRenderingContext['LINEAR_MIPMAP_NEAREST'] | WebGLRenderingContext['NEAREST']; +export type TextureWrap = WebGLRenderingContext['REPEAT'] | WebGLRenderingContext['CLAMP_TO_EDGE'] | WebGLRenderingContext['MIRRORED_REPEAT']; type EmptyImage = { width: number; diff --git a/src/source/canvas_source.ts b/src/source/canvas_source.ts index 0e2df7d92e..50715d5c30 100644 --- a/src/source/canvas_source.ts +++ b/src/source/canvas_source.ts @@ -11,10 +11,10 @@ import type Dispatcher from '../util/dispatcher'; import type {Evented} from '../util/evented'; export type CanvasSourceSpecification = { - "type": "canvas"; - "coordinates": [[number, number], [number, number], [number, number], [number, number]]; - "animate"?: boolean; - "canvas": string | HTMLCanvasElement; + 'type': 'canvas'; + 'coordinates': [[number, number], [number, number], [number, number], [number, number]]; + 'animate'?: boolean; + 'canvas': string | HTMLCanvasElement; }; /** diff --git a/src/source/geojson_source.ts b/src/source/geojson_source.ts index 4cc1c5cc27..e5274db378 100644 --- a/src/source/geojson_source.ts +++ b/src/source/geojson_source.ts @@ -60,7 +60,7 @@ import type {GeoJSONSourceSpecification, PromoteIdSpecification} from '../style- * @see [Create and style clusters](https://maplibre.org/maplibre-gl-js-docs/example/cluster/) */ class GeoJSONSource extends Evented implements Source { - type: "geojson"; + type: 'geojson'; id: string; minzoom: number; maxzoom: number; diff --git a/src/source/geojson_worker_source.ts b/src/source/geojson_worker_source.ts index 038c9219c4..e0b880d548 100644 --- a/src/source/geojson_worker_source.ts +++ b/src/source/geojson_worker_source.ts @@ -73,8 +73,8 @@ function loadGeoJSONTile(params: WorkerTileParameters, callback: LoadVectorDataC } export type SourceState = // Source empty or data loaded -"Idle" | // Data finished loading, but discard 'loadData' messages until receiving 'coalesced' -"Coalescing" | "NeedsLoadData"; // 'loadData' received while coalescing, trigger one more 'loadData' on receiving 'coalesced' +'Idle' | // Data finished loading, but discard 'loadData' messages until receiving 'coalesced' +'Coalescing' | 'NeedsLoadData'; // 'loadData' received while coalescing, trigger one more 'loadData' on receiving 'coalesced' /** * The {@link WorkerSource} implementation that supports {@link GeoJSONSource}. diff --git a/src/source/raster_dem_tile_source.ts b/src/source/raster_dem_tile_source.ts index d603fd7cd1..bcb4c149ed 100644 --- a/src/source/raster_dem_tile_source.ts +++ b/src/source/raster_dem_tile_source.ts @@ -15,14 +15,14 @@ import type {Callback} from '../types/callback'; import type {RasterDEMSourceSpecification} from '../style-spec/types'; class RasterDEMTileSource extends RasterTileSource implements Source { - encoding: "mapbox" | "terrarium"; + encoding: 'mapbox' | 'terrarium'; constructor(id: string, options: RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) { super(id, options, dispatcher, eventedParent); this.type = 'raster-dem'; this.maxzoom = 22; this._options = extend({type: 'raster-dem'}, options); - this.encoding = options.encoding || "mapbox"; + this.encoding = options.encoding || 'mapbox'; } serialize() { diff --git a/src/source/raster_tile_source.ts b/src/source/raster_tile_source.ts index de2e3693e7..9612dbd014 100644 --- a/src/source/raster_tile_source.ts +++ b/src/source/raster_tile_source.ts @@ -22,7 +22,7 @@ import type { } from '../style-spec/types'; class RasterTileSource extends Evented implements Source { - type: "raster" | "raster-dem"; + type: 'raster' | 'raster-dem'; id: string; minzoom: number; maxzoom: number; diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 8a6557bf06..8532ee55b6 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -76,7 +76,7 @@ class SourceCache extends Evented { // for sources with mutable data, this event fires when the underlying data // to a source is changed. (i.e. GeoJSONSource#setData and ImageSource#serCoordinates) - if (this._sourceLoaded && !this._paused && e.dataType === "source" && e.sourceDataType === 'content') { + if (this._sourceLoaded && !this._paused && e.dataType === 'source' && e.sourceDataType === 'content') { this.reload(); if (this.transform) { this.update(this.transform); @@ -227,7 +227,7 @@ class SourceCache extends Evented { this._cache.reset(); for (const i in this._tiles) { - if (this._tiles[i].state !== "errored") this._reloadTile(i, 'reloading'); + if (this._tiles[i].state !== 'errored') this._reloadTile(i, 'reloading'); } } diff --git a/src/source/tile.ts b/src/source/tile.ts index 2c5ce7f552..cf3a2c0ee6 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -34,11 +34,11 @@ import type Point from '../symbol/point'; import {mat4} from 'gl-matrix'; export type TileState = // Tile data is in the process of loading. -"loading" | // Tile data has been loaded. Tile can be rendered. -"loaded" | // Tile data has been loaded and is being updated. Tile can be rendered. -"reloading" | // Tile data has been deleted. -"unloaded" | // Tile data was not loaded because of an error. -"errored" | "expired"; /* Tile data was previously loaded, but has expired per its +'loading' | // Tile data has been loaded. Tile can be rendered. +'loaded' | // Tile data has been loaded and is being updated. Tile can be rendered. +'reloading' | // Tile data has been deleted. +'unloaded' | // Tile data was not loaded because of an error. +'errored' | 'expired'; /* Tile data was previously loaded, but has expired per its * HTTP headers and is in the process of refreshing. */ /** diff --git a/src/source/vector_tile_source.ts b/src/source/vector_tile_source.ts index 1b5b8ed55e..109286acde 100644 --- a/src/source/vector_tile_source.ts +++ b/src/source/vector_tile_source.ts @@ -44,7 +44,7 @@ import type {VectorSourceSpecification, PromoteIdSpecification} from '../style-s * @see [Add a third party vector tile source](https://maplibre.org/maplibre-gl-js-docs/example/third-party/) */ class VectorTileSource extends Evented implements Source { - type: "vector"; + type: 'vector'; id: string; minzoom: number; maxzoom: number; diff --git a/src/source/worker_source.ts b/src/source/worker_source.ts index 7ccb999db0..46e76a1f26 100644 --- a/src/source/worker_source.ts +++ b/src/source/worker_source.ts @@ -37,7 +37,7 @@ export type WorkerDEMTileParameters = TileParameters & { w: number; }; rawImageData: RGBAImage | ImageBitmap; - encoding: "mapbox" | "terrarium"; + encoding: 'mapbox' | 'terrarium'; }; export type WorkerTileResult = { diff --git a/src/source/worker_tile.ts b/src/source/worker_tile.ts index 162e2bf450..1e33992535 100644 --- a/src/source/worker_tile.ts +++ b/src/source/worker_tile.ts @@ -39,7 +39,7 @@ class WorkerTile { collectResourceTiming: boolean; returnDependencies: boolean; - status: "parsing" | "done"; + status: 'parsing' | 'done'; data: VectorTile; collisionBoxArray: CollisionBoxArray; @@ -90,7 +90,7 @@ class WorkerTile { if (sourceLayer.version === 1) { warnOnce(`Vector tile source "${this.source}" layer "${sourceLayerId}" ` + - `does not use vector tile spec v2 and therefore may have some rendering errors.`); + 'does not use vector tile spec v2 and therefore may have some rendering errors.'); } const sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId); diff --git a/src/style-spec/composite.ts b/src/style-spec/composite.ts index b9858126a1..1c3f480c45 100644 --- a/src/style-spec/composite.ts +++ b/src/style-spec/composite.ts @@ -7,7 +7,7 @@ export default function (style) { for (const id in style.sources) { const source = style.sources[id]; - if (source.type !== "vector") + if (source.type !== 'vector') continue; const match = /^mapbox:\/\/(.*)/.exec(source.url); @@ -25,11 +25,11 @@ export default function (style) { delete style.sources[id]; }); - const compositeID = sourceIDs.join(","); + const compositeID = sourceIDs.join(','); style.sources[compositeID] = { - "type": "vector", - "url": `mapbox://${compositeID}` + 'type': 'vector', + 'url': `mapbox://${compositeID}` }; style.layers.forEach((layer) => { diff --git a/src/style-spec/expression/definitions/assertion.ts b/src/style-spec/expression/definitions/assertion.ts index 2ccaf09484..9a8d8aa892 100644 --- a/src/style-spec/expression/definitions/assertion.ts +++ b/src/style-spec/expression/definitions/assertion.ts @@ -36,7 +36,7 @@ class Assertion implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) - return context.error(`Expected at least one argument.`) as null; + return context.error('Expected at least one argument.') as null; let i = 1; let type; diff --git a/src/style-spec/expression/definitions/at.ts b/src/style-spec/expression/definitions/at.ts index 875e1543ad..d7d574ba80 100644 --- a/src/style-spec/expression/definitions/at.ts +++ b/src/style-spec/expression/definitions/at.ts @@ -61,7 +61,7 @@ class At implements Expression { } serialize() { - return ["at", this.index.serialize(), this.input.serialize()]; + return ['at', this.index.serialize(), this.input.serialize()]; } } diff --git a/src/style-spec/expression/definitions/case.ts b/src/style-spec/expression/definitions/case.ts index c237745950..3756b0f6b5 100644 --- a/src/style-spec/expression/definitions/case.ts +++ b/src/style-spec/expression/definitions/case.ts @@ -25,7 +25,7 @@ class Case implements Expression { if (args.length < 4) return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`) as null; if (args.length % 2 !== 0) - return context.error(`Expected an odd number of arguments.`) as null; + return context.error('Expected an odd number of arguments.') as null; let outputType: Type | undefined | null; if (context.expectedType && context.expectedType.kind !== 'value') { @@ -74,7 +74,7 @@ class Case implements Expression { } serialize() { - const serialized = ["case" as unknown]; + const serialized = ['case' as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index 4232d41c47..cc2a5b5cff 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -19,7 +19,7 @@ class Coalesce implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { - return context.error("Expectected at least one argument.") as null; + return context.error('Expectected at least one argument.') as null; } let outputType: Type = (null as any); const expectedType = context.expectedType; @@ -82,7 +82,7 @@ class Coalesce implements Expression { } serialize() { - const serialized = ["coalesce" as unknown]; + const serialized = ['coalesce' as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/coercion.ts b/src/style-spec/expression/definitions/coercion.ts index 26e4c73d90..b4f93fc703 100644 --- a/src/style-spec/expression/definitions/coercion.ts +++ b/src/style-spec/expression/definitions/coercion.ts @@ -38,13 +38,13 @@ class Coercion implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) - return context.error(`Expected at least one argument.`) as null; + return context.error('Expected at least one argument.') as null; const name: string = (args[0] as any); assert(types[name], name); if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2) - return context.error(`Expected one argument.`) as null; + return context.error('Expected one argument.') as null; const type = types[name]; diff --git a/src/style-spec/expression/definitions/collator.ts b/src/style-spec/expression/definitions/collator.ts index 79f8df7488..537c5bdbdf 100644 --- a/src/style-spec/expression/definitions/collator.ts +++ b/src/style-spec/expression/definitions/collator.ts @@ -21,11 +21,11 @@ export default class CollatorExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) - return context.error(`Expected one argument.`) as null; + return context.error('Expected one argument.') as null; const options = (args[1] as any); - if (typeof options !== "object" || Array.isArray(options)) - return context.error(`Collator options argument must be an object.`) as null; + if (typeof options !== 'object' || Array.isArray(options)) + return context.error('Collator options argument must be an object.') as null; const caseSensitive = context.parse( options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType); @@ -71,6 +71,6 @@ export default class CollatorExpression implements Expression { if (this.locale) { options['locale'] = this.locale.serialize(); } - return ["collator", options]; + return ['collator', options]; } } diff --git a/src/style-spec/expression/definitions/comparison.ts b/src/style-spec/expression/definitions/comparison.ts index 541a77aa91..5be29eec04 100644 --- a/src/style-spec/expression/definitions/comparison.ts +++ b/src/style-spec/expression/definitions/comparison.ts @@ -8,7 +8,7 @@ import type EvaluationContext from '../evaluation_context'; import type ParsingContext from '../parsing_context'; import type {Type} from '../types'; -type ComparisonOperator = "==" | "!=" | "<" | ">" | "<=" | ">="; +type ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>='; function isComparableType(op: ComparisonOperator, type: Type) { if (op === '==' || op === '!=') { @@ -77,7 +77,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3 && args.length !== 4) - return context.error(`Expected two or three arguments.`) as null; + return context.error('Expected two or three arguments.') as null; const op: ComparisonOperator = (args[0] as any); @@ -119,7 +119,7 @@ function makeComparison(op: ComparisonOperator, compareBasic, compareWithCollato lhs.type.kind !== 'value' && rhs.type.kind !== 'value' ) { - return context.error(`Cannot use collator to compare non-string types.`) as null; + return context.error('Cannot use collator to compare non-string types.') as null; } collator = context.parse(args[3], 3, CollatorType); if (!collator) return null; diff --git a/src/style-spec/expression/definitions/format.ts b/src/style-spec/expression/definitions/format.ts index 7bf7e18316..92c5047f72 100644 --- a/src/style-spec/expression/definitions/format.ts +++ b/src/style-spec/expression/definitions/format.ts @@ -35,12 +35,12 @@ export default class FormatExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length < 2) { - return context.error(`Expected at least one argument.`) as null; + return context.error('Expected at least one argument.') as null; } const firstArg = args[1]; if (!Array.isArray(firstArg) && typeof firstArg === 'object') { - return context.error(`First argument must be an image or text section.`) as null; + return context.error('First argument must be an image or text section.') as null; } const sections: Array = []; @@ -48,7 +48,7 @@ export default class FormatExpression implements Expression { for (let i = 1; i <= args.length - 1; ++i) { const arg = (args[i] as any); - if (nextTokenMayBeObject && typeof arg === "object" && !Array.isArray(arg)) { + if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) { nextTokenMayBeObject = false; let scale = null; @@ -79,7 +79,7 @@ export default class FormatExpression implements Expression { const kind = content.type.kind; if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage') - return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`) as null; + return context.error('Formatted text type must be \'string\', \'value\', \'image\' or \'null\'.') as null; nextTokenMayBeObject = true; sections.push({content, scale: null, font: null, textColor: null}); @@ -130,7 +130,7 @@ export default class FormatExpression implements Expression { } serialize() { - const serialized = ["format"] as (string | {})[]; + const serialized = ['format'] as (string | {})[]; for (const section of this.sections) { serialized.push(section.content.serialize()); const options = {}; diff --git a/src/style-spec/expression/definitions/image.ts b/src/style-spec/expression/definitions/image.ts index 6cabef56da..133c07a1c2 100644 --- a/src/style-spec/expression/definitions/image.ts +++ b/src/style-spec/expression/definitions/image.ts @@ -17,11 +17,11 @@ export default class ImageExpression implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2) { - return context.error(`Expected two arguments.`) as null; + return context.error('Expected two arguments.') as null; } const name = context.parse(args[1], 1, StringType); - if (!name) return context.error(`No image name provided.`) as null; + if (!name) return context.error('No image name provided.') as null; return new ImageExpression(name); } @@ -45,6 +45,6 @@ export default class ImageExpression implements Expression { } serialize() { - return ["image", this.input.serialize()]; + return ['image', this.input.serialize()]; } } diff --git a/src/style-spec/expression/definitions/in.ts b/src/style-spec/expression/definitions/in.ts index 5b85956ae5..cec0a2524d 100644 --- a/src/style-spec/expression/definitions/in.ts +++ b/src/style-spec/expression/definitions/in.ts @@ -72,7 +72,7 @@ class In implements Expression { } serialize() { - return ["in", this.needle.serialize(), this.haystack.serialize()]; + return ['in', this.needle.serialize(), this.haystack.serialize()]; } } diff --git a/src/style-spec/expression/definitions/index_of.ts b/src/style-spec/expression/definitions/index_of.ts index c06b90567c..543cd205a5 100644 --- a/src/style-spec/expression/definitions/index_of.ts +++ b/src/style-spec/expression/definitions/index_of.ts @@ -87,9 +87,9 @@ class IndexOf implements Expression { serialize() { if (this.fromIndex != null && this.fromIndex !== undefined) { const fromIndex = this.fromIndex.serialize(); - return ["index-of", this.needle.serialize(), this.haystack.serialize(), fromIndex]; + return ['index-of', this.needle.serialize(), this.haystack.serialize(), fromIndex]; } - return ["index-of", this.needle.serialize(), this.haystack.serialize()]; + return ['index-of', this.needle.serialize(), this.haystack.serialize()]; } } diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index ee711a1e5a..86c567da3d 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -12,25 +12,25 @@ import type EvaluationContext from '../evaluation_context'; import type {Type} from '../types'; export type InterpolationType = { - name: "linear"; + name: 'linear'; } | { - name: "exponential"; + name: 'exponential'; base: number; } | { - name: "cubic-bezier"; + name: 'cubic-bezier'; controlPoints: [number, number, number, number]; }; class Interpolate implements Expression { type: Type; - operator: "interpolate" | "interpolate-hcl" | "interpolate-lab"; + operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab'; interpolation: InterpolationType; input: Expression; labels: Array; outputs: Array; - constructor(type: Type, operator: "interpolate" | "interpolate-hcl" | "interpolate-lab", interpolation: InterpolationType, input: Expression, stops: Stops) { + constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) { this.type = type; this.operator = operator; this.interpolation = interpolation; @@ -62,7 +62,7 @@ class Interpolate implements Expression { let [operator, interpolation, input, ...rest] = args; if (!Array.isArray(interpolation) || interpolation.length === 0) { - return context.error(`Expected an interpolation type expression.`, 1) as null; + return context.error('Expected an interpolation type expression.', 1) as null; } if (interpolation[0] === 'linear') { @@ -70,7 +70,7 @@ class Interpolate implements Expression { } else if (interpolation[0] === 'exponential') { const base = interpolation[1]; if (typeof base !== 'number') - return context.error(`Exponential interpolation requires a numeric base.`, 1, 1) as null; + return context.error('Exponential interpolation requires a numeric base.', 1, 1) as null; interpolation = { name: 'exponential', base @@ -97,7 +97,7 @@ class Interpolate implements Expression { } if ((args.length - 1) % 2 !== 0) { - return context.error(`Expected an even number of arguments.`) as null; + return context.error('Expected an even number of arguments.') as null; } input = context.parse(input, 2, NumberType); @@ -196,15 +196,15 @@ class Interpolate implements Expression { serialize(): Array { let interpolation; if (this.interpolation.name === 'linear') { - interpolation = ["linear"]; + interpolation = ['linear']; } else if (this.interpolation.name === 'exponential') { if (this.interpolation.base === 1) { - interpolation = ["linear"]; + interpolation = ['linear']; } else { - interpolation = ["exponential", this.interpolation.base]; + interpolation = ['exponential', this.interpolation.base]; } } else { - interpolation = ["cubic-bezier" as unknown].concat(this.interpolation.controlPoints); + interpolation = ['cubic-bezier' as unknown].concat(this.interpolation.controlPoints); } const serialized = [this.operator, interpolation, this.input.serialize()]; diff --git a/src/style-spec/expression/definitions/length.ts b/src/style-spec/expression/definitions/length.ts index f5e2140f48..99487fcda6 100644 --- a/src/style-spec/expression/definitions/length.ts +++ b/src/style-spec/expression/definitions/length.ts @@ -50,7 +50,7 @@ class Length implements Expression { } serialize() { - const serialized = ["length" as unknown]; + const serialized = ['length' as unknown]; this.eachChild(child => { serialized.push(child.serialize()); }); return serialized; } diff --git a/src/style-spec/expression/definitions/let.ts b/src/style-spec/expression/definitions/let.ts index 35e95b45db..bca8c0d159 100644 --- a/src/style-spec/expression/definitions/let.ts +++ b/src/style-spec/expression/definitions/let.ts @@ -38,7 +38,7 @@ class Let implements Expression { } if (/[^a-zA-Z0-9_]/.test(name)) { - return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i) as null; + return context.error('Variable names must contain only alphanumeric characters or \'_\'.', i) as null; } const value = context.parse(args[i + 1], i + 1); @@ -58,7 +58,7 @@ class Let implements Expression { } serialize() { - const serialized = ["let" as unknown]; + const serialized = ['let' as unknown]; for (const [name, expr] of this.bindings) { serialized.push(name, expr.serialize()); } diff --git a/src/style-spec/expression/definitions/literal.ts b/src/style-spec/expression/definitions/literal.ts index f709bf3e31..df07074a5f 100644 --- a/src/style-spec/expression/definitions/literal.ts +++ b/src/style-spec/expression/definitions/literal.ts @@ -21,7 +21,7 @@ class Literal implements Expression { return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`) as null; if (!isValue(args[1])) - return context.error(`invalid value`) as null; + return context.error('invalid value') as null; const value = (args[1] as any); let type = typeOf(value); @@ -53,12 +53,12 @@ class Literal implements Expression { serialize(): Array { if (this.type.kind === 'array' || this.type.kind === 'object') { - return ["literal", this.value]; + return ['literal', this.value]; } else if (this.value instanceof Color) { // Constant-folding can generate Literal expressions that you // couldn't actually generate with a "literal" expression, // so we have to implement an equivalent serialization here - return ["rgba" as unknown].concat(this.value.toArray()); + return ['rgba' as unknown].concat(this.value.toArray()); } else if (this.value instanceof Formatted) { // Same as Color return this.value.serialize(); diff --git a/src/style-spec/expression/definitions/match.ts b/src/style-spec/expression/definitions/match.ts index c867c78c9f..0d307d964c 100644 --- a/src/style-spec/expression/definitions/match.ts +++ b/src/style-spec/expression/definitions/match.ts @@ -36,7 +36,7 @@ class Match implements Expression { if (args.length < 5) return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`) as null; if (args.length % 2 !== 1) - return context.error(`Expected an even number of arguments.`) as null; + return context.error('Expected an even number of arguments.') as null; let inputType; let outputType; @@ -60,12 +60,12 @@ class Match implements Expression { for (const label of labels) { if (typeof label !== 'number' && typeof label !== 'string') { - return labelContext.error(`Branch labels must be numbers or strings.`) as null; + return labelContext.error('Branch labels must be numbers or strings.') as null; } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) { return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`) as null; } else if (typeof label === 'number' && Math.floor(label) !== label) { - return labelContext.error(`Numeric branch labels must be integer values.`) as null; + return labelContext.error('Numeric branch labels must be integer values.') as null; } else if (!inputType) { inputType = typeOf(label); @@ -118,7 +118,7 @@ class Match implements Expression { } serialize(): Array { - const serialized = ["match", this.input.serialize()]; + const serialized = ['match', this.input.serialize()]; // Sort so serialization has an arbitrary defined order, even though // branch order doesn't affect evaluation diff --git a/src/style-spec/expression/definitions/number_format.ts b/src/style-spec/expression/definitions/number_format.ts index c5ed8358e3..ed09a0d310 100644 --- a/src/style-spec/expression/definitions/number_format.ts +++ b/src/style-spec/expression/definitions/number_format.ts @@ -18,7 +18,7 @@ declare class Intl$NumberFormat { } type NumberFormatOptions = { - style?: "decimal" | "currency" | "percent"; + style?: 'decimal' | 'currency' | 'percent'; currency?: null | string; minimumFractionDigits?: null | string; maximumFractionDigits?: null | string; @@ -47,14 +47,14 @@ export default class NumberFormat implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 3) - return context.error(`Expected two arguments.`) as null; + return context.error('Expected two arguments.') as null; const number = context.parse(args[1], 1, NumberType); if (!number) return null; const options = (args[2] as any); - if (typeof options !== "object" || Array.isArray(options)) - return context.error(`NumberFormat options argument must be an object.`) as null; + if (typeof options !== 'object' || Array.isArray(options)) + return context.error('NumberFormat options argument must be an object.') as null; let locale = null; if (options['locale']) { @@ -86,7 +86,7 @@ export default class NumberFormat implements Expression { evaluate(ctx: EvaluationContext) { return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], { - style: this.currency ? "currency" : "decimal", + style: this.currency ? 'currency' : 'decimal', currency: this.currency ? this.currency.evaluate(ctx) : undefined, minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined, maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined, @@ -127,6 +127,6 @@ export default class NumberFormat implements Expression { if (this.maxFractionDigits) { options['max-fraction-digits'] = this.maxFractionDigits.serialize(); } - return ["number-format", this.number.serialize(), options]; + return ['number-format', this.number.serialize(), options]; } } diff --git a/src/style-spec/expression/definitions/slice.ts b/src/style-spec/expression/definitions/slice.ts index 29b7b14cca..d95d504cc6 100644 --- a/src/style-spec/expression/definitions/slice.ts +++ b/src/style-spec/expression/definitions/slice.ts @@ -83,9 +83,9 @@ class Slice implements Expression { serialize() { if (this.endIndex != null && this.endIndex !== undefined) { const endIndex = this.endIndex.serialize(); - return ["slice", this.input.serialize(), this.beginIndex.serialize(), endIndex]; + return ['slice', this.input.serialize(), this.beginIndex.serialize(), endIndex]; } - return ["slice", this.input.serialize(), this.beginIndex.serialize()]; + return ['slice', this.input.serialize(), this.beginIndex.serialize()]; } } diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index 7593581b38..991a00b438 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -33,7 +33,7 @@ class Step implements Expression { } if ((args.length - 1) % 2 !== 0) { - return context.error(`Expected an even number of arguments.`) as null; + return context.error('Expected an even number of arguments.') as null; } const input = context.parse(args[1], 1, NumberType); @@ -104,7 +104,7 @@ class Step implements Expression { } serialize() { - const serialized = ["step", this.input.serialize()]; + const serialized = ['step', this.input.serialize()]; for (let i = 0; i < this.labels.length; i++) { if (i > 0) { serialized.push(this.labels[i]); diff --git a/src/style-spec/expression/definitions/var.ts b/src/style-spec/expression/definitions/var.ts index 0dba411c06..8fc47c1210 100644 --- a/src/style-spec/expression/definitions/var.ts +++ b/src/style-spec/expression/definitions/var.ts @@ -16,7 +16,7 @@ class Var implements Expression { static parse(args: ReadonlyArray, context: ParsingContext): Expression | undefined | null { if (args.length !== 2 || typeof args[1] !== 'string') - return context.error(`'var' expression requires exactly one string literal argument.`) as null; + return context.error('\'var\' expression requires exactly one string literal argument.') as null; const name = args[1]; if (!context.scope.has(name)) { @@ -37,7 +37,7 @@ class Var implements Expression { } serialize() { - return ["var", this.name]; + return ['var', this.name]; } } diff --git a/src/style-spec/expression/definitions/within.ts b/src/style-spec/expression/definitions/within.ts index c04006b561..c0c01b5351 100644 --- a/src/style-spec/expression/definitions/within.ts +++ b/src/style-spec/expression/definitions/within.ts @@ -310,7 +310,7 @@ class Within implements Expression { return new Within(geojson, geojson); } } - return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`) as null; + return context.error('\'within\' expression requires valid geojson object that contains polygon geometry type.') as null; } evaluate(ctx: EvaluationContext) { @@ -331,7 +331,7 @@ class Within implements Expression { } serialize(): Array { - return ["within", this.geojson]; + return ['within', this.geojson]; } } diff --git a/src/style-spec/expression/index.ts b/src/style-spec/expression/index.ts index f3995cf653..1349e29b59 100644 --- a/src/style-spec/expression/index.ts +++ b/src/style-spec/expression/index.ts @@ -27,14 +27,14 @@ import type Point from '../../symbol/point'; import type {CanonicalTileID} from '../../source/tile_id'; export type Feature = { - readonly type: 1 | 2 | 3 | "Unknown" | "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon"; + readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon'; readonly id?: any; readonly properties: {[_: string]: any}; readonly patterns?: { [_: string]: { - "min": string; - "mid": string; - "max": string; + 'min': string; + 'mid': string; + 'max': string; }; }; readonly geometry?: Array>; @@ -232,7 +232,7 @@ export class ZoomDependentExpression { } export type ConstantExpression = { - kind: "constant"; + kind: 'constant'; readonly evaluate: ( globals: GlobalProperties, feature?: Feature, @@ -243,7 +243,7 @@ export type ConstantExpression = { }; export type SourceExpression = { - kind: "source"; + kind: 'source'; isStateDependent: boolean; readonly evaluate: ( globals: GlobalProperties, @@ -256,7 +256,7 @@ export type SourceExpression = { }; export type CameraExpression = { - kind: "camera"; + kind: 'camera'; readonly evaluate: ( globals: GlobalProperties, feature?: Feature, @@ -270,7 +270,7 @@ export type CameraExpression = { }; export type CompositeExpression = { - kind: "composite"; + kind: 'composite'; isStateDependent: boolean; readonly evaluate: ( globals: GlobalProperties, diff --git a/src/style-spec/expression/is_constant.ts b/src/style-spec/expression/is_constant.ts index 4e09764bd0..46608c49e1 100644 --- a/src/style-spec/expression/is_constant.ts +++ b/src/style-spec/expression/is_constant.ts @@ -1,6 +1,6 @@ import CompoundExpression from './compound_expression'; import Within from './definitions/within'; -import type {Expression} from "./expression"; +import type {Expression} from './expression'; function isFeatureConstant(e: Expression) { if (e instanceof CompoundExpression) { diff --git a/src/style-spec/expression/parsing_context.ts b/src/style-spec/expression/parsing_context.ts index f30f535260..a3f5d2bae4 100644 --- a/src/style-spec/expression/parsing_context.ts +++ b/src/style-spec/expression/parsing_context.ts @@ -59,7 +59,7 @@ class ParsingContext { expectedType?: Type | null, bindings?: Array<[string, Expression]>, options: { - typeAnnotation?: "assert" | "coerce" | "omit"; + typeAnnotation?: 'assert' | 'coerce' | 'omit'; } = {} ): Expression | undefined | null { if (index) { @@ -71,14 +71,14 @@ class ParsingContext { _parse( expr: unknown, options: { - typeAnnotation?: "assert" | "coerce" | "omit"; + typeAnnotation?: 'assert' | 'coerce' | 'omit'; } ): Expression | undefined | null { if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') { expr = ['literal', expr]; } - function annotate(parsed, type, typeAnnotation: "assert" | "coerce" | "omit") { + function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') { if (typeAnnotation === 'assert') { return new Assertion(type, [parsed]); } else if (typeAnnotation === 'coerce') { @@ -90,7 +90,7 @@ class ParsingContext { if (Array.isArray(expr)) { if (expr.length === 0) { - return this.error(`Expected an array with at least one element. If you wanted a literal array, use ["literal", []].`) as null; + return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].') as null; } const op = expr[0]; @@ -144,9 +144,9 @@ class ParsingContext { return this.error(`Unknown expression "${op}". If you wanted a literal array, use ["literal", [...]].`, 0) as null; } else if (typeof expr === 'undefined') { - return this.error(`'undefined' value invalid. Use null instead.`) as null; + return this.error('\'undefined\' value invalid. Use null instead.') as null; } else if (typeof expr === 'object') { - return this.error(`Bare objects invalid. Use ["literal", {...}] instead.`) as null; + return this.error('Bare objects invalid. Use ["literal", {...}] instead.') as null; } else { return this.error(`Expected an array, but found ${typeof expr} instead.`) as null; } diff --git a/src/style-spec/expression/types.ts b/src/style-spec/expression/types.ts index 6bd52ec3be..6964b62736 100644 --- a/src/style-spec/expression/types.ts +++ b/src/style-spec/expression/types.ts @@ -1,49 +1,49 @@ export type NullTypeT = { - kind: "null"; + kind: 'null'; }; export type NumberTypeT = { - kind: "number"; + kind: 'number'; }; export type StringTypeT = { - kind: "string"; + kind: 'string'; }; export type BooleanTypeT = { - kind: "boolean"; + kind: 'boolean'; }; export type ColorTypeT = { - kind: "color"; + kind: 'color'; }; export type ObjectTypeT = { - kind: "object"; + kind: 'object'; }; export type ValueTypeT = { - kind: "value"; + kind: 'value'; }; export type ErrorTypeT = { - kind: "error"; + kind: 'error'; }; export type CollatorTypeT = { - kind: "collator"; + kind: 'collator'; }; export type FormattedTypeT = { - kind: "formatted"; + kind: 'formatted'; }; export type ResolvedImageTypeT = { - kind: "resolvedImage"; + kind: 'resolvedImage'; }; -export type EvaluationKind = "constant" | "source" | "camera" | "composite"; +export type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite'; export type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ObjectTypeT | ValueTypeT | // eslint-disable-line no-use-before-define ArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | ResolvedImageTypeT; export type ArrayType = { - kind: "array"; + kind: 'array'; itemType: Type; N: number | undefined | null; }; -export type NativeType = "number" | "string" | "boolean" | "null" | "array" | "object"; +export type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object'; export const NullType = {kind: 'null'} as NullTypeT; export const NumberType = {kind: 'number'} as NumberTypeT; diff --git a/src/style-spec/expression/types/collator.ts b/src/style-spec/expression/types/collator.ts index cca02b13b0..12f46b53e3 100644 --- a/src/style-spec/expression/types/collator.ts +++ b/src/style-spec/expression/types/collator.ts @@ -14,17 +14,17 @@ declare class Intl$Collator { } type CollatorOptions = { - localeMatcher?: "lookup" | "best fit"; - usage?: "sort" | "search"; - sensitivity?: "base" | "accent" | "case" | "variant"; + localeMatcher?: 'lookup' | 'best fit'; + usage?: 'sort' | 'search'; + sensitivity?: 'base' | 'accent' | 'case' | 'variant'; ignorePunctuation?: boolean; numeric?: boolean; - caseFirst?: "upper" | "lower" | "false"; + caseFirst?: 'upper' | 'lower' | 'false'; }; export default class Collator { locale: string | null; - sensitivity: "base" | "accent" | "case" | "variant"; + sensitivity: 'base' | 'accent' | 'case' | 'variant'; collator: Intl$Collator; constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) { diff --git a/src/style-spec/expression/types/formatted.ts b/src/style-spec/expression/types/formatted.ts index 26afb70025..13f64077cc 100644 --- a/src/style-spec/expression/types/formatted.ts +++ b/src/style-spec/expression/types/formatted.ts @@ -48,22 +48,22 @@ export default class Formatted { } serialize(): Array { - const serialized: Array = ["format"]; + const serialized: Array = ['format']; for (const section of this.sections) { if (section.image) { - serialized.push(["image", section.image.name]); + serialized.push(['image', section.image.name]); continue; } serialized.push(section.text); const options: {[key: string]: unknown} = {}; if (section.fontStack) { - options["text-font"] = ["literal", section.fontStack.split(',')]; + options['text-font'] = ['literal', section.fontStack.split(',')]; } if (section.scale) { - options["font-scale"] = section.scale; + options['font-scale'] = section.scale; } if (section.textColor) { - options["text-color"] = (["rgba"] as Array).concat(section.textColor.toArray()); + options['text-color'] = (['rgba'] as Array).concat(section.textColor.toArray()); } serialized.push(options); } diff --git a/src/style-spec/expression/types/resolved_image.ts b/src/style-spec/expression/types/resolved_image.ts index d6dccc52bb..491d886435 100644 --- a/src/style-spec/expression/types/resolved_image.ts +++ b/src/style-spec/expression/types/resolved_image.ts @@ -22,6 +22,6 @@ export default class ResolvedImage { } serialize(): Array { - return ["image", this.name]; + return ['image', this.name]; } } diff --git a/src/style-spec/feature_filter/convert.ts b/src/style-spec/feature_filter/convert.ts index 80df60744a..8592765756 100644 --- a/src/style-spec/feature_filter/convert.ts +++ b/src/style-spec/feature_filter/convert.ts @@ -2,7 +2,7 @@ import {isExpressionFilter} from './index'; import type {FilterSpecification} from '../types'; -type ExpectedTypes = {[_: string]: "string" | "number" | "boolean"}; +type ExpectedTypes = {[_: string]: 'string' | 'number' | 'boolean'}; /** * Convert the given legacy filter to (the JSON representation of) an diff --git a/src/style-spec/feature_filter/index.ts b/src/style-spec/feature_filter/index.ts index 5bb5cffe42..935141a4f5 100644 --- a/src/style-spec/feature_filter/index.ts +++ b/src/style-spec/feature_filter/index.ts @@ -154,9 +154,9 @@ function convertInOp(property: string, values: Array) { if (values.length === 0) { return false; } switch (property) { case '$type': - return [`filter-type-in`, ['literal', values]]; + return ['filter-type-in', ['literal', values]]; case '$id': - return [`filter-id-in`, ['literal', values]]; + return ['filter-id-in', ['literal', values]]; default: if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) { return ['filter-in-large', property, ['literal', values.sort(compare)]]; @@ -171,9 +171,9 @@ function convertHasOp(property: string) { case '$type': return true; case '$id': - return [`filter-has-id`]; + return ['filter-has-id']; default: - return [`filter-has`, property]; + return ['filter-has', property]; } } diff --git a/src/style-spec/function/convert.ts b/src/style-spec/function/convert.ts index 9f81bc232f..a281ce0fe0 100644 --- a/src/style-spec/function/convert.ts +++ b/src/style-spec/function/convert.ts @@ -169,8 +169,8 @@ function convertPropertyFunction(parameters, propertySpec, stops) { const base = parameters.base !== undefined ? parameters.base : 1; const expression = [ getInterpolateOperator(parameters), - base === 1 ? ["linear"] : ["exponential", base], - ["number", get] + base === 1 ? ['linear'] : ['exponential', base], + ['number', get] ]; for (const stop of stops) { @@ -196,7 +196,7 @@ function convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) isStep = true; } else if (type === 'exponential') { const base = parameters.base !== undefined ? parameters.base : 1; - expression = [getInterpolateOperator(parameters), base === 1 ? ["linear"] : ["exponential", base], input]; + expression = [getInterpolateOperator(parameters), base === 1 ? ['linear'] : ['exponential', base], input]; } else { throw new Error(`Unknown zoom function type "${type}"`); diff --git a/src/style-spec/migrate/v8.ts b/src/style-spec/migrate/v8.ts index acd4c5a06f..1e2d127ad8 100644 --- a/src/style-spec/migrate/v8.ts +++ b/src/style-spec/migrate/v8.ts @@ -161,7 +161,7 @@ export default function(style) { return font; } else { - throw new Error("unexpected font value"); + throw new Error('unexpected font value'); } } diff --git a/src/style-spec/style-spec.ts b/src/style-spec/style-spec.ts index beaff4dff6..a2cd866179 100644 --- a/src/style-spec/style-spec.ts +++ b/src/style-spec/style-spec.ts @@ -1,5 +1,5 @@ -type ExpressionType = "data-driven" | "cross-faded" | "cross-faded-data-driven" | "color-ramp" | "data-constant" | "constant"; -type ExpressionParameters = Array<"zoom" | "feature" | "feature-state" | "heatmap-density" | "line-progress">; +type ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven' | 'color-ramp' | 'data-constant' | 'constant'; +type ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress'>; type ExpressionSpecification = { interpolated: boolean; @@ -7,49 +7,49 @@ type ExpressionSpecification = { }; export type StylePropertySpecification = { - type: "number"; + type: 'number'; 'property-type': ExpressionType; expression?: ExpressionSpecification; transition: boolean; default?: number; } | { - type: "string"; + type: 'string'; 'property-type': ExpressionType; expression?: ExpressionSpecification; transition: boolean; default?: string; tokens?: boolean; } | { - type: "boolean"; + type: 'boolean'; 'property-type': ExpressionType; expression?: ExpressionSpecification; transition: boolean; default?: boolean; } | { - type: "enum"; + type: 'enum'; 'property-type': ExpressionType; expression?: ExpressionSpecification; values: {[_: string]: {}}; transition: boolean; default?: string; } | { - type: "color"; + type: 'color'; 'property-type': ExpressionType; expression?: ExpressionSpecification; transition: boolean; default?: string; overridable: boolean; } | { - type: "array"; - value: "number"; + type: 'array'; + value: 'number'; 'property-type': ExpressionType; expression?: ExpressionSpecification; length?: number; transition: boolean; default?: Array; } | { - type: "array"; - value: "string"; + type: 'array'; + value: 'string'; 'property-type': ExpressionType; expression?: ExpressionSpecification; length?: number; diff --git a/src/style-spec/util/result.ts b/src/style-spec/util/result.ts index 2d550382ca..3928ad4e1d 100644 --- a/src/style-spec/util/result.ts +++ b/src/style-spec/util/result.ts @@ -5,10 +5,10 @@ * @private */ export type Result = { - result: "success"; + result: 'success'; value: T; } | { - result: "error"; + result: 'error'; value: E; }; diff --git a/src/style-spec/validate/validate_array.ts b/src/style-spec/validate/validate_array.ts index b8b45a9f38..d7f68e52ca 100644 --- a/src/style-spec/validate/validate_array.ts +++ b/src/style-spec/validate/validate_array.ts @@ -24,8 +24,8 @@ export default function validateArray(options) { } let arrayElementSpec = { - "type": arraySpec.value, - "values": arraySpec.values + 'type': arraySpec.value, + 'values': arraySpec.values }; if (styleSpec.$version < 7) { diff --git a/src/style-spec/validate/validate_source.ts b/src/style-spec/validate/validate_source.ts index 820557d148..322271cbdd 100644 --- a/src/style-spec/validate/validate_source.ts +++ b/src/style-spec/validate/validate_source.ts @@ -85,7 +85,7 @@ export default function validateSource(options) { }); case 'canvas': - return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')]; + return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')]; default: return validateEnum({ diff --git a/src/style-spec/visit.ts b/src/style-spec/visit.ts index ef22d0149c..8092f2c8fa 100644 --- a/src/style-spec/visit.ts +++ b/src/style-spec/visit.ts @@ -37,7 +37,7 @@ export function eachLayer(style: StyleSpecification, callback: (_: LayerSpecific type PropertyCallback = ( a: { - path: [string, "paint" | "layout", string]; // [layerid, paint/layout, property key], + path: [string, 'paint' | 'layout', string]; // [layerid, paint/layout, property key], key: string; value: PropertyValueSpecification | DataDrivenPropertyValueSpecification; reference: StylePropertySpecification; @@ -55,7 +55,7 @@ export function eachProperty( }, callback: PropertyCallback ) { - function inner(layer, propertyType: "paint" | "layout") { + function inner(layer, propertyType: 'paint' | 'layout') { const properties = (layer[propertyType] as any); if (!properties) return; Object.keys(properties).forEach((key) => { diff --git a/src/style/format_section_override.ts b/src/style/format_section_override.ts index 83725c51cb..9b7e7c9754 100644 --- a/src/style/format_section_override.ts +++ b/src/style/format_section_override.ts @@ -36,7 +36,7 @@ export default class FormatSectionOverride implements Expression { eachChild(fn: (_: Expression) => void) { if (!this.defaultValue.isConstant()) { - const expr: ZoomConstantExpression<"source"> = (this.defaultValue.value as any); + const expr: ZoomConstantExpression<'source'> = (this.defaultValue.value as any); fn(expr._styleExpression.expression); } } diff --git a/src/style/light.ts b/src/style/light.ts index 0e14d6c6f6..ac9fd4a358 100644 --- a/src/style/light.ts +++ b/src/style/light.ts @@ -53,24 +53,24 @@ class LightPositionProperty implements Property<[number, number, number], LightP } type Props = { - "anchor": DataConstantProperty<"map" | "viewport">; - "position": LightPositionProperty; - "color": DataConstantProperty; - "intensity": DataConstantProperty; + 'anchor': DataConstantProperty<'map' | 'viewport'>; + 'position': LightPositionProperty; + 'color': DataConstantProperty; + 'intensity': DataConstantProperty; }; type PropsPossiblyEvaluated = { - "anchor": "map" | "viewport"; - "position": LightPosition; - "color": Color; - "intensity": number; + 'anchor': 'map' | 'viewport'; + 'position': LightPosition; + 'color': Color; + 'intensity': number; }; const properties: Properties = new Properties({ - "anchor": new DataConstantProperty(styleSpec.light.anchor as StylePropertySpecification), - "position": new LightPositionProperty(), - "color": new DataConstantProperty(styleSpec.light.color as StylePropertySpecification), - "intensity": new DataConstantProperty(styleSpec.light.intensity as StylePropertySpecification), + 'anchor': new DataConstantProperty(styleSpec.light.anchor as StylePropertySpecification), + 'position': new LightPositionProperty(), + 'color': new DataConstantProperty(styleSpec.light.color as StylePropertySpecification), + 'intensity': new DataConstantProperty(styleSpec.light.intensity as StylePropertySpecification), }); const TRANSITION_SUFFIX = '-transition'; diff --git a/src/style/properties.ts b/src/style/properties.ts index 12bba75f0b..6707bbc67a 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -409,7 +409,7 @@ export class Layout { * @private */ type PossiblyEvaluatedValue = { - kind: "constant"; + kind: 'constant'; value: T; } | SourceExpression | CompositeExpression; diff --git a/src/style/query_utils.ts b/src/style/query_utils.ts index 8b031f4af3..5dc1957082 100644 --- a/src/style/query_utils.ts +++ b/src/style/query_utils.ts @@ -1,6 +1,6 @@ import Point from '../symbol/point'; -import type {PossiblyEvaluatedPropertyValue} from "./properties"; +import type {PossiblyEvaluatedPropertyValue} from './properties'; import type StyleLayer from '../style/style_layer'; import type CircleBucket from '../data/bucket/circle_bucket'; import type LineBucket from '../data/bucket/line_bucket'; @@ -24,7 +24,7 @@ export function translateDistance(translate: [number, number]) { export function translate(queryGeometry: Array, translate: [number, number], - translateAnchor: "viewport" | "map", + translateAnchor: 'viewport' | 'map', bearing: number, pixelsToTileUnits: number) { if (!translate[0] && !translate[1]) { @@ -32,7 +32,7 @@ export function translate(queryGeometry: Array, } const pt = Point.convert(translate)._mult(pixelsToTileUnits); - if (translateAnchor === "viewport") { + if (translateAnchor === 'viewport') { pt._rotate(-bearing); } diff --git a/src/style/style.ts b/src/style/style.ts index d00e165f91..7ca2bd0a63 100644 --- a/src/style/style.ts +++ b/src/style/style.ts @@ -118,7 +118,7 @@ class Style extends Evented { _loaded: boolean; _rtlTextPluginCallback: (a: any) => any; _changed: boolean; - _updatedSources: {[_: string]: "clear" | "reload"}; + _updatedSources: {[_: string]: 'clear' | 'reload'}; _updatedLayers: {[_: string]: true}; _removedLayers: {[_: string]: StyleLayer}; _changedImages: {[_: string]: true}; @@ -931,15 +931,15 @@ class Style extends Evented { } const sourceType = sourceCache.getSource().type; if (sourceType === 'geojson' && sourceLayer) { - this.fire(new ErrorEvent(new Error(`GeoJSON sources cannot have a sourceLayer parameter.`))); + this.fire(new ErrorEvent(new Error('GeoJSON sources cannot have a sourceLayer parameter.'))); return; } if (sourceType === 'vector' && !sourceLayer) { - this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`))); + this.fire(new ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.'))); return; } if (target.id === undefined) { - this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`))); + this.fire(new ErrorEvent(new Error('The feature id parameter must be provided.'))); } sourceCache.setFeatureState(sourceLayer, target.id, state); @@ -963,12 +963,12 @@ class Style extends Evented { const sourceLayer = sourceType === 'vector' ? target.sourceLayer : undefined; if (sourceType === 'vector' && !sourceLayer) { - this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`))); + this.fire(new ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.'))); return; } if (key && (typeof target.id !== 'string' && typeof target.id !== 'number')) { - this.fire(new ErrorEvent(new Error(`A feature id is required to remove its specific state property.`))); + this.fire(new ErrorEvent(new Error('A feature id is required to remove its specific state property.'))); return; } @@ -991,11 +991,11 @@ class Style extends Evented { } const sourceType = sourceCache.getSource().type; if (sourceType === 'vector' && !sourceLayer) { - this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`))); + this.fire(new ErrorEvent(new Error('The sourceLayer parameter must be provided for vector source types.'))); return; } if (target.id === undefined) { - this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`))); + this.fire(new ErrorEvent(new Error('The feature id parameter must be provided.'))); } return sourceCache.getFeatureState(sourceLayer, target.id); diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index f44c17f2ec..c61bfba220 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -40,7 +40,7 @@ class StyleLayer extends Evented { minzoom: number | undefined | null; maxzoom: number | undefined | null; filter: FilterSpecification | void; - visibility: "visible" | "none" | void; + visibility: 'visible' | 'none' | void; _crossfadeParameters: CrossfadeParameters; _unevaluatedLayout: Layout; @@ -160,7 +160,7 @@ class StyleLayer extends Evented { return false; } else { const transitionable = this._transitionablePaint._values[name]; - const isCrossFadedProperty = transitionable.property.specification["property-type"] === 'cross-faded-data-driven'; + const isCrossFadedProperty = transitionable.property.specification['property-type'] === 'cross-faded-data-driven'; const wasDataDriven = transitionable.value.isDataDriven(); const oldValue = transitionable.value; diff --git a/src/style/style_layer/custom_style_layer.ts b/src/style/style_layer/custom_style_layer.ts index 5286f8c7b5..64aafef0ba 100644 --- a/src/style/style_layer/custom_style_layer.ts +++ b/src/style/style_layer/custom_style_layer.ts @@ -146,8 +146,8 @@ type CustomRenderMethod = (gl: WebGLRenderingContext, matrix: mat4) => void; */ export type CustomLayerInterface = { id: string; - type: "custom"; - renderingMode: "2d" | "3d"; + type: 'custom'; + renderingMode: '2d' | '3d'; render: CustomRenderMethod; prerender: CustomRenderMethod | undefined | null; onAdd: ((map: Map, gl: WebGLRenderingContext) => void) | undefined | null; @@ -203,7 +203,7 @@ class CustomStyleLayer extends StyleLayer { hasTransition() { return false; } serialize() { - assert(false, "Custom layers cannot be serialized"); + assert(false, 'Custom layers cannot be serialized'); } onAdd = (map: Map) => { diff --git a/src/style/style_layer/line_style_layer.ts b/src/style/style_layer/line_style_layer.ts index 0b5099d291..2314595698 100644 --- a/src/style/style_layer/line_style_layer.ts +++ b/src/style/style_layer/line_style_layer.ts @@ -56,7 +56,7 @@ class LineStyleLayer extends StyleLayer { _handleSpecialPaintPropertyUpdate(name: string) { if (name === 'line-gradient') { - const expression: ZoomConstantExpression<"source"> = (this._transitionablePaint._values['line-gradient'].value.expression as any); + const expression: ZoomConstantExpression<'source'> = (this._transitionablePaint._values['line-gradient'].value.expression as any); this.stepInterpolant = expression._styleExpression.expression instanceof Step; this.gradientVersion = (this.gradientVersion + 1) % Number.MAX_SAFE_INTEGER; } diff --git a/src/style/style_layer/symbol_style_layer.ts b/src/style/style_layer/symbol_style_layer.ts index 7b6ecb115e..2dea5aa1c6 100644 --- a/src/style/style_layer/symbol_style_layer.ts +++ b/src/style/style_layer/symbol_style_layer.ts @@ -175,7 +175,7 @@ class SymbolStyleLayer extends StyleLayer { } }; - const expr: ZoomConstantExpression<"source"> = (textField.value as any); + const expr: ZoomConstantExpression<'source'> = (textField.value as any); if (expr._styleExpression) { checkExpression(expr._styleExpression.expression); } diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index 03ea6c0c19..cf64694b86 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -765,9 +765,9 @@ export class Placement { markUsedJustification(bucket: SymbolBucket, placedAnchor: TextAnchor, symbolInstance: SymbolInstance, orientation: number) { const justifications = { - "left": symbolInstance.leftJustifiedTextSymbolIndex, - "center": symbolInstance.centerJustifiedTextSymbolIndex, - "right": symbolInstance.rightJustifiedTextSymbolIndex + 'left': symbolInstance.leftJustifiedTextSymbolIndex, + 'center': symbolInstance.centerJustifiedTextSymbolIndex, + 'right': symbolInstance.rightJustifiedTextSymbolIndex }; let autoIndex; diff --git a/src/symbol/shaping.ts b/src/symbol/shaping.ts index fa683e604d..f404704841 100644 --- a/src/symbol/shaping.ts +++ b/src/symbol/shaping.ts @@ -23,9 +23,9 @@ enum WritingMode { } export class WriteModeMap { - "horizontal": WritingMode.horizontal; - "vertical": WritingMode.vertical; - "horizontalOnly": WritingMode.horizontalOnly; + 'horizontal': WritingMode.horizontal; + 'vertical': WritingMode.vertical; + 'horizontalOnly': WritingMode.horizontalOnly; } const SHAPING_DEFAULT_OFFSET = -17; @@ -72,8 +72,8 @@ function isEmpty(positionedLines: Array) { return true; } -export type SymbolAnchor = "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; -export type TextJustify = "left" | "center" | "right"; +export type SymbolAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; +export type TextJustify = 'left' | 'center' | 'right'; // Max number of images in label is 6401 U+E000–U+F8FF that covers // Basic Multilingual Plane Unicode Private Use Area (PUA). @@ -89,7 +89,7 @@ class SectionOptions { constructor() { this.scale = 1.0; - this.fontStack = ""; + this.fontStack = ''; this.imageName = null; } @@ -115,7 +115,7 @@ class TaggedString { imageSectionID: number | null; constructor() { - this.text = ""; + this.text = ''; this.sectionIndex = []; this.sections = []; this.imageSectionID = null; @@ -199,7 +199,7 @@ class TaggedString { addImageSection(section: FormattedSection) { const imageName = section.image ? section.image.name : ''; if (imageName.length === 0) { - warnOnce(`Can't add FormattedSection with an empty image.`); + warnOnce('Can\'t add FormattedSection with an empty image.'); return; } @@ -520,7 +520,7 @@ function determineLineBreaks( const potentialLineBreaks = []; const targetWidth = determineAverageLineWidth(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize); - const hasServerSuggestedBreakpoints = logicalInput.text.indexOf("\u200b") >= 0; + const hasServerSuggestedBreakpoints = logicalInput.text.indexOf('\u200b') >= 0; let currentX = 0; diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index 1f698291db..e9bc7b15d3 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -53,7 +53,7 @@ type Sizes = { compositeIconSizes: [PossiblyEvaluatedPropertyValue, PossiblyEvaluatedPropertyValue]; // (5) }; -export type TextAnchor = "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; +export type TextAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; // The radial offset is to the edge of the text box // In the horizontal direction, the edge of the text box is where glyphs start @@ -233,7 +233,7 @@ export function performSymbolLayout( } let textJustify = textAlongLine ? - "center" : + 'center' : layout.get('text-justify').evaluate(feature, {}, canonical); const symbolPlacement = layout.get('symbol-placement'); @@ -253,7 +253,7 @@ export function performSymbolLayout( // If this layer uses text-variable-anchor, generate shapings for all justification possibilities. if (!textAlongLine && variableTextAnchor) { - const justifications = textJustify === "auto" ? + const justifications = textJustify === 'auto' ? variableTextAnchor.map(a => getAnchorJustification(a)) : [textJustify]; @@ -279,7 +279,7 @@ export function performSymbolLayout( addVerticalShapingForPointLabelIfNeeded(); } else { - if (textJustify === "auto") { + if (textJustify === 'auto') { textJustify = getAnchorJustification(textAnchor); } @@ -494,7 +494,7 @@ function addTextVertices(bucket: SymbolBucket, lineLength: number; }, writingMode: number, - placementTypes: Array<"vertical" | "center" | "left" | "right">, + placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>, placedTextSymbolIndices: {[_: string]: number}, placedIconIndex: number, sizes: Sizes, @@ -754,7 +754,7 @@ function addSymbol(bucket: SymbolBucket, collisionCircleDiameter *= layoutTextSize / ONE_EM; if (bucket.glyphOffsetArray.length >= SymbolBucket.MAX_GLYPHS) warnOnce( - "Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907" + 'Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907' ); if (feature.sortKey !== undefined) { diff --git a/src/symbol/symbol_size.ts b/src/symbol/symbol_size.ts index bbf81f3a89..416909d6b7 100644 --- a/src/symbol/symbol_size.ts +++ b/src/symbol/symbol_size.ts @@ -11,19 +11,19 @@ const SIZE_PACK_FACTOR = 128; export {getSizeData, evaluateSizeForFeature, evaluateSizeForZoom, SIZE_PACK_FACTOR}; export type SizeData = { - kind: "constant"; + kind: 'constant'; layoutSize: number; } | { - kind: "source"; + kind: 'source'; } | { - kind: "camera"; + kind: 'camera'; minZoom: number; maxZoom: number; minSize: number; maxSize: number; interpolationType: InterpolationType | undefined | null; } | { - kind: "composite"; + kind: 'composite'; minZoom: number; maxZoom: number; interpolationType: InterpolationType | undefined | null; diff --git a/src/types/non-typed-modules.d.ts b/src/types/non-typed-modules.d.ts index 4c6bc6a1ab..55963c0295 100644 --- a/src/types/non-typed-modules.d.ts +++ b/src/types/non-typed-modules.d.ts @@ -1,6 +1,6 @@ import type Pbf from 'pbf'; -declare module "@mapbox/mapbox-gl-supported" { +declare module '@mapbox/mapbox-gl-supported' { type isSupported = { webGLContextAttributes: WebGLContextAttributes; ( @@ -14,7 +14,7 @@ declare module "@mapbox/mapbox-gl-supported" { export = __exports } -declare module "@mapbox/unitbezier" { +declare module '@mapbox/unitbezier' { class UnitBezier { constructor(p1x: number, p1y: number, p2x: number, p2y: number); sampleCurveX(t: number): number; @@ -27,7 +27,7 @@ declare module "@mapbox/unitbezier" { let __exports: typeof UnitBezier; export = __exports } -declare module "potpack" { +declare module 'potpack' { type Bin = { x: number; y: number; @@ -45,7 +45,7 @@ declare module "potpack" { export = __exports } -declare module "sinon" { +declare module 'sinon' { type SpyCall = { args: Array; }; @@ -104,14 +104,14 @@ declare global { } } -declare module "@mapbox/vector-tile" { - import "@mapbox/vector-tile"; +declare module '@mapbox/vector-tile' { + import '@mapbox/vector-tile'; class VectorTileImpl { constructor(pbf: Pbf); } class VectorTileFeatureImpl { - static types: ["Unknown", "Point", "LineString", "Polygon"]; + static types: ['Unknown', 'Point', 'LineString', 'Polygon']; toGeoJSON(x: number, y: number, z: number): GeoJSON.Feature; } diff --git a/src/types/tilejson.ts b/src/types/tilejson.ts index 4867495974..e65a213f1f 100644 --- a/src/types/tilejson.ts +++ b/src/types/tilejson.ts @@ -1,5 +1,5 @@ export type TileJSON = { - tilejson: "2.2.0" | "2.1.0" | "2.0.1" | "2.0.0" | "1.0.0"; + tilejson: '2.2.0' | '2.1.0' | '2.0.1' | '2.0.0' | '1.0.0'; name?: string; description?: string; version?: string; diff --git a/src/ui/anchor.ts b/src/ui/anchor.ts index 7e6ba6f8d6..613d468b72 100644 --- a/src/ui/anchor.ts +++ b/src/ui/anchor.ts @@ -1,4 +1,4 @@ -export type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"; +export type Anchor = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; export const anchorTranslate: { [_ in Anchor]: string; diff --git a/src/ui/control/attribution_control.ts b/src/ui/control/attribution_control.ts index bd3b4fa0a9..98fd7c4cbe 100644 --- a/src/ui/control/attribution_control.ts +++ b/src/ui/control/attribution_control.ts @@ -126,7 +126,7 @@ class AttributionControl implements IControl { acc += `${next.key}=${next.value}${i < params.length - 1 ? '&' : ''}`; } return acc; - }, `?`); + }, '?'); editLink.href = `${config.FEEDBACK_URL}/${paramString}${this._map._hash ? this._map._hash.getHashString(true) : ''}`; editLink.rel = 'noopener nofollow'; this._setElementTitle(editLink, 'MapFeedback'); diff --git a/src/ui/control/control.d.ts b/src/ui/control/control.d.ts index b7024ca1a1..ba64b15a09 100644 --- a/src/ui/control/control.d.ts +++ b/src/ui/control/control.d.ts @@ -1,4 +1,4 @@ -export type ControlPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right"; +export type ControlPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; /* eslint-disable no-use-before-define */ export type IControl = { diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index c96ab233d0..9ed97fb512 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -56,7 +56,7 @@ class FullscreenControl implements IControl { onAdd(map: Map) { this._map = map; if (!this._container) this._container = this._map.getContainer(); - this._controlContainer = DOM.create('div', `maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group`); + this._controlContainer = DOM.create('div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group'); if (this._checkFullscreenSupport()) { this._setupUI(); } else { @@ -82,8 +82,8 @@ class FullscreenControl implements IControl { } _setupUI() { - const button = this._fullscreenButton = DOM.create('button', ((`maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen`)), this._controlContainer) as HTMLButtonElement; - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', 'true'); + const button = this._fullscreenButton = DOM.create('button', (('maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen')), this._controlContainer) as HTMLButtonElement; + DOM.create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', button).setAttribute('aria-hidden', 'true'); button.type = 'button'; this._updateTitle(); this._fullscreenButton.addEventListener('click', this._onClickFullscreen); @@ -92,7 +92,7 @@ class FullscreenControl implements IControl { _updateTitle() { const title = this._getTitle(); - this._fullscreenButton.setAttribute("aria-label", title); + this._fullscreenButton.setAttribute('aria-label', title); this._fullscreenButton.title = title; } @@ -113,10 +113,10 @@ class FullscreenControl implements IControl { if ((fullscreenElement === this._container) !== this._fullscreen) { this._fullscreen = !this._fullscreen; - this._fullscreenButton.classList.toggle(`maplibregl-ctrl-shrink`); - this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-shrink`); - this._fullscreenButton.classList.toggle(`maplibregl-ctrl-fullscreen`); - this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-fullscreen`); + this._fullscreenButton.classList.toggle('maplibregl-ctrl-shrink'); + this._fullscreenButton.classList.toggle('mapboxgl-ctrl-shrink'); + this._fullscreenButton.classList.toggle('maplibregl-ctrl-fullscreen'); + this._fullscreenButton.classList.toggle('mapboxgl-ctrl-fullscreen'); this._updateTitle(); } } diff --git a/src/ui/control/geolocate_control.ts b/src/ui/control/geolocate_control.ts index a39fa863a8..dd200581e9 100644 --- a/src/ui/control/geolocate_control.ts +++ b/src/ui/control/geolocate_control.ts @@ -101,7 +101,7 @@ class GeolocateControl extends Evented implements IControl { _geolocateButton: HTMLButtonElement; _geolocationWatchID: number; _timeoutId: ReturnType | undefined | null; - _watchState: "OFF" | "ACTIVE_LOCK" | "WAITING_ACTIVE" | "ACTIVE_ERROR" | "BACKGROUND" | "BACKGROUND_ERROR"; + _watchState: 'OFF' | 'ACTIVE_LOCK' | 'WAITING_ACTIVE' | 'ACTIVE_ERROR' | 'BACKGROUND' | 'BACKGROUND_ERROR'; _lastKnownPosition: any; _userLocationDotMarker: Marker; _accuracyCircleMarker: Marker; @@ -125,7 +125,7 @@ class GeolocateControl extends Evented implements IControl { onAdd(map: Map) { this._map = map; - this._container = DOM.create('div', `maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group`); + this._container = DOM.create('div', 'maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group'); checkGeolocationSupport(this._setupUI); return this._container; } @@ -372,8 +372,8 @@ class GeolocateControl extends Evented implements IControl { _setupUI(supported: boolean) { this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault()); - this._geolocateButton = DOM.create('button', `maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate`, this._container) as HTMLButtonElement; - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._geolocateButton).setAttribute('aria-hidden', "true"); + this._geolocateButton = DOM.create('button', 'maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate', this._container) as HTMLButtonElement; + DOM.create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._geolocateButton).setAttribute('aria-hidden', 'true'); this._geolocateButton.type = 'button'; if (supported === false) { diff --git a/src/ui/control/logo_control.ts b/src/ui/control/logo_control.ts index 72e22bb755..5872a27eed 100644 --- a/src/ui/control/logo_control.ts +++ b/src/ui/control/logo_control.ts @@ -25,11 +25,11 @@ class LogoControl implements IControl { this._map = map; this._container = DOM.create('div', 'maplibregl-ctrl mapboxgl-ctrl'); const anchor = DOM.create('a', 'maplibregl-ctrl-logo mapboxgl-ctrl-logo') as HTMLAnchorElement; - anchor.target = "_blank"; - anchor.rel = "noopener nofollow"; - anchor.href = "https://maplibre.org/"; - anchor.setAttribute("aria-label", this._map._getUIString('LogoControl.Title')); - anchor.setAttribute("rel", "noopener nofollow"); + anchor.target = '_blank'; + anchor.rel = 'noopener nofollow'; + anchor.href = 'https://maplibre.org/'; + anchor.setAttribute('aria-label', this._map._getUIString('LogoControl.Title')); + anchor.setAttribute('rel', 'noopener nofollow'); this._container.appendChild(anchor); this._container.style.display = 'none'; diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index 6b50825b9f..cafc295d3f 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -55,9 +55,9 @@ class NavigationControl implements IControl { '_updateZoomButtons' ], this); this._zoomInButton = this._createButton('maplibregl-ctrl-zoom-in mapboxgl-ctrl-zoom-in', (e) => this._map.zoomIn({}, {originalEvent: e})); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomInButton).setAttribute('aria-hidden', 'true'); + DOM.create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._zoomInButton).setAttribute('aria-hidden', 'true'); this._zoomOutButton = this._createButton('maplibregl-ctrl-zoom-out mapboxgl-ctrl-zoom-out', (e) => this._map.zoomOut({}, {originalEvent: e})); - DOM.create('span', `maplibregl-ctrl-icon mapboxgl-ctrl-icon`, this._zoomOutButton).setAttribute('aria-hidden', 'true'); + DOM.create('span', 'maplibregl-ctrl-icon mapboxgl-ctrl-icon', this._zoomOutButton).setAttribute('aria-hidden', 'true'); } if (this.options.showCompass) { bindAll([ diff --git a/src/ui/control/scale_control.ts b/src/ui/control/scale_control.ts index fdb87afb75..4cdd7474c8 100644 --- a/src/ui/control/scale_control.ts +++ b/src/ui/control/scale_control.ts @@ -4,7 +4,7 @@ import {extend, bindAll} from '../../util/util'; import type Map from '../map'; import type {ControlPosition, IControl} from './control'; -type Unit = "imperial" | "metric" | "nautical"; +type Unit = 'imperial' | 'metric' | 'nautical'; type Options = { maxWidth?: number; diff --git a/src/ui/events.ts b/src/ui/events.ts index cf7c00eaaa..f7faa09acc 100644 --- a/src/ui/events.ts +++ b/src/ui/events.ts @@ -32,7 +32,7 @@ export class MapMouseEvent extends Event { * {@link Map.event:mouseout}, * {@link Map.event:contextmenu}). */ - type: "mousedown" | "mouseup" | "click" | "dblclick" | "mousemove" | "mouseover" | "mouseenter" | "mouseleave" | "mouseout" | "contextmenu"; + type: 'mousedown' | 'mouseup' | 'click' | 'dblclick' | 'mousemove' | 'mouseover' | 'mouseenter' | 'mouseleave' | 'mouseout' | 'contextmenu'; /** * The `Map` object that fired the event. @@ -99,7 +99,7 @@ export class MapTouchEvent extends Event { /** * The event type. */ - type: "touchstart" | "touchend" | "touchcancel"; + type: 'touchstart' | 'touchend' | 'touchcancel'; /** * The `Map` object that fired the event. @@ -161,7 +161,7 @@ export class MapTouchEvent extends Event { * @private */ constructor(type: string, map: Map, originalEvent: TouchEvent) { - const touches = type === "touchend" ? originalEvent.changedTouches : originalEvent.touches; + const touches = type === 'touchend' ? originalEvent.changedTouches : originalEvent.touches; const points = DOM.touchPos(map.getCanvasContainer(), touches); const lngLats = points.map((t) => map.unproject(t)); const point = points.reduce((prev, curr, i, arr) => { @@ -181,7 +181,7 @@ export class MapWheelEvent extends Event { /** * The event type. */ - type: "wheel"; + type: 'wheel'; /** * The `Map` object that fired the event. @@ -230,7 +230,7 @@ export class MapWheelEvent extends Event { * @property {Map} target The `Map` instance that triggerred the event */ export type MapBoxZoomEvent = { - type: "boxzoomstart" | "boxzoomend" | "boxzoomcancel"; + type: 'boxzoomstart' | 'boxzoomend' | 'boxzoomcancel'; target: Map; originalEvent: MouseEvent; }; @@ -269,7 +269,7 @@ export type MapDataEvent = { }; export type MapContextEvent = { - type: "webglcontextlost" | "webglcontextrestored"; + type: 'webglcontextlost' | 'webglcontextrestored'; originalEvent: WebGLContextEvent; }; @@ -300,7 +300,7 @@ export type MapEvent = /** * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) */ -"mousedown" +'mousedown' /** * Fired when a pointing device (usually a mouse) is released within the map. @@ -328,7 +328,7 @@ export type MapEvent = /** * console.log('A mouseup event has occurred on a visible portion of the poi-label layer.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ | "mouseup" + */ | 'mouseup' /** * Fired when a pointing device (usually a mouse) is moved within the map. @@ -360,7 +360,7 @@ export type MapEvent = /** * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/mouse-position/) * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-hover/) - */ | "mouseover" + */ | 'mouseover' /** * Fired when a pointing device (usually a mouse) is moved while the cursor is inside the map. @@ -391,7 +391,7 @@ export type MapEvent = /** * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/mouse-position/) * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on over](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-hover/) - */ | "mousemove" + */ | 'mousemove' /** * Fired when a pointing device (usually a mouse) is pressed and released at the same point on the map. @@ -420,7 +420,7 @@ export type MapEvent = /** * }); * @see [Measure distances](https://maplibre.org/maplibre-gl-js-docs/example/measure/) * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js-docs/example/center-on-symbol/) - */ | "click" + */ | 'click' /** * Fired when a pointing device (usually a mouse) is pressed and released twice at the same point on @@ -448,7 +448,7 @@ export type MapEvent = /** * map.on('dblclick', 'poi-label', function(e) { * console.log('A dblclick event has occurred on a visible portion of the poi-label layer at ' + e.lngLat); * }); - */ | "dblclick" + */ | 'dblclick' /** * Fired when a pointing device (usually a mouse) enters a visible portion of a specified layer from @@ -470,7 +470,7 @@ export type MapEvent = /** * }); * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js-docs/example/center-on-symbol/) * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-click/) - */ | "mouseenter" + */ | 'mouseenter' /** * Fired when a pointing device (usually a mouse) leaves a visible portion of a specified layer, or leaves @@ -494,7 +494,7 @@ export type MapEvent = /** * }); * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js-docs/example/hover-styles/) * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js-docs/example/popup-on-click/) - */ | "mouseleave" + */ | 'mouseleave' /** * Fired when a point device (usually a mouse) leaves the map's canvas. @@ -512,7 +512,7 @@ export type MapEvent = /** * map.on('mouseout', function() { * console.log('A mouseout event occurred.'); * }); - */ | "mouseout" + */ | 'mouseout' /** * Fired when the right button of the mouse is clicked or the context menu key is pressed within the map. @@ -530,7 +530,7 @@ export type MapEvent = /** * map.on('contextmenu', function() { * console.log('A contextmenu event occurred.'); * }); - */ | "contextmenu" + */ | 'contextmenu' /** * Fired when a [`wheel`](https://developer.mozilla.org/en-US/docs/Web/Events/wheel) event occurs within the map. @@ -547,7 +547,7 @@ export type MapEvent = /** * map.on('wheel', function() { * console.log('A wheel event occurred.'); * }); - */ | "wheel" + */ | 'wheel' /** * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the map. @@ -564,7 +564,7 @@ export type MapEvent = /** * console.log('A touchstart event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ | "touchstart" + */ | 'touchstart' /** * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the map. @@ -582,7 +582,7 @@ export type MapEvent = /** * console.log('A touchstart event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ | "touchend" + */ | 'touchend' /** * Fired when a [`touchmove`](https://developer.mozilla.org/en-US/docs/Web/Events/touchmove) event occurs within the map. @@ -600,7 +600,7 @@ export type MapEvent = /** * console.log('A touchmove event occurred.'); * }); * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-point/) - */ | "touchmove" + */ | 'touchmove' /** * Fired when a [`touchcancel`](https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel) event occurs within the map. @@ -617,7 +617,7 @@ export type MapEvent = /** * map.on('touchcancel', function() { * console.log('A touchcancel event occurred.'); * }); - */ | "touchcancel" + */ | 'touchcancel' /** * Fired just before the map begins a transition from one @@ -636,7 +636,7 @@ export type MapEvent = /** * map.on('movestart', function() { * console.log('A movestart` event occurred.'); * }); - */ | "movestart" + */ | 'movestart' /** * Fired repeatedly during an animated transition from one view to @@ -655,7 +655,7 @@ export type MapEvent = /** * console.log('A move event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ | "move" + */ | 'move' /** * Fired just after the map completes a transition from one @@ -674,7 +674,7 @@ export type MapEvent = /** * console.log('A moveend event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ | "moveend" + */ | 'moveend' /** * Fired when a "drag to pan" interaction starts. See {@link DragPanHandler}. @@ -691,7 +691,7 @@ export type MapEvent = /** * map.on('dragstart', function() { * console.log('A dragstart event occurred.'); * }); - */ | "dragstart" + */ | 'dragstart' /** * Fired repeatedly during a "drag to pan" interaction. See {@link DragPanHandler}. @@ -708,7 +708,7 @@ export type MapEvent = /** * map.on('drag', function() { * console.log('A drag event occurred.'); * }); - */ | "drag" + */ | 'drag' /** * Fired when a "drag to pan" interaction ends. See {@link DragPanHandler}. @@ -726,7 +726,7 @@ export type MapEvent = /** * console.log('A dragend event occurred.'); * }); * @see [Create a draggable marker](https://maplibre.org/maplibre-gl-js-docs/example/drag-a-marker/) - */ | "dragend" + */ | 'dragend' /** * Fired just before the map begins a transition from one zoom level to another, @@ -744,7 +744,7 @@ export type MapEvent = /** * map.on('zoomstart', function() { * console.log('A zoomstart event occurred.'); * }); - */ | "zoomstart" + */ | 'zoomstart' /** * Fired repeatedly during an animated transition from one zoom level to another, @@ -762,7 +762,7 @@ export type MapEvent = /** * map.on('zoom', function() { * console.log('A zoom event occurred.'); * }); - */ | "zoom" + */ | 'zoom' /** * Fired just after the map completes a transition from one zoom level to another, @@ -780,7 +780,7 @@ export type MapEvent = /** * map.on('zoomend', function() { * console.log('A zoomend event occurred.'); * }); - */ | "zoomend" + */ | 'zoomend' /** * Fired when a "drag to rotate" interaction starts. See {@link DragRotateHandler}. @@ -797,7 +797,7 @@ export type MapEvent = /** * map.on('rotatestart', function() { * console.log('A rotatestart event occurred.'); * }); - */ | "rotatestart" + */ | 'rotatestart' /** * Fired repeatedly during a "drag to rotate" interaction. See {@link DragRotateHandler}. @@ -814,7 +814,7 @@ export type MapEvent = /** * map.on('rotate', function() { * console.log('A rotate event occurred.'); * }); - */ | "rotate" + */ | 'rotate' /** * Fired when a "drag to rotate" interaction ends. See {@link DragRotateHandler}. @@ -831,7 +831,7 @@ export type MapEvent = /** * map.on('rotateend', function() { * console.log('A rotateend event occurred.'); * }); - */ | "rotateend" + */ | 'rotateend' /** * Fired whenever the map's pitch (tilt) begins a change as @@ -849,7 +849,7 @@ export type MapEvent = /** * map.on('pitchstart', function() { * console.log('A pitchstart event occurred.'); * }); - */ | "pitchstart" + */ | 'pitchstart' /** * Fired repeatedly during the map's pitch (tilt) animation between @@ -868,7 +868,7 @@ export type MapEvent = /** * map.on('pitch', function() { * console.log('A pitch event occurred.'); * }); - */ | "pitch" + */ | 'pitch' /** * Fired immediately after the map's pitch (tilt) finishes changing as @@ -886,7 +886,7 @@ export type MapEvent = /** * map.on('pitchend', function() { * console.log('A pitchend event occurred.'); * }); - */ | "pitchend" + */ | 'pitchend' /** * Fired when a "box zoom" interaction starts. See {@link BoxZoomHandler}. @@ -903,7 +903,7 @@ export type MapEvent = /** * map.on('boxzoomstart', function() { * console.log('A boxzoomstart event occurred.'); * }); - */ | "boxzoomstart" + */ | 'boxzoomstart' /** * Fired when a "box zoom" interaction ends. See {@link BoxZoomHandler}. @@ -921,7 +921,7 @@ export type MapEvent = /** * map.on('boxzoomend', function() { * console.log('A boxzoomend event occurred.'); * }); - */ | "boxzoomend" + */ | 'boxzoomend' /** * Fired when the user cancels a "box zoom" interaction, or when the bounding box does not meet the minimum size threshold. @@ -939,7 +939,7 @@ export type MapEvent = /** * map.on('boxzoomcancel', function() { * console.log('A boxzoomcancel event occurred.'); * }); - */ | "boxzoomcancel" + */ | 'boxzoomcancel' /** * Fired immediately after the map has been resized. @@ -955,7 +955,7 @@ export type MapEvent = /** * map.on('resize', function() { * console.log('A resize event occurred.'); * }); - */ | "resize" + */ | 'resize' /** * Fired when the WebGL context is lost. @@ -971,7 +971,7 @@ export type MapEvent = /** * map.on('webglcontextlost', function() { * console.log('A webglcontextlost event occurred.'); * }); - */ | "webglcontextlost" + */ | 'webglcontextlost' /** * Fired when the WebGL context is restored. @@ -987,7 +987,7 @@ export type MapEvent = /** * map.on('webglcontextrestored', function() { * console.log('A webglcontextrestored event occurred.'); * }); - */ | "webglcontextrestored" + */ | 'webglcontextrestored' /** * Fired immediately after all necessary resources have been downloaded @@ -1008,7 +1008,7 @@ export type MapEvent = /** * @see [Draw GeoJSON points](https://maplibre.org/maplibre-gl-js-docs/example/geojson-markers/) * @see [Add live realtime data](https://maplibre.org/maplibre-gl-js-docs/example/live-geojson/) * @see [Animate a point](https://maplibre.org/maplibre-gl-js-docs/example/animate-point-along-line/) - */ | "load" + */ | 'load' /** * Fired whenever the map is drawn to the screen, as the result of @@ -1029,7 +1029,7 @@ export type MapEvent = /** * map.on('render', function() { * console.log('A render event occurred.'); * }); - */ | "render" + */ | 'render' /** * Fired after the last frame rendered before the map enters an @@ -1050,7 +1050,7 @@ export type MapEvent = /** * map.on('idle', function() { * console.log('A idle event occurred.'); * }); - */ | "idle" + */ | 'idle' /** * Fired immediately after the map has been removed with {@link Map.event:remove}. @@ -1066,7 +1066,7 @@ export type MapEvent = /** * map.on('remove', function() { * console.log('A remove event occurred.'); * }); - */ | "remove" + */ | 'remove' /** * Fired when an error occurs. This is GL JS's primary error reporting @@ -1086,7 +1086,7 @@ export type MapEvent = /** * map.on('error', function() { * console.log('A error event occurred.'); * }); - */ | "error" + */ | 'error' /** * Fired when any map data loads or changes. See {@link MapDataEvent} @@ -1105,7 +1105,7 @@ export type MapEvent = /** * console.log('A data event occurred.'); * }); * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js-docs/example/cluster-html/) - */ | "data" + */ | 'data' /** * Fired when the map's style loads or changes. See @@ -1123,7 +1123,7 @@ export type MapEvent = /** * map.on('styledata', function() { * console.log('A styledata event occurred.'); * }); - */ | "styledata" + */ | 'styledata' /** * Fired when one of the map's sources loads or changes, including if a tile belonging @@ -1141,7 +1141,7 @@ export type MapEvent = /** * map.on('sourcedata', function() { * console.log('A sourcedata event occurred.'); * }); - */ | "sourcedata" + */ | 'sourcedata' /** * Fired when any map data (style, source, tile, etc) begins loading or @@ -1161,7 +1161,7 @@ export type MapEvent = /** * map.on('dataloading', function() { * console.log('A dataloading event occurred.'); * }); - */ | "dataloading" + */ | 'dataloading' /** * Fired when the map's style begins loading or changing asyncronously. @@ -1181,7 +1181,7 @@ export type MapEvent = /** * map.on('styledataloading', function() { * console.log('A styledataloading event occurred.'); * }); - */ | "styledataloading" + */ | 'styledataloading' /** * Fired when one of the map's sources begins loading or changing asyncronously. @@ -1201,7 +1201,7 @@ export type MapEvent = /** * map.on('sourcedataloading', function() { * console.log('A sourcedataloading event occurred.'); * }); - */ | "sourcedataloading" + */ | 'sourcedataloading' /** * Fired when an icon or pattern needed by the style is missing. The missing image can @@ -1221,11 +1221,11 @@ export type MapEvent = /** * console.log('A styleimagemissing event occurred.'); * }); * @see [Generate and add a missing icon to the map](https://mapbox.com/mapbox-gl-js/example/add-image-missing-generated/) - */ | "styleimagemissing" + */ | 'styleimagemissing' /** * @event style.load * @memberof Map * @instance * @private - */ | "style.load"; + */ | 'style.load'; diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 86447e23af..0b4679a0e4 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -34,7 +34,7 @@ class ScrollZoomHandler { _aroundCenter: boolean; _around: LngLat; _aroundPoint: Point; - _type: "wheel" | "trackpad" | null; + _type: 'wheel' | 'trackpad' | null; _lastValue: number; _timeout: ReturnType | undefined | null; // used for delayed-handling of a single wheel movement _finishTimeout: ReturnType | undefined | null; // used to delay final '{move,zoom}end' events diff --git a/src/ui/handler/shim/touch_zoom_rotate.ts b/src/ui/handler/shim/touch_zoom_rotate.ts index ac9f34c658..7af8401597 100644 --- a/src/ui/handler/shim/touch_zoom_rotate.ts +++ b/src/ui/handler/shim/touch_zoom_rotate.ts @@ -41,7 +41,7 @@ export default class TouchZoomRotateHandler { * map.touchZoomRotate.enable({ around: 'center' }); */ enable(options?: { - around?: "center"; + around?: 'center'; } | null) { this._touchZoom.enable(options); if (!this._rotationDisabled) this._touchRotate.enable(options); diff --git a/src/ui/handler/touch_zoom_rotate.ts b/src/ui/handler/touch_zoom_rotate.ts index f3ab712499..36f40c250a 100644 --- a/src/ui/handler/touch_zoom_rotate.ts +++ b/src/ui/handler/touch_zoom_rotate.ts @@ -70,7 +70,7 @@ class TwoTouchHandler { } enable(options?: { - around?: "center"; + around?: 'center'; } | null) { this._enabled = true; this._aroundCenter = !!options && options.around === 'center'; diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 3770a5bd09..5e660ad53f 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -25,7 +25,7 @@ export type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent; const isMoving = p => p.zoom || p.drag || p.pitch || p.rotate; class RenderFrameEvent extends Event { - type: "renderFrame"; + type: 'renderFrame'; timeStamp: number; } diff --git a/src/ui/map.ts b/src/ui/map.ts index e3c0fad3d4..338f88a50f 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -370,11 +370,11 @@ class Map extends Camera { options = extend({}, defaultOptions, options); if (options.minZoom != null && options.maxZoom != null && options.minZoom > options.maxZoom) { - throw new Error(`maxZoom must be greater than or equal to minZoom`); + throw new Error('maxZoom must be greater than or equal to minZoom'); } if (options.minPitch != null && options.maxPitch != null && options.minPitch > options.maxPitch) { - throw new Error(`maxPitch must be greater than or equal to minPitch`); + throw new Error('maxPitch must be greater than or equal to minPitch'); } if (options.minPitch != null && options.minPitch < defaultMinPitch) { @@ -416,7 +416,7 @@ class Map extends Camera { } else if (options.container instanceof HTMLElement) { this._container = options.container; } else { - throw new Error(`Invalid type: 'container' must be a String or HTMLElement.`); + throw new Error('Invalid type: \'container\' must be a String or HTMLElement.'); } if (options.maxBounds) { @@ -434,7 +434,7 @@ class Map extends Camera { this._setupContainer(); this._setupPainter(); if (this.painter === undefined) { - throw new Error(`Failed to initialize WebGL.`); + throw new Error('Failed to initialize WebGL.'); } this.on('move', () => this._update(false)); @@ -728,7 +728,7 @@ class Map extends Camera { return this; - } else throw new Error(`maxZoom must be greater than the current minZoom`); + } else throw new Error('maxZoom must be greater than the current minZoom'); } /** @@ -800,7 +800,7 @@ class Map extends Camera { return this; - } else throw new Error(`maxPitch must be greater than the current minPitch`); + } else throw new Error('maxPitch must be greater than the current minPitch'); } /** diff --git a/src/ui/marker.ts b/src/ui/marker.ts index 64a92f8960..d4e91fb35d 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -8,7 +8,7 @@ import type {Anchor} from './anchor'; import {Event, Evented} from '../util/evented'; import type Map from './map'; import Popup, {Offset} from './popup'; -import type {LngLatLike} from "../geo/lng_lat"; +import type {LngLatLike} from '../geo/lng_lat'; import type {MapMouseEvent, MapTouchEvent} from './events'; type Options = { @@ -66,7 +66,7 @@ export default class Marker extends Evented { _draggable: boolean; _clickTolerance: number; _isDragging: boolean; - _state: "inactive" | "pending" | "active"; // used for handling drag events + _state: 'inactive' | 'pending' | 'active'; // used for handling drag events _positionDelta: Point | undefined | null; _pointerdownPos: Point | undefined | null; _rotation: number; @@ -436,7 +436,7 @@ export default class Marker extends Evented { } _update(e?: { - type: "move" | "moveend"; + type: 'move' | 'moveend'; }) { if (!this._map) return; @@ -446,24 +446,24 @@ export default class Marker extends Evented { this._pos = this._map.project(this._lngLat)._add(this._offset); - let rotation = ""; - if (this._rotationAlignment === "viewport" || this._rotationAlignment === "auto") { + let rotation = ''; + if (this._rotationAlignment === 'viewport' || this._rotationAlignment === 'auto') { rotation = `rotateZ(${this._rotation}deg)`; - } else if (this._rotationAlignment === "map") { + } else if (this._rotationAlignment === 'map') { rotation = `rotateZ(${this._rotation - this._map.getBearing()}deg)`; } - let pitch = ""; - if (this._pitchAlignment === "viewport" || this._pitchAlignment === "auto") { - pitch = "rotateX(0deg)"; - } else if (this._pitchAlignment === "map") { + let pitch = ''; + if (this._pitchAlignment === 'viewport' || this._pitchAlignment === 'auto') { + pitch = 'rotateX(0deg)'; + } else if (this._pitchAlignment === 'map') { pitch = `rotateX(${this._map.getPitch()}deg)`; } // because rounding the coordinates at every `move` event causes stuttered zooming // we only round them when _update is called with `moveend` or when its called with // no arguments (when the Marker is initialized or Marker#setLngLat is invoked). - if (!e || e.type === "moveend") { + if (!e || e.type === 'moveend') { this._pos = this._pos.round(); } diff --git a/src/ui/popup.ts b/src/ui/popup.ts index fa63318e7b..985b8ef76b 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -17,7 +17,7 @@ const defaultOptions = { closeOnClick: true, focusAfterOpen: true, className: '', - maxWidth: "240px" + maxWidth: '240px' }; export type Offset = number | PointLike | { @@ -36,14 +36,14 @@ export type PopupOptions = { }; const focusQuerySelector = [ - "a[href]", - "[tabindex]:not([tabindex='-1'])", - "[contenteditable]:not([contenteditable='false'])", - "button:not([disabled])", - "input:not([disabled])", - "select:not([disabled])", - "textarea:not([disabled])", -].join(", "); + 'a[href]', + '[tabindex]:not([tabindex=\'-1\'])', + '[contenteditable]:not([contenteditable=\'false\'])', + 'button:not([disabled])', + 'input:not([disabled])', + 'select:not([disabled])', + 'textarea:not([disabled])', +].join(', '); /** * A popup component. diff --git a/src/util/ajax.ts b/src/util/ajax.ts index 8753c11dcd..117a8f302d 100644 --- a/src/util/ajax.ts +++ b/src/util/ajax.ts @@ -68,10 +68,10 @@ if (typeof Object.freeze == 'function') { export type RequestParameters = { url: string; headers?: any; - method?: "GET" | "POST" | "PUT"; + method?: 'GET' | 'POST' | 'PUT'; body?: string; - type?: "string" | "json" | "arrayBuffer"; - credentials?: "same-origin" | "include"; + type?: 'string' | 'json' | 'arrayBuffer'; + credentials?: 'same-origin' | 'include'; collectResourceTiming?: boolean; }; diff --git a/src/util/debug.ts b/src/util/debug.ts index fc6f25985e..4788b07699 100644 --- a/src/util/debug.ts +++ b/src/util/debug.ts @@ -15,7 +15,7 @@ export const Debug = { fn(); }, - logToElement(message: string, overwrite: boolean = false, id: string = "log") { + logToElement(message: string, overwrite: boolean = false, id: string = 'log') { const el = window.document.getElementById(id); if (el) { if (overwrite) el.innerHTML = ''; diff --git a/src/util/dom.ts b/src/util/dom.ts index e51bd35a39..7ac2a2039f 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -80,13 +80,13 @@ let passiveSupported = false; try { // https://github.com/facebook/flow/issues/285 // $FlowFixMe - const options = Object.defineProperty({}, "passive", { + const options = Object.defineProperty({}, 'passive', { get() { // eslint-disable-line passiveSupported = true; } }); - window.addEventListener("test", options as any, options); - window.removeEventListener("test", options as any, options); + window.addEventListener('test', options as any, options); + window.removeEventListener('test', options as any, options); } catch (err) { passiveSupported = false; } diff --git a/src/util/mapbox.ts b/src/util/mapbox.ts index efb5167cdd..b716600271 100644 --- a/src/util/mapbox.ts +++ b/src/util/mapbox.ts @@ -126,7 +126,7 @@ export class RequestManager { } canonicalizeTileURL(url: string, removeAccessToken: boolean) { - const version = "/v4/"; + const version = '/v4/'; // matches any file extension specified by a dot and one or more alphanumeric characters const extensionRe = /\.[\w]+$/; @@ -138,7 +138,7 @@ export class RequestManager { return url; } // Reassemble the canonical URL from the parts we've parsed before. - let result = "mapbox://tiles/"; + let result = 'mapbox://tiles/'; result += urlObject.path.replace(version, ''); // Append the query string, minus the access token parameter. @@ -261,7 +261,7 @@ function parseAccessToken(accessToken?: string | null) { } } -type TelemetryEventType = "appUserTurnstile" | "map.load"; +type TelemetryEventType = 'appUserTurnstile' | 'map.load'; class TelemetryEvent { eventData: any; @@ -481,7 +481,7 @@ export class TurnstileEvent extends TelemetryEvent { return this.processRequests(); } - this.postEvent(nextUpdate, {"enabled.telemetry": false}, (err) => { + this.postEvent(nextUpdate, {'enabled.telemetry': false}, (err) => { if (!err) { this.eventData.lastSuccess = nextUpdate; this.eventData.tokenU = tokenU; diff --git a/src/util/util.ts b/src/util/util.ts index 88614573fd..c68cfb64da 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -190,7 +190,7 @@ export function uuid(): string { function b(a?): string { return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : - "10000000-1000-4000-8000-100000000000".replace(/[018]/g, b); + '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, b); } return b(); } @@ -320,7 +320,7 @@ const warnOnceHistory: {[key: string]: boolean} = {}; export function warnOnce(message: string): void { if (!warnOnceHistory[message]) { // console isn't defined in some WebWorkers, see #2558 - if (typeof console !== "undefined") console.warn(message); + if (typeof console !== 'undefined') console.warn(message); warnOnceHistory[message] = true; } } diff --git a/src/util/vectortile_to_geojson.ts b/src/util/vectortile_to_geojson.ts index 1c732b8582..45c63efd18 100644 --- a/src/util/vectortile_to_geojson.ts +++ b/src/util/vectortile_to_geojson.ts @@ -1,5 +1,5 @@ class Feature { - type: "Feature"; + type: 'Feature'; _geometry: GeoJSON.Geometry | undefined | null; properties: {}; id: number | string | void; diff --git a/src/util/web_worker.ts b/src/util/web_worker.ts index e566dac184..2a9b5fa749 100644 --- a/src/util/web_worker.ts +++ b/src/util/web_worker.ts @@ -17,8 +17,8 @@ type MessageListener = ( // The main thread interface. Provided by Worker in a browser environment, // and MessageBus below in a node environment. export interface WorkerInterface { - addEventListener(type: "message", listener: MessageListener): void; - removeEventListener(type: "message", listener: MessageListener): void; + addEventListener(type: 'message', listener: MessageListener): void; + removeEventListener(type: 'message', listener: MessageListener): void; postMessage(message: any): void; terminate(): void; } @@ -46,13 +46,13 @@ class MessageBus implements WorkerInterface, WorkerGlobalScopeInterface { this.postListeners = postListeners; } - addEventListener(event: "message", callback: MessageListener) { + addEventListener(event: 'message', callback: MessageListener) { if (event === 'message') { this.addListeners.push(callback); } } - removeEventListener(event: "message", callback: MessageListener) { + removeEventListener(event: 'message', callback: MessageListener) { const i = this.addListeners.indexOf(callback); if (i >= 0) { this.addListeners.splice(i, 1); diff --git a/src/util/web_worker_transfer.ts b/src/util/web_worker_transfer.ts index e78df486e7..9dd945aadd 100644 --- a/src/util/web_worker_transfer.ts +++ b/src/util/web_worker_transfer.ts @@ -174,7 +174,7 @@ export function serialize(input: unknown, transferables?: Array | const klass = (input.constructor as any); const name = klass._classRegistryKey; if (!name) { - throw new Error(`can't serialize object of unregistered class`); + throw new Error('can\'t serialize object of unregistered class'); } assert(registry[name]); From e0f70623c4de7572d4e907d55b75ab91102b6717 Mon Sep 17 00:00:00 2001 From: James Hamilton Date: Wed, 1 Sep 2021 15:18:57 +0900 Subject: [PATCH 138/142] move point.ts from symbol/ to util/ (#287) * move point.ts from symbol/ to util/ * Remove empty line --- src/data/array_types.ts | 2 +- src/data/bucket.ts | 2 +- src/data/bucket/circle_bucket.ts | 2 +- src/data/bucket/fill_bucket.ts | 2 +- src/data/bucket/fill_extrusion_bucket.ts | 2 +- src/data/bucket/line_bucket.ts | 2 +- src/data/bucket/symbol_bucket.ts | 2 +- src/data/evaluation_feature.ts | 2 +- src/data/feature_index.ts | 2 +- src/data/load_geometry.ts | 2 +- src/geo/edge_insets.ts | 2 +- src/geo/transform.ts | 2 +- src/index.ts | 2 +- src/render/draw_symbol.ts | 2 +- src/source/geojson_wrapper.ts | 2 +- src/source/query_features.ts | 2 +- src/source/source_cache.ts | 2 +- src/source/tile.ts | 2 +- src/source/tile_id.ts | 2 +- src/style-spec/expression/index.ts | 2 +- src/style/query_utils.ts | 2 +- src/style/style_layer.ts | 2 +- src/style/style_layer/circle_style_layer.ts | 2 +- src/style/style_layer/fill_extrusion_style_layer.ts | 2 +- src/style/style_layer/fill_style_layer.ts | 2 +- src/style/style_layer/line_style_layer.ts | 2 +- src/symbol/anchor.ts | 2 +- src/symbol/check_max_angle.ts | 2 +- src/symbol/clip_line.ts | 2 +- src/symbol/collision_feature.ts | 2 +- src/symbol/collision_index.ts | 2 +- src/symbol/get_anchors.ts | 2 +- src/symbol/path_interpolator.ts | 2 +- src/symbol/placement.ts | 2 +- src/symbol/projection.ts | 2 +- src/symbol/quads.ts | 2 +- src/symbol/symbol_layout.ts | 2 +- src/ui/camera.ts | 2 +- src/ui/control/navigation_control.ts | 2 +- src/ui/events.ts | 2 +- src/ui/handler/box_zoom.ts | 2 +- src/ui/handler/click_zoom.ts | 2 +- src/ui/handler/handler_util.ts | 2 +- src/ui/handler/map_event.ts | 2 +- src/ui/handler/mouse.ts | 2 +- src/ui/handler/scroll_zoom.ts | 2 +- src/ui/handler/tap_drag_zoom.ts | 2 +- src/ui/handler/tap_recognizer.ts | 2 +- src/ui/handler/tap_zoom.ts | 2 +- src/ui/handler/touch_pan.ts | 2 +- src/ui/handler/touch_zoom_rotate.ts | 2 +- src/ui/handler_inertia.ts | 2 +- src/ui/handler_manager.ts | 2 +- src/ui/map.ts | 2 +- src/ui/marker.ts | 2 +- src/ui/popup.ts | 2 +- src/util/classify_rings.ts | 2 +- src/util/dom.ts | 2 +- src/util/find_pole_of_inaccessibility.ts | 2 +- src/util/intersection_tests.ts | 2 +- src/{symbol => util}/point.ts | 2 +- src/util/smart_wrap.ts | 2 +- src/util/util.ts | 2 +- test/unit/data/fill_bucket.test.js | 2 +- test/unit/data/line_bucket.test.js | 2 +- test/unit/geo/transform.test.js | 2 +- test/unit/source/source_cache.test.js | 2 +- test/unit/style-spec/feature_filter.test.js | 2 +- test/unit/style/style_layer/fill_extrusion_style_layer.test.js | 2 +- test/unit/symbol/check_max_angle.test.js | 2 +- test/unit/symbol/clip_line.test.js | 2 +- test/unit/symbol/collision_feature.test.js | 2 +- test/unit/symbol/get_anchors.test.js | 2 +- test/unit/symbol/mergelines.test.js | 2 +- test/unit/symbol/path_interpolator.test.js | 2 +- test/unit/ui/marker.test.js | 2 +- test/unit/ui/popup.test.js | 2 +- test/unit/util/find_pole_of_inaccessibility.test.js | 2 +- test/unit/util/util.test.js | 2 +- 79 files changed, 79 insertions(+), 79 deletions(-) rename src/{symbol => util}/point.ts (99%) diff --git a/src/data/array_types.ts b/src/data/array_types.ts index 74fb463854..efd856392e 100644 --- a/src/data/array_types.ts +++ b/src/data/array_types.ts @@ -2,7 +2,7 @@ import assert from 'assert'; import {Struct, StructArray} from '../util/struct_array'; import {register} from '../util/web_worker_transfer'; -import Point from '../symbol/point'; +import Point from '../util/point'; /** * Implementation of the StructArray layout: diff --git a/src/data/bucket.ts b/src/data/bucket.ts index aa89e26460..42dd27a901 100644 --- a/src/data/bucket.ts +++ b/src/data/bucket.ts @@ -6,7 +6,7 @@ import type Context from '../gl/context'; import type {FeatureStates} from '../source/source_state'; import type {ImagePosition} from '../render/image_atlas'; import type {CanonicalTileID} from '../source/tile_id'; -import Point from '../symbol/point'; +import Point from '../util/point'; export type BucketParameters = { index: number; diff --git a/src/data/bucket/circle_bucket.ts b/src/data/bucket/circle_bucket.ts index a8b2df15c7..5b0b717278 100644 --- a/src/data/bucket/circle_bucket.ts +++ b/src/data/bucket/circle_bucket.ts @@ -23,7 +23,7 @@ import type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer' import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_bucket.ts b/src/data/bucket/fill_bucket.ts index 2361861a8d..136b02d8a6 100644 --- a/src/data/bucket/fill_bucket.ts +++ b/src/data/bucket/fill_bucket.ts @@ -26,7 +26,7 @@ import type FillStyleLayer from '../../style/style_layer/fill_style_layer'; import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/fill_extrusion_bucket.ts b/src/data/bucket/fill_extrusion_bucket.ts index 75782afc8f..6ecf44400c 100644 --- a/src/data/bucket/fill_extrusion_bucket.ts +++ b/src/data/bucket/fill_extrusion_bucket.ts @@ -30,7 +30,7 @@ import type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion import type Context from '../../gl/context'; import type IndexBuffer from '../../gl/index_buffer'; import type VertexBuffer from '../../gl/vertex_buffer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {FeatureStates} from '../../source/source_state'; import type {ImagePosition} from '../../render/image_atlas'; diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index 22a7825f3e..8ee7202adc 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -23,7 +23,7 @@ import type { PopulateParameters } from '../bucket'; import type LineStyleLayer from '../../style/style_layer/line_style_layer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {Segment} from '../segment'; import {RGBAImage} from '../../util/image'; import type Context from '../../gl/context'; diff --git a/src/data/bucket/symbol_bucket.ts b/src/data/bucket/symbol_bucket.ts index 73b5574103..1e7cf3ac85 100644 --- a/src/data/bucket/symbol_bucket.ts +++ b/src/data/bucket/symbol_bucket.ts @@ -16,7 +16,7 @@ import {SymbolLayoutArray, SymbolLineVertexArray } from '../array_types'; -import Point from '../../symbol/point'; +import Point from '../../util/point'; import SegmentVector from '../segment'; import {ProgramConfigurationSet} from '../program_configuration'; import {TriangleIndexArray, LineIndexArray} from '../index_array_type'; diff --git a/src/data/evaluation_feature.ts b/src/data/evaluation_feature.ts index 52550238f8..1acfbceca7 100644 --- a/src/data/evaluation_feature.ts +++ b/src/data/evaluation_feature.ts @@ -1,5 +1,5 @@ import loadGeometry from './load_geometry'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; type EvaluationFeature = { readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon'; diff --git a/src/data/feature_index.ts b/src/data/feature_index.ts index 7214c47ac5..80bd4c8a5b 100644 --- a/src/data/feature_index.ts +++ b/src/data/feature_index.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import loadGeometry from './load_geometry'; import toEvaluationFeature from './evaluation_feature'; import EXTENT from './extent'; diff --git a/src/data/load_geometry.ts b/src/data/load_geometry.ts index 2dc14e456d..953472496a 100644 --- a/src/data/load_geometry.ts +++ b/src/data/load_geometry.ts @@ -2,7 +2,7 @@ import {warnOnce, clamp} from '../util/util'; import EXTENT from './extent'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; // These bounds define the minimum and maximum supported coordinate values. // While visible coordinates are within [0, EXTENT], tiles may theoretically diff --git a/src/geo/edge_insets.ts b/src/geo/edge_insets.ts index 2287455ba0..127416b84b 100644 --- a/src/geo/edge_insets.ts +++ b/src/geo/edge_insets.ts @@ -1,5 +1,5 @@ import {number} from '../style-spec/util/interpolate'; -import Point from '../symbol/point'; +import Point from '../util/point'; import {clamp} from '../util/util'; /** diff --git a/src/geo/transform.ts b/src/geo/transform.ts index f6ea65566c..425de2c4e5 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -1,7 +1,7 @@ import LngLat from './lng_lat'; import LngLatBounds from './lng_lat_bounds'; import MercatorCoordinate, {mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude} from './mercator_coordinate'; -import Point from '../symbol/point'; +import Point from '../util/point'; import {wrap, clamp} from '../util/util'; import {number as interpolate} from '../style-spec/util/interpolate'; import EXTENT from '../data/extent'; diff --git a/src/index.ts b/src/index.ts index 6ef2d6e56a..aa80303643 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,7 +12,7 @@ import Marker from './ui/marker'; import Style from './style/style'; import LngLat from './geo/lng_lat'; import LngLatBounds from './geo/lng_lat_bounds'; -import Point from './symbol/point'; +import Point from './util/point'; import MercatorCoordinate from './geo/mercator_coordinate'; import {Evented} from './util/evented'; import config from './util/config'; diff --git a/src/render/draw_symbol.ts b/src/render/draw_symbol.ts index 550db3d795..122e9ae35d 100644 --- a/src/render/draw_symbol.ts +++ b/src/render/draw_symbol.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import drawCollisionDebug from './draw_collision_debug'; import SegmentVector from '../data/segment'; diff --git a/src/source/geojson_wrapper.ts b/src/source/geojson_wrapper.ts index 280105f737..c943502dd1 100644 --- a/src/source/geojson_wrapper.ts +++ b/src/source/geojson_wrapper.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import mvt from '@mapbox/vector-tile'; const toGeoJSON = mvt.VectorTileFeature.prototype.toGeoJSON; diff --git a/src/source/query_features.ts b/src/source/query_features.ts index a5885e47df..1b025bf77c 100644 --- a/src/source/query_features.ts +++ b/src/source/query_features.ts @@ -4,7 +4,7 @@ import type CollisionIndex from '../symbol/collision_index'; import type Transform from '../geo/transform'; import type {RetainedQueryData} from '../symbol/placement'; import type {FilterSpecification} from '../style-spec/types'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; import assert from 'assert'; import {mat4} from 'gl-matrix'; diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 8532ee55b6..1649892d1b 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -7,7 +7,7 @@ import MercatorCoordinate from '../geo/mercator_coordinate'; import {keysDifference} from '../util/util'; import EXTENT from '../data/extent'; import Context from '../gl/context'; -import Point from '../symbol/point'; +import Point from '../util/point'; import browser from '../util/browser'; import {OverscaledTileID} from './tile_id'; import assert from 'assert'; diff --git a/src/source/tile.ts b/src/source/tile.ts index cf3a2c0ee6..ac3e0ae86d 100644 --- a/src/source/tile.ts +++ b/src/source/tile.ts @@ -30,7 +30,7 @@ import type Transform from '../geo/transform'; import type {LayerFeatureStates} from './source_state'; import type {Cancelable} from '../types/cancelable'; import type {FilterSpecification} from '../style-spec/types'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; import {mat4} from 'gl-matrix'; export type TileState = // Tile data is in the process of loading. diff --git a/src/source/tile_id.ts b/src/source/tile_id.ts index aa1ff1f19f..e3ec2c60f9 100644 --- a/src/source/tile_id.ts +++ b/src/source/tile_id.ts @@ -1,6 +1,6 @@ import {getTileBBox} from '@mapbox/whoots-js'; import EXTENT from '../data/extent'; -import Point from '../symbol/point'; +import Point from '../util/point'; import MercatorCoordinate from '../geo/mercator_coordinate'; import assert from 'assert'; diff --git a/src/style-spec/expression/index.ts b/src/style-spec/expression/index.ts index 1349e29b59..96a376fce4 100644 --- a/src/style-spec/expression/index.ts +++ b/src/style-spec/expression/index.ts @@ -23,7 +23,7 @@ import type {Result} from '../util/result'; import type {InterpolationType} from './definitions/interpolate'; import type {PropertyValueSpecification} from '../types'; import type {FormattedSection} from './types/formatted'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {CanonicalTileID} from '../../source/tile_id'; export type Feature = { diff --git a/src/style/query_utils.ts b/src/style/query_utils.ts index 5dc1957082..e01b4afbee 100644 --- a/src/style/query_utils.ts +++ b/src/style/query_utils.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import type {PossiblyEvaluatedPropertyValue} from './properties'; import type StyleLayer from '../style/style_layer'; diff --git a/src/style/style_layer.ts b/src/style/style_layer.ts index c61bfba220..3789bd905e 100644 --- a/src/style/style_layer.ts +++ b/src/style/style_layer.ts @@ -13,7 +13,7 @@ import {supportsPropertyExpression} from '../style-spec/util/properties'; import type {FeatureState} from '../style-spec/expression'; import type {Bucket} from '../data/bucket'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; import type {FeatureFilter} from '../style-spec/feature_filter'; import type {TransitionParameters, PropertyValue} from './properties'; import EvaluationParameters from './evaluation_parameters'; diff --git a/src/style/style_layer/circle_style_layer.ts b/src/style/style_layer/circle_style_layer.ts index e847da231c..84fd062e4e 100644 --- a/src/style/style_layer/circle_style_layer.ts +++ b/src/style/style_layer/circle_style_layer.ts @@ -6,7 +6,7 @@ import {getMaximumPaintValue, translateDistance, translate} from '../query_utils import properties, {LayoutPropsPossiblyEvaluated, PaintPropsPossiblyEvaluated} from './circle_style_layer_properties'; import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties'; import {mat4, vec4} from 'gl-matrix'; -import Point from '../../symbol/point'; +import Point from '../../util/point'; import type {FeatureState} from '../../style-spec/expression'; import type Transform from '../../geo/transform'; import type {Bucket, BucketParameters} from '../../data/bucket'; diff --git a/src/style/style_layer/fill_extrusion_style_layer.ts b/src/style/style_layer/fill_extrusion_style_layer.ts index 482cbe76ee..c1d65a8c4e 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.ts +++ b/src/style/style_layer/fill_extrusion_style_layer.ts @@ -6,7 +6,7 @@ import {translateDistance, translate} from '../query_utils'; import properties, {PaintPropsPossiblyEvaluated} from './fill_extrusion_style_layer_properties'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties'; import {mat4, vec4} from 'gl-matrix'; -import Point from '../../symbol/point'; +import Point from '../../util/point'; import type {FeatureState} from '../../style-spec/expression'; import type {BucketParameters} from '../../data/bucket'; import type {PaintProps} from './fill_extrusion_style_layer_properties'; diff --git a/src/style/style_layer/fill_style_layer.ts b/src/style/style_layer/fill_style_layer.ts index 5f565293c1..b7abc87392 100644 --- a/src/style/style_layer/fill_style_layer.ts +++ b/src/style/style_layer/fill_style_layer.ts @@ -8,7 +8,7 @@ import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../prope import type {FeatureState} from '../../style-spec/expression'; import type {BucketParameters} from '../../data/bucket'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type {LayoutProps, PaintProps} from './fill_style_layer_properties'; import type EvaluationParameters from '../evaluation_parameters'; import type Transform from '../../geo/transform'; diff --git a/src/style/style_layer/line_style_layer.ts b/src/style/style_layer/line_style_layer.ts index 2314595698..8b0c7a3cc2 100644 --- a/src/style/style_layer/line_style_layer.ts +++ b/src/style/style_layer/line_style_layer.ts @@ -1,4 +1,4 @@ -import Point from '../../symbol/point'; +import Point from '../../util/point'; import StyleLayer from '../style_layer'; import LineBucket from '../../data/bucket/line_bucket'; diff --git a/src/symbol/anchor.ts b/src/symbol/anchor.ts index cc3e5c03e3..c7a16a4048 100644 --- a/src/symbol/anchor.ts +++ b/src/symbol/anchor.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import {register} from '../util/web_worker_transfer'; diff --git a/src/symbol/check_max_angle.ts b/src/symbol/check_max_angle.ts index 8d3a72482a..d439d58669 100644 --- a/src/symbol/check_max_angle.ts +++ b/src/symbol/check_max_angle.ts @@ -1,6 +1,6 @@ export default checkMaxAngle; -import type Point from '../symbol/point'; +import type Point from '../util/point'; import type Anchor from './anchor'; /** diff --git a/src/symbol/clip_line.ts b/src/symbol/clip_line.ts index 3650127e22..cc1fe57c1b 100644 --- a/src/symbol/clip_line.ts +++ b/src/symbol/clip_line.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; export default clipLine; diff --git a/src/symbol/collision_feature.ts b/src/symbol/collision_feature.ts index 168b052d25..f28b77bb85 100644 --- a/src/symbol/collision_feature.ts +++ b/src/symbol/collision_feature.ts @@ -1,5 +1,5 @@ import type {CollisionBoxArray} from '../data/array_types'; -import Point from '../symbol/point'; +import Point from '../util/point'; import type Anchor from './anchor'; /** diff --git a/src/symbol/collision_index.ts b/src/symbol/collision_index.ts index 82a9406960..ad6c403c48 100644 --- a/src/symbol/collision_index.ts +++ b/src/symbol/collision_index.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import clipLine from './clip_line'; import PathInterpolator from './path_interpolator'; diff --git a/src/symbol/get_anchors.ts b/src/symbol/get_anchors.ts index d4a91efabd..9d38c38f44 100644 --- a/src/symbol/get_anchors.ts +++ b/src/symbol/get_anchors.ts @@ -3,7 +3,7 @@ import {number as interpolate} from '../style-spec/util/interpolate'; import Anchor from '../symbol/anchor'; import checkMaxAngle from './check_max_angle'; -import type Point from '../symbol/point'; +import type Point from '../util/point'; import type {Shaping, PositionedIcon} from './shaping'; export {getAnchors, getCenterAnchor}; diff --git a/src/symbol/path_interpolator.ts b/src/symbol/path_interpolator.ts index 3ce23ee9d5..66a0c5b587 100644 --- a/src/symbol/path_interpolator.ts +++ b/src/symbol/path_interpolator.ts @@ -1,5 +1,5 @@ import {clamp} from '../util/util'; -import Point from '../symbol/point'; +import Point from '../util/point'; import assert from 'assert'; class PathInterpolator { diff --git a/src/symbol/placement.ts b/src/symbol/placement.ts index cf64694b86..9ebec7dbec 100644 --- a/src/symbol/placement.ts +++ b/src/symbol/placement.ts @@ -7,7 +7,7 @@ import {getAnchorAlignment, WritingMode} from './shaping'; import {mat4} from 'gl-matrix'; import assert from 'assert'; import pixelsToTileUnits from '../source/pixels_to_tile_units'; -import Point from '../symbol/point'; +import Point from '../util/point'; import type Transform from '../geo/transform'; import type StyleLayer from '../style/style_layer'; diff --git a/src/symbol/projection.ts b/src/symbol/projection.ts index 376c85c9c1..a92464ae97 100644 --- a/src/symbol/projection.ts +++ b/src/symbol/projection.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import {mat4, vec4} from 'gl-matrix'; import * as symbolSize from './symbol_size'; diff --git a/src/symbol/quads.ts b/src/symbol/quads.ts index 05055653ab..24523244ec 100644 --- a/src/symbol/quads.ts +++ b/src/symbol/quads.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from '../util/point'; import {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf'; diff --git a/src/symbol/symbol_layout.ts b/src/symbol/symbol_layout.ts index e9bc7b15d3..e80ad53c82 100644 --- a/src/symbol/symbol_layout.ts +++ b/src/symbol/symbol_layout.ts @@ -28,7 +28,7 @@ import type {ImagePosition} from '../render/image_atlas'; import type {GlyphPosition} from '../render/glyph_atlas'; import type {PossiblyEvaluatedPropertyValue} from '../style/properties'; -import Point from './point'; +import Point from '../util/point'; import murmur3 from 'murmurhash-js'; // The symbol layout process needs `text-size` evaluated at up to five different zoom levels, and diff --git a/src/ui/camera.ts b/src/ui/camera.ts index 1ce0b21cac..515b4bd70f 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -3,7 +3,7 @@ import {number as interpolate} from '../style-spec/util/interpolate'; import browser from '../util/browser'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point, {PointLike} from '../symbol/point'; +import Point, {PointLike} from '../util/point'; import {Event, Evented} from '../util/evented'; import assert from 'assert'; import {Debug} from '../util/debug'; diff --git a/src/ui/control/navigation_control.ts b/src/ui/control/navigation_control.ts index cafc295d3f..5f99d418ab 100644 --- a/src/ui/control/navigation_control.ts +++ b/src/ui/control/navigation_control.ts @@ -1,4 +1,4 @@ -import Point from '../../symbol/point'; +import Point from '../../util/point'; import DOM from '../../util/dom'; import {extend, bindAll} from '../../util/util'; diff --git a/src/ui/events.ts b/src/ui/events.ts index f7faa09acc..d1781d564a 100644 --- a/src/ui/events.ts +++ b/src/ui/events.ts @@ -1,7 +1,7 @@ import {Event} from '../util/evented'; import DOM from '../util/dom'; -import Point from '../symbol/point'; +import Point from '../util/point'; import {extend} from '../util/util'; import type Map from './map'; diff --git a/src/ui/handler/box_zoom.ts b/src/ui/handler/box_zoom.ts index ae7481fe2d..bdf78554f5 100644 --- a/src/ui/handler/box_zoom.ts +++ b/src/ui/handler/box_zoom.ts @@ -3,7 +3,7 @@ import DOM from '../../util/dom'; import {Event} from '../../util/evented'; import type Map from '../map'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; /** * The `BoxZoomHandler` allows the user to zoom the map to fit within a bounding box. diff --git a/src/ui/handler/click_zoom.ts b/src/ui/handler/click_zoom.ts index f00d365283..563a23bba5 100644 --- a/src/ui/handler/click_zoom.ts +++ b/src/ui/handler/click_zoom.ts @@ -1,4 +1,4 @@ -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type Map from '../map'; export default class ClickZoomHandler { diff --git a/src/ui/handler/handler_util.ts b/src/ui/handler/handler_util.ts index cd07a476ff..cb23cbf67b 100644 --- a/src/ui/handler/handler_util.ts +++ b/src/ui/handler/handler_util.ts @@ -1,5 +1,5 @@ import assert from 'assert'; -import Point from '../../symbol/point'; +import Point from '../../util/point'; export function indexTouches(touches: Array, points: Array) { assert(touches.length === points.length); diff --git a/src/ui/handler/map_event.ts b/src/ui/handler/map_event.ts index c0ca9dc665..5faf1e3456 100644 --- a/src/ui/handler/map_event.ts +++ b/src/ui/handler/map_event.ts @@ -1,6 +1,6 @@ import {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events'; import type Map from '../map'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; export class MapEventHandler { _mousedownPos: Point; diff --git a/src/ui/handler/mouse.ts b/src/ui/handler/mouse.ts index c9bc9b435e..0562096fba 100644 --- a/src/ui/handler/mouse.ts +++ b/src/ui/handler/mouse.ts @@ -1,5 +1,5 @@ import DOM from '../../util/dom'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; const LEFT_BUTTON = 0; const RIGHT_BUTTON = 2; diff --git a/src/ui/handler/scroll_zoom.ts b/src/ui/handler/scroll_zoom.ts index 0b4679a0e4..37cdc93ffe 100644 --- a/src/ui/handler/scroll_zoom.ts +++ b/src/ui/handler/scroll_zoom.ts @@ -8,7 +8,7 @@ import LngLat from '../../geo/lng_lat'; import type Map from '../map'; import type HandlerManager from '../handler_manager'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; // deltaY value for mouse scroll wheel identification const wheelZoomDelta = 4.000244140625; diff --git a/src/ui/handler/tap_drag_zoom.ts b/src/ui/handler/tap_drag_zoom.ts index 7e47783f02..1367fa7242 100644 --- a/src/ui/handler/tap_drag_zoom.ts +++ b/src/ui/handler/tap_drag_zoom.ts @@ -1,5 +1,5 @@ import {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; export default class TapDragZoomHandler { diff --git a/src/ui/handler/tap_recognizer.ts b/src/ui/handler/tap_recognizer.ts index 131a5c40d7..1a5403e681 100644 --- a/src/ui/handler/tap_recognizer.ts +++ b/src/ui/handler/tap_recognizer.ts @@ -1,4 +1,4 @@ -import Point from '../../symbol/point'; +import Point from '../../util/point'; import {indexTouches} from './handler_util'; function getCentroid(points: Array) { diff --git a/src/ui/handler/tap_zoom.ts b/src/ui/handler/tap_zoom.ts index 80c015ab8d..ab56b3ead6 100644 --- a/src/ui/handler/tap_zoom.ts +++ b/src/ui/handler/tap_zoom.ts @@ -1,5 +1,5 @@ import {TapRecognizer} from './tap_recognizer'; -import type Point from '../../symbol/point'; +import type Point from '../../util/point'; import type Map from '../map'; export default class TapZoomHandler { diff --git a/src/ui/handler/touch_pan.ts b/src/ui/handler/touch_pan.ts index 6ce0ed8042..f6226d6666 100644 --- a/src/ui/handler/touch_pan.ts +++ b/src/ui/handler/touch_pan.ts @@ -1,4 +1,4 @@ -import Point from '../../symbol/point'; +import Point from '../../util/point'; import {indexTouches} from './handler_util'; export default class TouchPanHandler { diff --git a/src/ui/handler/touch_zoom_rotate.ts b/src/ui/handler/touch_zoom_rotate.ts index 36f40c250a..5d6b836625 100644 --- a/src/ui/handler/touch_zoom_rotate.ts +++ b/src/ui/handler/touch_zoom_rotate.ts @@ -1,4 +1,4 @@ -import Point from '../../symbol/point'; +import Point from '../../util/point'; import DOM from '../../util/dom'; class TwoTouchHandler { diff --git a/src/ui/handler_inertia.ts b/src/ui/handler_inertia.ts index 11aa077212..f64fccf3af 100644 --- a/src/ui/handler_inertia.ts +++ b/src/ui/handler_inertia.ts @@ -1,7 +1,7 @@ import browser from '../util/browser'; import type Map from './map'; import {bezier, clamp, extend} from '../util/util'; -import Point from '../symbol/point'; +import Point from '../util/point'; import type {DragPanOptions} from './handler/shim/drag_pan'; const defaultInertiaOptions = { diff --git a/src/ui/handler_manager.ts b/src/ui/handler_manager.ts index 5e660ad53f..b41b3effe4 100644 --- a/src/ui/handler_manager.ts +++ b/src/ui/handler_manager.ts @@ -17,7 +17,7 @@ import DragPanHandler from './handler/shim/drag_pan'; import DragRotateHandler from './handler/shim/drag_rotate'; import TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate'; import {bindAll, extend} from '../util/util'; -import Point from '../symbol/point'; +import Point from '../util/point'; import assert from 'assert'; export type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent; diff --git a/src/ui/map.ts b/src/ui/map.ts index 338f88a50f..b5e5157ae1 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -12,7 +12,7 @@ import HandlerManager from './handler_manager'; import Camera from './camera'; import LngLat from '../geo/lng_lat'; import LngLatBounds from '../geo/lng_lat_bounds'; -import Point, {PointLike} from '../symbol/point'; +import Point, {PointLike} from '../util/point'; import AttributionControl from './control/attribution_control'; import LogoControl from './control/logo_control'; import isSupported from '@mapbox/mapbox-gl-supported'; diff --git a/src/ui/marker.ts b/src/ui/marker.ts index d4e91fb35d..c896be8c10 100644 --- a/src/ui/marker.ts +++ b/src/ui/marker.ts @@ -1,6 +1,6 @@ import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; -import Point, {PointLike} from '../symbol/point'; +import Point, {PointLike} from '../util/point'; import smartWrap from '../util/smart_wrap'; import {bindAll, extend} from '../util/util'; import {anchorTranslate, applyAnchorClass} from './anchor'; diff --git a/src/ui/popup.ts b/src/ui/popup.ts index 985b8ef76b..1f728f4b4a 100644 --- a/src/ui/popup.ts +++ b/src/ui/popup.ts @@ -3,7 +3,7 @@ import {Event, Evented} from '../util/evented'; import {MapMouseEvent} from '../ui/events'; import DOM from '../util/dom'; import LngLat from '../geo/lng_lat'; -import Point, {PointLike} from '../symbol/point'; +import Point, {PointLike} from '../util/point'; import smartWrap from '../util/smart_wrap'; import {anchorTranslate, applyAnchorClass} from './anchor'; diff --git a/src/util/classify_rings.ts b/src/util/classify_rings.ts index cf38750143..738ffb82b5 100644 --- a/src/util/classify_rings.ts +++ b/src/util/classify_rings.ts @@ -2,7 +2,7 @@ import quickselect from 'quickselect'; import {calculateSignedArea} from './util'; -import type Point from '../symbol/point'; +import type Point from './point'; // classifies an array of rings into polygons with outer rings and holes export default function classifyRings(rings: Array>, maxRings: number) { diff --git a/src/util/dom.ts b/src/util/dom.ts index 7ac2a2039f..f3b2332c18 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -1,4 +1,4 @@ -import Point from '../symbol/point'; +import Point from './point'; import assert from 'assert'; diff --git a/src/util/find_pole_of_inaccessibility.ts b/src/util/find_pole_of_inaccessibility.ts index c7a5a47d4f..d5a3392e1f 100644 --- a/src/util/find_pole_of_inaccessibility.ts +++ b/src/util/find_pole_of_inaccessibility.ts @@ -1,6 +1,6 @@ import Queue from 'tinyqueue'; -import Point from '../symbol/point'; +import Point from './point'; import {distToSegmentSquared} from './intersection_tests'; /** diff --git a/src/util/intersection_tests.ts b/src/util/intersection_tests.ts index d7151b495e..c53f2b7043 100644 --- a/src/util/intersection_tests.ts +++ b/src/util/intersection_tests.ts @@ -1,6 +1,6 @@ import {isCounterClockwise} from './util'; -import Point from '../symbol/point'; +import Point from './point'; export {polygonIntersectsBufferedPoint, polygonIntersectsMultiPolygon, polygonIntersectsBufferedMultiLine, polygonIntersectsPolygon, distToSegmentSquared, polygonIntersectsBox}; diff --git a/src/symbol/point.ts b/src/util/point.ts similarity index 99% rename from src/symbol/point.ts rename to src/util/point.ts index 171bd022de..99347913a3 100644 --- a/src/symbol/point.ts +++ b/src/util/point.ts @@ -16,7 +16,7 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -import {register} from '../util/web_worker_transfer'; +import {register} from './web_worker_transfer'; /** * A standalone point geometry with useful accessor, comparison, and diff --git a/src/util/smart_wrap.ts b/src/util/smart_wrap.ts index 32f642d4a1..2861da4e80 100644 --- a/src/util/smart_wrap.ts +++ b/src/util/smart_wrap.ts @@ -1,6 +1,6 @@ import LngLat from '../geo/lng_lat'; -import type Point from '../symbol/point'; +import type Point from './point'; import type Transform from '../geo/transform'; /** diff --git a/src/util/util.ts b/src/util/util.ts index c68cfb64da..62f6ab071b 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -1,6 +1,6 @@ import UnitBezier from '@mapbox/unitbezier'; -import Point from '../symbol/point'; +import Point from './point'; import type {Callback} from '../types/callback'; diff --git a/test/unit/data/fill_bucket.test.js b/test/unit/data/fill_bucket.test.js index 2da2590492..13fb24c987 100644 --- a/test/unit/data/fill_bucket.test.js +++ b/test/unit/data/fill_bucket.test.js @@ -5,7 +5,7 @@ import fs from 'fs'; import path, {dirname} from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import segment from '../../../rollup/build/tsc/data/segment'; import FillBucket from '../../../rollup/build/tsc/data/bucket/fill_bucket'; import FillStyleLayer from '../../../rollup/build/tsc/style/style_layer/fill_style_layer'; diff --git a/test/unit/data/line_bucket.test.js b/test/unit/data/line_bucket.test.js index 7752cfc140..a2f6f52c9b 100644 --- a/test/unit/data/line_bucket.test.js +++ b/test/unit/data/line_bucket.test.js @@ -4,7 +4,7 @@ import fs from 'fs'; import path, {dirname} from 'path'; import Protobuf from 'pbf'; import {VectorTile} from '@mapbox/vector-tile'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import segment from '../../../rollup/build/tsc/data/segment'; import LineBucket from '../../../rollup/build/tsc/data/bucket/line_bucket'; import LineStyleLayer from '../../../rollup/build/tsc/style/style_layer/line_style_layer'; diff --git a/test/unit/geo/transform.test.js b/test/unit/geo/transform.test.js index 320406b5f1..5443c03508 100644 --- a/test/unit/geo/transform.test.js +++ b/test/unit/geo/transform.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import Transform from '../../../rollup/build/tsc/geo/transform'; import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; import {OverscaledTileID, CanonicalTileID} from '../../../rollup/build/tsc/source/tile_id'; diff --git a/test/unit/source/source_cache.test.js b/test/unit/source/source_cache.test.js index cf136cfeb2..e276af226e 100644 --- a/test/unit/source/source_cache.test.js +++ b/test/unit/source/source_cache.test.js @@ -6,7 +6,7 @@ import Tile from '../../../rollup/build/tsc/source/tile'; import {OverscaledTileID} from '../../../rollup/build/tsc/source/tile_id'; import Transform from '../../../rollup/build/tsc/geo/transform'; import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import {Event, ErrorEvent, Evented} from '../../../rollup/build/tsc/util/evented'; import {extend} from '../../../rollup/build/tsc/util/util'; import browser from '../../../rollup/build/tsc/util/browser'; diff --git a/test/unit/style-spec/feature_filter.test.js b/test/unit/style-spec/feature_filter.test.js index d6335973f3..bb13087d68 100644 --- a/test/unit/style-spec/feature_filter.test.js +++ b/test/unit/style-spec/feature_filter.test.js @@ -2,7 +2,7 @@ import {test} from '../../util/test'; import {default as createFilter, isExpressionFilter} from '../../../rollup/build/tsc/style-spec/feature_filter'; import convertFilter from '../../../rollup/build/tsc/style-spec/feature_filter/convert'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import MercatorCoordinate from '../../../rollup/build/tsc/geo/mercator_coordinate'; import EXTENT from '../../../rollup/build/tsc/data/extent'; diff --git a/test/unit/style/style_layer/fill_extrusion_style_layer.test.js b/test/unit/style/style_layer/fill_extrusion_style_layer.test.js index 7844a6e067..736f64b8ee 100644 --- a/test/unit/style/style_layer/fill_extrusion_style_layer.test.js +++ b/test/unit/style/style_layer/fill_extrusion_style_layer.test.js @@ -1,7 +1,7 @@ import '../../../stub_loader'; import {test} from '../../../util/test'; import {getIntersectionDistance} from '../../../../rollup/build/tsc/style/style_layer/fill_extrusion_style_layer'; -import Point from '../../../../rollup/build/tsc/symbol/point'; +import Point from '../../../../rollup/build/tsc/util/point'; test('getIntersectionDistance', (t) => { const queryPoint = [new Point(100, 100)]; diff --git a/test/unit/symbol/check_max_angle.test.js b/test/unit/symbol/check_max_angle.test.js index b016a15ef7..0392a588ac 100644 --- a/test/unit/symbol/check_max_angle.test.js +++ b/test/unit/symbol/check_max_angle.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import checkMaxAngle from '../../../rollup/build/tsc/symbol/check_max_angle'; import Anchor from '../../../rollup/build/tsc/symbol/anchor'; diff --git a/test/unit/symbol/clip_line.test.js b/test/unit/symbol/clip_line.test.js index 04e3eab67f..e28a944655 100644 --- a/test/unit/symbol/clip_line.test.js +++ b/test/unit/symbol/clip_line.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import clipLine from '../../../rollup/build/tsc/symbol/clip_line'; test('clipLines', (t) => { diff --git a/test/unit/symbol/collision_feature.test.js b/test/unit/symbol/collision_feature.test.js index 824a376061..ca3502b109 100644 --- a/test/unit/symbol/collision_feature.test.js +++ b/test/unit/symbol/collision_feature.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; import CollisionFeature from '../../../rollup/build/tsc/symbol/collision_feature'; import Anchor from '../../../rollup/build/tsc/symbol/anchor'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import {CollisionBoxArray} from '../../../rollup/build/tsc/data/array_types'; test('CollisionFeature', (t) => { diff --git a/test/unit/symbol/get_anchors.test.js b/test/unit/symbol/get_anchors.test.js index 150f79244d..af30511434 100644 --- a/test/unit/symbol/get_anchors.test.js +++ b/test/unit/symbol/get_anchors.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import {getAnchors, getCenterAnchor} from '../../../rollup/build/tsc/symbol/get_anchors'; const TILE_EXTENT = 4096; diff --git a/test/unit/symbol/mergelines.test.js b/test/unit/symbol/mergelines.test.js index 4be6883a11..9c7861c6fd 100644 --- a/test/unit/symbol/mergelines.test.js +++ b/test/unit/symbol/mergelines.test.js @@ -1,6 +1,6 @@ import {test} from '../../util/test'; import mergeLines from '../../../rollup/build/tsc/symbol/mergelines'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; function makeFeatures(lines) { const features = []; diff --git a/test/unit/symbol/path_interpolator.test.js b/test/unit/symbol/path_interpolator.test.js index 60d87c8344..82b23f6cb9 100644 --- a/test/unit/symbol/path_interpolator.test.js +++ b/test/unit/symbol/path_interpolator.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import PathInterpolator from '../../../rollup/build/tsc/symbol/path_interpolator'; test('PathInterpolator', (t) => { diff --git a/test/unit/ui/marker.test.js b/test/unit/ui/marker.test.js index 26473a104b..7e957ef259 100644 --- a/test/unit/ui/marker.test.js +++ b/test/unit/ui/marker.test.js @@ -4,7 +4,7 @@ import {createMap as globalCreateMap} from '../../util'; import Marker from '../../../rollup/build/tsc/ui/marker'; import Popup from '../../../rollup/build/tsc/ui/popup'; import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import simulate from '../../util/simulate_interaction'; function createMap(t, options = {}) { diff --git a/test/unit/ui/popup.test.js b/test/unit/ui/popup.test.js index 2f44cbe7f3..6843513faf 100644 --- a/test/unit/ui/popup.test.js +++ b/test/unit/ui/popup.test.js @@ -3,7 +3,7 @@ import {test} from '../../util/test'; import {createMap as globalCreateMap} from '../../util'; import Popup from '../../../rollup/build/tsc/ui/popup'; import LngLat from '../../../rollup/build/tsc/geo/lng_lat'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import simulate from '../../util/simulate_interaction'; const containerWidth = 512; diff --git a/test/unit/util/find_pole_of_inaccessibility.test.js b/test/unit/util/find_pole_of_inaccessibility.test.js index e7a3544d06..adf99ff8ff 100644 --- a/test/unit/util/find_pole_of_inaccessibility.test.js +++ b/test/unit/util/find_pole_of_inaccessibility.test.js @@ -1,5 +1,5 @@ import {test} from '../../util/test'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; import findPoleOfInaccessibility from '../../../rollup/build/tsc/util/find_pole_of_inaccessibility'; test('polygon_poi', (t) => { diff --git a/test/unit/util/util.test.js b/test/unit/util/util.test.js index 80b8cec650..2f8840d9b0 100644 --- a/test/unit/util/util.test.js +++ b/test/unit/util/util.test.js @@ -1,7 +1,7 @@ import {test} from '../../util/test'; import {easeCubicInOut, keysDifference, extend, pick, uniqueId, bindAll, asyncAll, clamp, wrap, bezier, mapObject, filterObject, deepEqual, clone, arraysIntersect, isCounterClockwise, isClosedPolygon, parseCacheControl, uuid, validateUuid, nextPowerOfTwo, isPowerOfTwo} from '../../../rollup/build/tsc/util/util'; -import Point from '../../../rollup/build/tsc/symbol/point'; +import Point from '../../../rollup/build/tsc/util/point'; test('util', (t) => { t.equal(easeCubicInOut(0), 0, 'easeCubicInOut=0'); From 148e23ac76cc9aab80ce4ecf88566dcfaefc2a37 Mon Sep 17 00:00:00 2001 From: Derek Westcott Date: Wed, 1 Sep 2021 11:40:02 -0700 Subject: [PATCH 139/142] Remove undefined as any casts (#292) Unnecessary casts for 'undefined' or 'null' as 'any'. --- src/data/bucket/line_bucket.ts | 10 +++++----- src/render/texture.ts | 2 +- src/source/source_cache.ts | 12 ++++++------ src/style-spec/expression/compound_expression.ts | 2 +- src/style-spec/expression/definitions/coalesce.ts | 2 +- src/style-spec/expression/definitions/interpolate.ts | 2 +- src/style-spec/expression/definitions/step.ts | 2 +- src/style-spec/expression/evaluation_context.ts | 2 +- src/style-spec/visit.ts | 2 +- src/style/properties.ts | 8 ++++---- src/symbol/mergelines.ts | 2 +- src/ui/control/fullscreen_control.ts | 2 +- src/ui/handler/box_zoom.ts | 2 +- src/util/worker_pool.ts | 2 +- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/data/bucket/line_bucket.ts b/src/data/bucket/line_bucket.ts index 8ee7202adc..4f5415bd0d 100644 --- a/src/data/bucket/line_bucket.ts +++ b/src/data/bucket/line_bucket.ts @@ -295,11 +295,11 @@ class LineBucket implements Bucket { // we could be more precise, but it would only save a negligible amount of space const segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray); - let currentVertex; - let prevVertex = undefined as Point; - let nextVertex = undefined as Point; - let prevNormal = undefined as Point; - let nextNormal = undefined as Point; + let currentVertex: Point; + let prevVertex: Point; + let nextVertex: Point; + let prevNormal: Point; + let nextNormal: Point; // the last two vertices added this.e1 = this.e2 = -1; diff --git a/src/render/texture.ts b/src/render/texture.ts index 295f82eafb..42861a190a 100644 --- a/src/render/texture.ts +++ b/src/render/texture.ts @@ -104,7 +104,7 @@ class Texture { destroy() { const {gl} = this.context; gl.deleteTexture(this.texture); - this.texture = (null as any); + this.texture = null; } } diff --git a/src/source/source_cache.ts b/src/source/source_cache.ts index 1649892d1b..d1c7cf2419 100644 --- a/src/source/source_cache.ts +++ b/src/source/source_cache.ts @@ -719,18 +719,18 @@ class SourceCache extends Evented { } } - const cached = Boolean(tile); - if (!cached) { + const cached = tile; + + if (!tile) { tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor()); this._loadTile(tile, this._tileLoaded.bind(this, tile, tileID.key, tile.state)); } - // Impossible, but silence flow. - if (!tile) return null as any; - tile.uses++; this._tiles[tileID.key] = tile; - if (!cached) this._source.fire(new Event('dataloading', {tile, coord: tile.tileID, dataType: 'source'})); + if (!cached) { + this._source.fire(new Event('dataloading', {tile, coord: tile.tileID, dataType: 'source'})); + } return tile; } diff --git a/src/style-spec/expression/compound_expression.ts b/src/style-spec/expression/compound_expression.ts index 59f9d7ce5e..2248888aad 100644 --- a/src/style-spec/expression/compound_expression.ts +++ b/src/style-spec/expression/compound_expression.ts @@ -70,7 +70,7 @@ class CompoundExpression implements Expression { signature.length === args.length - 1 // correct param count )); - let signatureContext: ParsingContext = (null as any); + let signatureContext: ParsingContext = null; for (const [params, evaluate] of overloads) { // Use a fresh context for each attempted signature so that, if diff --git a/src/style-spec/expression/definitions/coalesce.ts b/src/style-spec/expression/definitions/coalesce.ts index cc2a5b5cff..3c6c3c885a 100644 --- a/src/style-spec/expression/definitions/coalesce.ts +++ b/src/style-spec/expression/definitions/coalesce.ts @@ -21,7 +21,7 @@ class Coalesce implements Expression { if (args.length < 2) { return context.error('Expectected at least one argument.') as null; } - let outputType: Type = (null as any); + let outputType: Type = null; const expectedType = context.expectedType; if (expectedType && expectedType.kind !== 'value') { outputType = expectedType; diff --git a/src/style-spec/expression/definitions/interpolate.ts b/src/style-spec/expression/definitions/interpolate.ts index 86c567da3d..3011db723c 100644 --- a/src/style-spec/expression/definitions/interpolate.ts +++ b/src/style-spec/expression/definitions/interpolate.ts @@ -105,7 +105,7 @@ class Interpolate implements Expression { const stops: Stops = []; - let outputType: Type = (null as any); + let outputType: Type = null; if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') { outputType = ColorType; } else if (context.expectedType && context.expectedType.kind !== 'value') { diff --git a/src/style-spec/expression/definitions/step.ts b/src/style-spec/expression/definitions/step.ts index 991a00b438..c8f9b8a960 100644 --- a/src/style-spec/expression/definitions/step.ts +++ b/src/style-spec/expression/definitions/step.ts @@ -41,7 +41,7 @@ class Step implements Expression { const stops: Stops = []; - let outputType: Type = (null as any); + let outputType: Type = null; if (context.expectedType && context.expectedType.kind !== 'value') { outputType = context.expectedType; } diff --git a/src/style-spec/expression/evaluation_context.ts b/src/style-spec/expression/evaluation_context.ts index 79a146f3b8..fbb90cc437 100644 --- a/src/style-spec/expression/evaluation_context.ts +++ b/src/style-spec/expression/evaluation_context.ts @@ -16,7 +16,7 @@ class EvaluationContext { _parseColorCache: {[_: string]: Color | undefined | null}; constructor() { - this.globals = (null as any); + this.globals = null; this.feature = null; this.featureState = null; this.formattedSection = null; diff --git a/src/style-spec/visit.ts b/src/style-spec/visit.ts index 8092f2c8fa..880e39eb6d 100644 --- a/src/style-spec/visit.ts +++ b/src/style-spec/visit.ts @@ -20,7 +20,7 @@ function getPropertyReference(propertyName): StylePropertySpecification { } } - return null as any; + return null; } export function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) { diff --git a/src/style/properties.ts b/src/style/properties.ts index 6707bbc67a..f8cc953326 100644 --- a/src/style/properties.ts +++ b/src/style/properties.ts @@ -525,7 +525,7 @@ export class DataDrivenProperty implements Property ): PossiblyEvaluatedPropertyValue { if (value.expression.kind === 'constant' || value.expression.kind === 'camera') { - return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages)}, parameters); + return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, null, {}, canonical, availableImages)}, parameters); } else { return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters); } @@ -594,7 +594,7 @@ export class CrossFadedDataDrivenProperty extends DataDrivenProperty implements Property | undefi if (value.value === undefined) { return undefined; } else if (value.expression.kind === 'constant') { - const constant = value.expression.evaluate(parameters, (null as any), {}, canonical, availableImages); + const constant = value.expression.evaluate(parameters, null, {}, canonical, availableImages); return this._calculate(constant, constant, constant, parameters); } else { assert(!value.isDataDriven()); @@ -708,7 +708,7 @@ export class ColorRampProperty implements Property { canonical?: CanonicalTileID, availableImages?: Array ): boolean { - return !!value.expression.evaluate(parameters, ((null as any)), {}, canonical, availableImages); + return !!value.expression.evaluate(parameters, null, {}, canonical, availableImages); } interpolate(): boolean { return false; } diff --git a/src/symbol/mergelines.ts b/src/symbol/mergelines.ts index 262ca391a3..cceb8a6864 100644 --- a/src/symbol/mergelines.ts +++ b/src/symbol/mergelines.ts @@ -58,7 +58,7 @@ export default function(features: Array): Array { delete rightIndex[rightKey]; rightIndex[getKey(text, mergedFeatures[i].geometry, true)] = i; - mergedFeatures[j].geometry = (null as any); + mergedFeatures[j].geometry = null; } else if (leftKey in rightIndex) { // found mergeable line adjacent to the start of the current line, merge diff --git a/src/ui/control/fullscreen_control.ts b/src/ui/control/fullscreen_control.ts index 9ed97fb512..89d7d24c08 100644 --- a/src/ui/control/fullscreen_control.ts +++ b/src/ui/control/fullscreen_control.ts @@ -68,7 +68,7 @@ class FullscreenControl implements IControl { onRemove() { DOM.remove(this._controlContainer); - this._map = (null as any); + this._map = null; window.document.removeEventListener(this._fullscreenchange, this._changeIcon); } diff --git a/src/ui/handler/box_zoom.ts b/src/ui/handler/box_zoom.ts index bdf78554f5..2de9fa1328 100644 --- a/src/ui/handler/box_zoom.ts +++ b/src/ui/handler/box_zoom.ts @@ -148,7 +148,7 @@ class BoxZoomHandler { if (this._box) { DOM.remove(this._box); - this._box = (null as any); + this._box = null; } DOM.enableDrag(); diff --git a/src/util/worker_pool.ts b/src/util/worker_pool.ts index 44520da603..d102de8ed9 100644 --- a/src/util/worker_pool.ts +++ b/src/util/worker_pool.ts @@ -40,7 +40,7 @@ export default class WorkerPool { this.workers.forEach((w) => { w.terminate(); }); - this.workers = (null as any); + this.workers = null; } } From 87e555c976f7dac76aac12c1c2c5aac8a1bfc667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Junod?= Date: Wed, 1 Sep 2021 20:44:52 +0200 Subject: [PATCH 140/142] Remove feature detection for {passive: false} support (#291) --- src/util/dom.ts | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/util/dom.ts b/src/util/dom.ts index f3b2332c18..989dbad04e 100644 --- a/src/util/dom.ts +++ b/src/util/dom.ts @@ -74,28 +74,11 @@ DOM.setTransform = function(el: HTMLElement, value: string) { el.style[transformProp] = value; }; -// Feature detection for {passive: false} support in add/removeEventListener. -let passiveSupported = false; - -try { - // https://github.com/facebook/flow/issues/285 - // $FlowFixMe - const options = Object.defineProperty({}, 'passive', { - get() { // eslint-disable-line - passiveSupported = true; - } - }); - window.addEventListener('test', options as any, options); - window.removeEventListener('test', options as any, options); -} catch (err) { - passiveSupported = false; -} - DOM.addEventListener = function(target: any, type: any, callback: any, options: { passive?: boolean; capture?: boolean; } = {}) { - if ('passive' in options && passiveSupported) { + if ('passive' in options) { target.addEventListener(type, callback, options); } else { target.addEventListener(type, callback, options.capture); @@ -106,7 +89,7 @@ DOM.removeEventListener = function(target: any, type: any, callback: any, option passive?: boolean; capture?: boolean; } = {}) { - if ('passive' in options && passiveSupported) { + if ('passive' in options) { target.removeEventListener(type, callback, options); } else { target.removeEventListener(type, callback, options.capture); From de752a0c235ecf1546a6eed01162ec84fbc255a0 Mon Sep 17 00:00:00 2001 From: HarelM Date: Fri, 3 Sep 2021 08:04:12 +0300 Subject: [PATCH 141/142] Changed version in package.json before merge --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3265cb498b..1d2c9855f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "maplibre-gl", - "version": "1.15.2", + "version": "2.0.0-pre.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 74f3fe952a..5d1cfedffb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "maplibre-gl", "description": "BSD licensed community fork of mapbox-gl, a WebGL interactive maps library", - "version": "1.15.2", + "version": "2.0.0-pre.1", "main": "dist/maplibre-gl.js", "style": "dist/maplibre-gl.css", "license": "BSD-3-Clause", From 8d789b70f6ef365d8dc4b67b2a67058459754711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Junod?= Date: Fri, 3 Sep 2021 07:07:44 +0200 Subject: [PATCH 142/142] Remove the usage of devicePixelRatio as a getter from browser.ts (#294) --- src/render/draw_debug.ts | 3 +-- src/render/painter.ts | 4 ++-- src/render/program/circle_program.ts | 3 +-- src/render/program/line_program.ts | 7 +++---- src/render/program/symbol_program.ts | 3 +-- src/source/geojson_source.ts | 2 +- src/source/vector_tile_source.ts | 3 +-- src/style/load_sprite.ts | 2 +- src/ui/map.ts | 2 +- src/util/browser.ts | 1 - src/util/mapbox.ts | 3 +-- test/unit/util/browser.test.js | 5 ----- 12 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/render/draw_debug.ts b/src/render/draw_debug.ts index 2230f642e1..1a76fcacda 100644 --- a/src/render/draw_debug.ts +++ b/src/render/draw_debug.ts @@ -4,7 +4,6 @@ import CullFaceMode from '../gl/cull_face_mode'; import {debugUniformValues} from './program/debug_program'; import Color from '../style-spec/util/color'; import ColorMode from '../gl/color_mode'; -import browser from '../util/browser'; import type Painter from './painter'; import type SourceCache from '../source/source_cache'; @@ -56,7 +55,7 @@ function drawDebugSSRect(painter: Painter, x: number, y: number, width: number, const gl = context.gl; gl.enable(gl.SCISSOR_TEST); - gl.scissor(x * browser.devicePixelRatio, y * browser.devicePixelRatio, width * browser.devicePixelRatio, height * browser.devicePixelRatio); + gl.scissor(x * devicePixelRatio, y * devicePixelRatio, width * devicePixelRatio, height * devicePixelRatio); context.clear({color}); gl.disable(gl.SCISSOR_TEST); } diff --git a/src/render/painter.ts b/src/render/painter.ts index d5756be724..b5ff8e102b 100644 --- a/src/render/painter.ts +++ b/src/render/painter.ts @@ -147,8 +147,8 @@ class Painter { * for a new width and height value. */ resize(width: number, height: number) { - this.width = width * browser.devicePixelRatio; - this.height = height * browser.devicePixelRatio; + this.width = width * devicePixelRatio; + this.height = height * devicePixelRatio; this.context.viewport.set([0, 0, this.width, this.height]); if (this.style) { diff --git a/src/render/program/circle_program.ts b/src/render/program/circle_program.ts index 2cb8d87d86..8d208fa3c4 100644 --- a/src/render/program/circle_program.ts +++ b/src/render/program/circle_program.ts @@ -7,7 +7,6 @@ import type {OverscaledTileID} from '../../source/tile_id'; import type Tile from '../../source/tile'; import type CircleStyleLayer from '../../style/style_layer/circle_style_layer'; import type Painter from '../painter'; -import browser from '../../util/browser'; export type CircleUniformsType = { 'u_camera_to_center_distance': Uniform1f; @@ -54,7 +53,7 @@ const circleUniformValues = ( layer.paint.get('circle-translate'), layer.paint.get('circle-translate-anchor')), 'u_pitch_with_map': +(pitchWithMap), - 'u_device_pixel_ratio': browser.devicePixelRatio, + 'u_device_pixel_ratio': devicePixelRatio, 'u_extrude_scale': extrudeScale }; }; diff --git a/src/render/program/line_program.ts b/src/render/program/line_program.ts index 1a9852dedd..3cecd7f49d 100644 --- a/src/render/program/line_program.ts +++ b/src/render/program/line_program.ts @@ -1,7 +1,6 @@ import {Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f} from '../uniform_binding'; import pixelsToTileUnits from '../../source/pixels_to_tile_units'; import {extend} from '../../util/util'; -import browser from '../../util/browser'; import type Context from '../../gl/context'; import type {UniformValues, UniformLocations} from '../uniform_binding'; @@ -100,7 +99,7 @@ const lineUniformValues = (painter: Painter, tile: Tile, layer: LineStyleLayer): return { 'u_matrix': calculateMatrix(painter, tile, layer), 'u_ratio': 1 / pixelsToTileUnits(tile, 1, transform.zoom), - 'u_device_pixel_ratio': browser.devicePixelRatio, + 'u_device_pixel_ratio': devicePixelRatio, 'u_units_to_pixels': [ 1 / transform.pixelsToGLUnits[0], 1 / transform.pixelsToGLUnits[1] @@ -128,7 +127,7 @@ const linePatternUniformValues = ( 'u_texsize': tile.imageAtlasTexture.size, // camera zoom ratio 'u_ratio': 1 / pixelsToTileUnits(tile, 1, transform.zoom), - 'u_device_pixel_ratio': browser.devicePixelRatio, + 'u_device_pixel_ratio': devicePixelRatio, 'u_image': 0, 'u_scale': [tileZoomRatio, crossfade.fromScale, crossfade.toScale], 'u_fade': crossfade.t, @@ -161,7 +160,7 @@ const lineSDFUniformValues = ( return extend(lineUniformValues(painter, tile, layer), { 'u_patternscale_a': [tileRatio / widthA, -posA.height / 2], 'u_patternscale_b': [tileRatio / widthB, -posB.height / 2], - 'u_sdfgamma': lineAtlas.width / (Math.min(widthA, widthB) * 256 * browser.devicePixelRatio) / 2, + 'u_sdfgamma': lineAtlas.width / (Math.min(widthA, widthB) * 256 * devicePixelRatio) / 2, 'u_image': 0, 'u_tex_y_a': posA.y, 'u_tex_y_b': posB.y, diff --git a/src/render/program/symbol_program.ts b/src/render/program/symbol_program.ts index 00df14d713..1d6d0ee8c4 100644 --- a/src/render/program/symbol_program.ts +++ b/src/render/program/symbol_program.ts @@ -1,6 +1,5 @@ import {Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f} from '../uniform_binding'; import {extend} from '../../util/util'; -import browser from '../../util/browser'; import type Context from '../../gl/context'; import type Painter from '../painter'; @@ -196,7 +195,7 @@ const symbolSDFUniformValues = ( rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText, texSize), { 'u_gamma_scale': (pitchWithMap ? Math.cos(transform._pitch) * transform.cameraToCenterDistance : 1), - 'u_device_pixel_ratio': browser.devicePixelRatio, + 'u_device_pixel_ratio': devicePixelRatio, 'u_is_halo': +isHalo }); }; diff --git a/src/source/geojson_source.ts b/src/source/geojson_source.ts index e5274db378..cccabcb7f1 100644 --- a/src/source/geojson_source.ts +++ b/src/source/geojson_source.ts @@ -314,7 +314,7 @@ class GeoJSONSource extends Evented implements Source { maxZoom: this.maxzoom, tileSize: this.tileSize, source: this.id, - pixelRatio: browser.devicePixelRatio, + pixelRatio: devicePixelRatio, showCollisionBoxes: this.map.showCollisionBoxes, promoteId: this.promoteId }; diff --git a/src/source/vector_tile_source.ts b/src/source/vector_tile_source.ts index 109286acde..acf0e5e9d8 100644 --- a/src/source/vector_tile_source.ts +++ b/src/source/vector_tile_source.ts @@ -5,7 +5,6 @@ import loadTileJSON from './load_tilejson'; import {postTurnstileEvent, postMapLoadEvent} from '../util/mapbox'; import TileBounds from './tile_bounds'; import {ResourceType} from '../util/ajax'; -import browser from '../util/browser'; import {cacheEntryPossiblyAdded} from '../util/tile_request_cache'; import type {Source} from './source'; @@ -191,7 +190,7 @@ class VectorTileSource extends Evented implements Source { tileSize: this.tileSize * tile.tileID.overscaleFactor(), type: this.type, source: this.id, - pixelRatio: browser.devicePixelRatio, + pixelRatio: devicePixelRatio, showCollisionBoxes: this.map.showCollisionBoxes, promoteId: this.promoteId }; diff --git a/src/style/load_sprite.ts b/src/style/load_sprite.ts index daaf24c847..f481343bd4 100644 --- a/src/style/load_sprite.ts +++ b/src/style/load_sprite.ts @@ -14,7 +14,7 @@ export default function( callback: Callback<{[_: string]: StyleImage}> ): Cancelable { let json: any, image, error; - const format = browser.devicePixelRatio > 1 ? '@2x' : ''; + const format = devicePixelRatio > 1 ? '@2x' : ''; let jsonRequest = getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), ResourceType.SpriteJSON), (err?: Error | null, data?: any | null) => { jsonRequest = null; diff --git a/src/ui/map.ts b/src/ui/map.ts index b5e5157ae1..4377ae357c 100755 --- a/src/ui/map.ts +++ b/src/ui/map.ts @@ -2361,7 +2361,7 @@ class Map extends Camera { } _resizeCanvas(width: number, height: number) { - const pixelRatio = browser.devicePixelRatio || 1; + const pixelRatio = devicePixelRatio || 1; // Request the required canvas size taking the pixelratio into account. this._canvas.width = pixelRatio * width; diff --git a/src/util/browser.ts b/src/util/browser.ts index 9dd915050d..0d060d3bd0 100755 --- a/src/util/browser.ts +++ b/src/util/browser.ts @@ -43,7 +43,6 @@ const exported = { hardwareConcurrency: navigator && navigator.hardwareConcurrency || 4, - get devicePixelRatio() { return devicePixelRatio; }, get prefersReducedMotion(): boolean { if (!matchMedia) return false; //Lazily initialize media query diff --git a/src/util/mapbox.ts b/src/util/mapbox.ts index b716600271..5b71c7bce9 100644 --- a/src/util/mapbox.ts +++ b/src/util/mapbox.ts @@ -13,7 +13,6 @@ import config from './config'; -import browser from './browser'; import webpSupported from './webp_supported'; import {createSkuToken, SKU_ID} from './sku_token'; import {uuid, validateUuid, storageAvailable, b64DecodeUnicode, b64EncodeUnicode, warnOnce, extend} from './util'; @@ -111,7 +110,7 @@ export class RequestManager { // The v4 mapbox tile API supports 512x512 image tiles only when @2x // is appended to the tile URL. If `tileSize: 512` is specified for // a Mapbox raster source force the @2x suffix even if a non hidpi device. - const suffix = browser.devicePixelRatio >= 2 || tileSize === 512 ? '@2x' : ''; + const suffix = devicePixelRatio >= 2 || tileSize === 512 ? '@2x' : ''; const extension = webpSupported.supported ? '.webp' : '$1'; urlObject.path = urlObject.path.replace(imageExtensionRe, `${suffix}${extension}`); urlObject.path = urlObject.path.replace(tileURLAPIPrefixRe, '/'); diff --git a/test/unit/util/browser.test.js b/test/unit/util/browser.test.js index 2983071721..5d2e700088 100644 --- a/test/unit/util/browser.test.js +++ b/test/unit/util/browser.test.js @@ -24,11 +24,6 @@ test('browser', (t) => { t.end(); }); - t.test('devicePixelRatio', (t) => { - t.equal(typeof browser.devicePixelRatio, 'number'); - t.end(); - }); - t.test('hardwareConcurrency', (t) => { t.equal(typeof browser.hardwareConcurrency, 'number'); t.end();