maplibre-gl 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/build/{banner.js → banner.ts} +1 -1
  2. package/build/generate-query-test-fixtures.ts +123 -0
  3. package/build/generate-shaders.ts +35 -0
  4. package/build/generate-struct-arrays.ts +7 -7
  5. package/build/generate-style-code.ts +8 -8
  6. package/build/generate-style-spec.ts +5 -4
  7. package/build/generate-typings.ts +16 -0
  8. package/build/readme.md +8 -18
  9. package/build/release-notes.js +9 -13
  10. package/build/{rollup_plugin_minify_style_spec.js → rollup_plugin_minify_style_spec.ts} +4 -3
  11. package/build/{rollup_plugins.js → rollup_plugins.ts} +11 -26
  12. package/dist/maplibre-gl-dev.js +522 -226
  13. package/dist/maplibre-gl.css +1 -1
  14. package/dist/maplibre-gl.d.ts +1536 -1010
  15. package/dist/maplibre-gl.js +3 -3
  16. package/dist/maplibre-gl.js.map +1 -1
  17. package/package.json +40 -61
  18. package/src/data/{array_types.ts → array_types.g.ts} +0 -0
  19. package/src/data/bucket/circle_bucket.ts +1 -1
  20. package/src/data/bucket/fill_bucket.test.ts +1 -1
  21. package/src/data/bucket/fill_bucket.ts +4 -4
  22. package/src/data/bucket/fill_extrusion_bucket.ts +1 -1
  23. package/src/data/bucket/line_bucket.test.ts +1 -1
  24. package/src/data/bucket/line_bucket.ts +6 -6
  25. package/src/data/bucket/symbol_bucket.test.ts +16 -16
  26. package/src/data/bucket/symbol_bucket.ts +53 -53
  27. package/src/data/bucket.ts +43 -43
  28. package/src/data/dem_data.ts +12 -12
  29. package/src/data/evaluation_feature.ts +10 -10
  30. package/src/data/feature_index.ts +37 -37
  31. package/src/data/feature_position_map.ts +5 -5
  32. package/src/data/index_array_type.ts +1 -1
  33. package/src/data/load_geometry.test.ts +1 -1
  34. package/src/data/program_configuration.ts +46 -46
  35. package/src/data/segment.ts +14 -14
  36. package/src/geo/edge_insets.ts +2 -2
  37. package/src/geo/lng_lat.ts +4 -4
  38. package/src/geo/lng_lat_bounds.ts +35 -35
  39. package/src/geo/mercator_coordinate.ts +5 -5
  40. package/src/geo/transform.test.ts +1 -1
  41. package/src/geo/transform.ts +14 -14
  42. package/src/gl/context.ts +3 -3
  43. package/src/gl/types.ts +19 -19
  44. package/src/gl/value.ts +6 -6
  45. package/src/gl/vertex_buffer.test.ts +1 -1
  46. package/src/index.ts +24 -9
  47. package/src/render/draw_circle.ts +8 -8
  48. package/src/render/draw_collision_debug.ts +5 -5
  49. package/src/render/draw_line.ts +4 -4
  50. package/src/render/draw_symbol.ts +21 -21
  51. package/src/render/glyph_atlas.ts +12 -12
  52. package/src/render/glyph_manager.test.ts +10 -21
  53. package/src/render/glyph_manager.ts +33 -32
  54. package/src/render/image_manager.ts +4 -4
  55. package/src/render/painter.ts +11 -11
  56. package/src/render/program/background_program.ts +29 -29
  57. package/src/render/program/circle_program.ts +10 -10
  58. package/src/render/program/clipping_mask_program.ts +1 -1
  59. package/src/render/program/collision_program.ts +9 -9
  60. package/src/render/program/debug_program.ts +4 -4
  61. package/src/render/program/fill_extrusion_program.ts +31 -31
  62. package/src/render/program/fill_program.ts +29 -29
  63. package/src/render/program/heatmap_program.ts +12 -12
  64. package/src/render/program/hillshade_program.ts +12 -12
  65. package/src/render/program/line_program.ts +38 -38
  66. package/src/render/program/pattern.ts +28 -28
  67. package/src/render/program/raster_program.ts +21 -21
  68. package/src/render/program/symbol_program.ts +96 -96
  69. package/src/render/program.ts +25 -25
  70. package/src/render/texture.ts +9 -9
  71. package/src/render/uniform_binding.ts +1 -1
  72. package/src/render/vertex_array_object.ts +13 -13
  73. package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
  74. package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
  75. package/src/shaders/background.fragment.glsl.g.ts +2 -0
  76. package/src/shaders/background.vertex.glsl.g.ts +2 -0
  77. package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
  78. package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
  79. package/src/shaders/circle.fragment.glsl.g.ts +2 -0
  80. package/src/shaders/circle.vertex.glsl.g.ts +2 -0
  81. package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
  82. package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
  83. package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
  84. package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
  85. package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
  86. package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
  87. package/src/shaders/debug.fragment.glsl.g.ts +2 -0
  88. package/src/shaders/debug.vertex.glsl.g.ts +2 -0
  89. package/src/shaders/fill.fragment.glsl.g.ts +2 -0
  90. package/src/shaders/fill.vertex.glsl.g.ts +2 -0
  91. package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
  92. package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
  93. package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
  94. package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
  95. package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
  96. package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
  97. package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
  98. package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
  99. package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
  100. package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
  101. package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
  102. package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
  103. package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
  104. package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
  105. package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
  106. package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
  107. package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
  108. package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
  109. package/src/shaders/line.fragment.glsl.g.ts +2 -0
  110. package/src/shaders/line.vertex.glsl.g.ts +2 -0
  111. package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
  112. package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
  113. package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
  114. package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
  115. package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
  116. package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
  117. package/src/shaders/raster.fragment.glsl.g.ts +2 -0
  118. package/src/shaders/raster.vertex.glsl.g.ts +2 -0
  119. package/src/shaders/shaders.ts +52 -55
  120. package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
  121. package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
  122. package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
  123. package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
  124. package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
  125. package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
  126. package/src/source/canvas_source.test.ts +11 -12
  127. package/src/source/canvas_source.ts +4 -4
  128. package/src/source/geojson_worker_source.ts +23 -23
  129. package/src/source/geojson_wrapper.ts +8 -8
  130. package/src/source/image_source.test.ts +2 -2
  131. package/src/source/image_source.ts +6 -6
  132. package/src/source/pixels_to_tile_units.ts +6 -6
  133. package/src/source/query_features.ts +20 -20
  134. package/src/source/raster_dem_tile_source.test.ts +2 -2
  135. package/src/source/raster_tile_source.test.ts +2 -2
  136. package/src/source/rtl_text_plugin.ts +10 -10
  137. package/src/source/source.ts +29 -29
  138. package/src/source/source_cache.test.ts +32 -0
  139. package/src/source/source_cache.ts +7 -5
  140. package/src/source/source_state.ts +1 -1
  141. package/src/source/tile.test.ts +3 -3
  142. package/src/source/tile.ts +15 -15
  143. package/src/source/tile_cache.ts +6 -6
  144. package/src/source/tile_id.test.ts +0 -1
  145. package/src/source/vector_tile_source.test.ts +3 -3
  146. package/src/source/vector_tile_source.ts +1 -1
  147. package/src/source/vector_tile_worker_source.test.ts +4 -4
  148. package/src/source/vector_tile_worker_source.ts +5 -5
  149. package/src/source/worker.test.ts +1 -1
  150. package/src/source/worker.ts +22 -22
  151. package/src/source/worker_source.ts +56 -56
  152. package/src/source/worker_tile.ts +4 -4
  153. package/src/style/evaluation_parameters.ts +3 -3
  154. package/src/style/format_section_override.test.ts +1 -1
  155. package/src/style/light.ts +10 -10
  156. package/src/style/load_glyph_range.test.ts +3 -3
  157. package/src/style/load_glyph_range.ts +6 -6
  158. package/src/style/load_sprite.ts +4 -4
  159. package/src/style/pauseable_placement.ts +1 -1
  160. package/src/style/properties.ts +69 -69
  161. package/src/style/query_utils.ts +7 -7
  162. package/src/style/style.test.ts +2 -2
  163. package/src/style/style.ts +29 -29
  164. package/src/style/style_glyph.ts +8 -8
  165. package/src/style/style_image.ts +58 -58
  166. package/src/style/style_layer/background_style_layer.ts +2 -2
  167. package/src/style/style_layer/{background_style_layer_properties.ts → background_style_layer_properties.g.ts} +0 -0
  168. package/src/style/style_layer/circle_style_layer.ts +10 -10
  169. package/src/style/style_layer/{circle_style_layer_properties.ts → circle_style_layer_properties.g.ts} +0 -0
  170. package/src/style/style_layer/custom_style_layer.ts +17 -17
  171. package/src/style/style_layer/fill_extrusion_style_layer.ts +10 -10
  172. package/src/style/style_layer/{fill_extrusion_style_layer_properties.ts → fill_extrusion_style_layer_properties.g.ts} +0 -0
  173. package/src/style/style_layer/fill_style_layer.ts +9 -9
  174. package/src/style/style_layer/{fill_style_layer_properties.ts → fill_style_layer_properties.g.ts} +0 -0
  175. package/src/style/style_layer/heatmap_style_layer.ts +2 -2
  176. package/src/style/style_layer/{heatmap_style_layer_properties.ts → heatmap_style_layer_properties.g.ts} +0 -0
  177. package/src/style/style_layer/hillshade_style_layer.ts +2 -2
  178. package/src/style/style_layer/{hillshade_style_layer_properties.ts → hillshade_style_layer_properties.g.ts} +0 -0
  179. package/src/style/style_layer/line_style_layer.ts +9 -9
  180. package/src/style/style_layer/{line_style_layer_properties.ts → line_style_layer_properties.g.ts} +0 -0
  181. package/src/style/style_layer/raster_style_layer.ts +2 -2
  182. package/src/style/style_layer/{raster_style_layer_properties.ts → raster_style_layer_properties.g.ts} +0 -0
  183. package/src/style/style_layer/symbol_style_layer.ts +7 -7
  184. package/src/style/style_layer/{symbol_style_layer_properties.ts → symbol_style_layer_properties.g.ts} +0 -0
  185. package/src/style/style_layer.ts +10 -10
  186. package/src/style/style_layer_index.ts +3 -3
  187. package/src/style/validate_style.ts +15 -15
  188. package/src/style-spec/error/validation_error.ts +1 -1
  189. package/src/style-spec/expression/compound_expression.ts +3 -3
  190. package/src/style-spec/expression/definitions/format.ts +11 -11
  191. package/src/style-spec/expression/definitions/interpolate.ts +5 -5
  192. package/src/style-spec/expression/definitions/match.ts +2 -2
  193. package/src/style-spec/expression/definitions/number_format.ts +11 -11
  194. package/src/style-spec/expression/expression.ts +8 -8
  195. package/src/style-spec/expression/index.ts +97 -97
  196. package/src/style-spec/expression/parsing_context.ts +11 -11
  197. package/src/style-spec/expression/types/collator.ts +9 -9
  198. package/src/style-spec/expression/types/resolved_image.ts +2 -2
  199. package/src/style-spec/expression/types.ts +14 -14
  200. package/src/style-spec/expression/values.ts +1 -1
  201. package/src/style-spec/feature_filter/index.ts +66 -66
  202. package/src/style-spec/function/convert.ts +3 -3
  203. package/src/style-spec/style-spec.ts +44 -44
  204. package/src/style-spec/util/color_spaces.ts +8 -8
  205. package/src/style-spec/util/result.ts +4 -4
  206. package/src/style-spec/validate/validate_filter.ts +58 -58
  207. package/src/style-spec/validate/validate_source.ts +63 -63
  208. package/src/style-spec/visit.ts +11 -11
  209. package/src/symbol/collision_feature.test.ts +1 -1
  210. package/src/symbol/collision_feature.ts +10 -10
  211. package/src/symbol/collision_index.ts +26 -26
  212. package/src/symbol/cross_tile_symbol_index.ts +17 -17
  213. package/src/symbol/get_anchors.ts +16 -16
  214. package/src/symbol/grid_index.ts +7 -7
  215. package/src/symbol/placement.ts +72 -72
  216. package/src/symbol/projection.ts +30 -30
  217. package/src/symbol/quads.ts +30 -30
  218. package/src/symbol/shaping.ts +160 -160
  219. package/src/symbol/symbol_layout.ts +119 -119
  220. package/src/symbol/symbol_size.ts +29 -29
  221. package/src/symbol/symbol_style_layer.test.ts +1 -1
  222. package/src/types/cancelable.ts +1 -1
  223. package/src/types/tilejson.ts +13 -13
  224. package/src/ui/anchor.ts +1 -1
  225. package/src/ui/camera.test.ts +5 -5
  226. package/src/ui/camera.ts +18 -18
  227. package/src/ui/control/attribution_control.test.ts +51 -16
  228. package/src/ui/control/attribution_control.ts +35 -16
  229. package/src/ui/control/control.ts +40 -40
  230. package/src/ui/control/fullscreen_control.ts +1 -1
  231. package/src/ui/control/geolocate_control.test.ts +1 -1
  232. package/src/ui/control/geolocate_control.ts +102 -102
  233. package/src/ui/control/logo_control.test.ts +4 -4
  234. package/src/ui/control/navigation_control.ts +3 -3
  235. package/src/ui/control/scale_control.test.ts +2 -2
  236. package/src/ui/control/scale_control.ts +5 -5
  237. package/src/ui/events.ts +289 -200
  238. package/src/ui/handler/box_zoom.test.ts +1 -1
  239. package/src/ui/handler/box_zoom.ts +1 -1
  240. package/src/ui/handler/dblclick_zoom.test.ts +1 -1
  241. package/src/ui/handler/drag_pan.test.ts +1 -1
  242. package/src/ui/handler/drag_rotate.test.ts +1 -1
  243. package/src/ui/handler/keyboard.test.ts +1 -1
  244. package/src/ui/handler/keyboard.ts +51 -51
  245. package/src/ui/handler/map_event.test.ts +1 -1
  246. package/src/ui/handler/map_event.ts +1 -1
  247. package/src/ui/handler/mouse.ts +1 -1
  248. package/src/ui/handler/mouse_rotate.test.ts +1 -1
  249. package/src/ui/handler/scroll_zoom.test.ts +1 -1
  250. package/src/ui/handler/scroll_zoom.ts +9 -9
  251. package/src/ui/handler/shim/drag_pan.ts +4 -4
  252. package/src/ui/handler/shim/drag_rotate.ts +1 -1
  253. package/src/ui/handler/shim/touch_zoom_rotate.ts +1 -1
  254. package/src/ui/handler/tap_recognizer.ts +4 -4
  255. package/src/ui/handler/touch_pan.ts +2 -2
  256. package/src/ui/handler/touch_zoom_rotate.test.ts +1 -1
  257. package/src/ui/handler/touch_zoom_rotate.ts +1 -1
  258. package/src/ui/handler_inertia.ts +6 -6
  259. package/src/ui/handler_manager.ts +44 -44
  260. package/src/ui/map/isMoving.test.ts +1 -1
  261. package/src/ui/map/isRotating.test.ts +1 -1
  262. package/src/ui/map/isZooming.test.ts +1 -1
  263. package/src/ui/map.test.ts +10 -4
  264. package/src/ui/map.ts +106 -101
  265. package/src/ui/map_events.test.ts +1 -1
  266. package/src/ui/marker.test.ts +12 -12
  267. package/src/ui/marker.ts +37 -37
  268. package/src/ui/popup.test.ts +7 -7
  269. package/src/ui/popup.ts +9 -9
  270. package/src/util/actor.test.ts +41 -10
  271. package/src/util/actor.ts +8 -8
  272. package/src/util/ajax.test.ts +29 -21
  273. package/src/util/ajax.ts +51 -30
  274. package/src/util/browser.ts +1 -1
  275. package/src/util/classify_rings.test.ts +1 -1
  276. package/src/util/color_ramp.ts +5 -5
  277. package/src/util/config.ts +2 -2
  278. package/src/util/dispatcher.ts +1 -1
  279. package/src/util/dom.ts +2 -2
  280. package/src/util/evented.ts +1 -1
  281. package/src/util/find_pole_of_inaccessibility.ts +3 -3
  282. package/src/util/image.ts +5 -5
  283. package/src/util/performance.ts +7 -7
  284. package/src/util/request_manager.ts +4 -4
  285. package/src/util/resolve_tokens.ts +4 -4
  286. package/src/util/struct_array.test.ts +1 -1
  287. package/src/util/struct_array.ts +15 -15
  288. package/src/util/task_queue.ts +3 -3
  289. package/src/util/tile_request_cache.ts +3 -3
  290. package/src/util/transferable_grid_index.ts +4 -4
  291. package/src/util/util.ts +8 -8
  292. package/src/util/web_worker.ts +4 -68
  293. package/src/util/web_worker_transfer.test.ts +3 -0
  294. package/src/util/web_worker_transfer.ts +21 -17
  295. package/src/util/worker_pool.ts +1 -1
  296. package/build/.eslintrc +0 -21
  297. package/build/glsl_to_js.js +0 -12
  298. package/build/post-ts-build.js +0 -43
  299. package/build/release-notes.md.ejs +0 -8
  300. package/build/test/build-tape.js +0 -17
  301. package/build/web_worker_replacement.js +0 -5
  302. package/dist/package.json +0 -1
  303. package/src/style-spec/validate_spec.test.ts +0 -29
  304. package/src/symbol/shaping.test.ts +0 -392
  305. package/src/types/glsl.d.ts +0 -4
@@ -126,51 +126,51 @@ class LngLatBounds {
126
126
  getSouthWest(): LngLat { return this._sw; }
127
127
 
128
128
  /**
129
- * Returns the northeast corner of the bounding box.
130
- *
131
- * @returns {LngLat} The northeast corner of the bounding box.
129
+ * Returns the northeast corner of the bounding box.
130
+ *
131
+ * @returns {LngLat} The northeast corner of the bounding box.
132
132
  */
133
133
  getNorthEast(): LngLat { return this._ne; }
134
134
 
135
135
  /**
136
- * Returns the northwest corner of the bounding box.
137
- *
138
- * @returns {LngLat} The northwest corner of the bounding box.
136
+ * Returns the northwest corner of the bounding box.
137
+ *
138
+ * @returns {LngLat} The northwest corner of the bounding box.
139
139
  */
140
140
  getNorthWest(): LngLat { return new LngLat(this.getWest(), this.getNorth()); }
141
141
 
142
142
  /**
143
- * Returns the southeast corner of the bounding box.
144
- *
145
- * @returns {LngLat} The southeast corner of the bounding box.
143
+ * Returns the southeast corner of the bounding box.
144
+ *
145
+ * @returns {LngLat} The southeast corner of the bounding box.
146
146
  */
147
147
  getSouthEast(): LngLat { return new LngLat(this.getEast(), this.getSouth()); }
148
148
 
149
149
  /**
150
- * Returns the west edge of the bounding box.
151
- *
152
- * @returns {number} The west edge of the bounding box.
150
+ * Returns the west edge of the bounding box.
151
+ *
152
+ * @returns {number} The west edge of the bounding box.
153
153
  */
154
154
  getWest(): number { return this._sw.lng; }
155
155
 
156
156
  /**
157
- * Returns the south edge of the bounding box.
158
- *
159
- * @returns {number} The south edge of the bounding box.
157
+ * Returns the south edge of the bounding box.
158
+ *
159
+ * @returns {number} The south edge of the bounding box.
160
160
  */
161
161
  getSouth(): number { return this._sw.lat; }
162
162
 
163
163
  /**
164
- * Returns the east edge of the bounding box.
165
- *
166
- * @returns {number} The east edge of the bounding box.
164
+ * Returns the east edge of the bounding box.
165
+ *
166
+ * @returns {number} The east edge of the bounding box.
167
167
  */
168
168
  getEast(): number { return this._ne.lng; }
169
169
 
170
170
  /**
171
- * Returns the north edge of the bounding box.
172
- *
173
- * @returns {number} The north edge of the bounding box.
171
+ * Returns the north edge of the bounding box.
172
+ *
173
+ * @returns {number} The north edge of the bounding box.
174
174
  */
175
175
  getNorth(): number { return this._ne.lat; }
176
176
 
@@ -210,20 +210,20 @@ class LngLatBounds {
210
210
  }
211
211
 
212
212
  /**
213
- * Check if the point is within the bounding box.
214
- *
215
- * @param {LngLatLike} lnglat geographic point to check against.
216
- * @returns {boolean} True if the point is within the bounding box.
217
- * @example
218
- * var llb = new maplibregl.LngLatBounds(
219
- * new maplibregl.LngLat(-73.9876, 40.7661),
220
- * new maplibregl.LngLat(-73.9397, 40.8002)
221
- * );
222
- *
223
- * var ll = new maplibregl.LngLat(-73.9567, 40.7789);
224
- *
225
- * console.log(llb.contains(ll)); // = true
226
- */
213
+ * Check if the point is within the bounding box.
214
+ *
215
+ * @param {LngLatLike} lnglat geographic point to check against.
216
+ * @returns {boolean} True if the point is within the bounding box.
217
+ * @example
218
+ * var llb = new maplibregl.LngLatBounds(
219
+ * new maplibregl.LngLat(-73.9876, 40.7661),
220
+ * new maplibregl.LngLat(-73.9397, 40.8002)
221
+ * );
222
+ *
223
+ * var ll = new maplibregl.LngLat(-73.9567, 40.7789);
224
+ *
225
+ * console.log(llb.contains(ll)); // = true
226
+ */
227
227
  contains(lnglat: LngLatLike) {
228
228
  const {lng, lat} = LngLat.convert(lnglat);
229
229
 
@@ -99,9 +99,9 @@ class MercatorCoordinate {
99
99
  const lngLat = LngLat.convert(lngLatLike);
100
100
 
101
101
  return new MercatorCoordinate(
102
- mercatorXfromLng(lngLat.lng),
103
- mercatorYfromLat(lngLat.lat),
104
- mercatorZfromAltitude(altitude, lngLat.lat));
102
+ mercatorXfromLng(lngLat.lng),
103
+ mercatorYfromLat(lngLat.lat),
104
+ mercatorZfromAltitude(altitude, lngLat.lat));
105
105
  }
106
106
 
107
107
  /**
@@ -114,8 +114,8 @@ class MercatorCoordinate {
114
114
  */
115
115
  toLngLat() {
116
116
  return new LngLat(
117
- lngFromMercatorX(this.x),
118
- latFromMercatorY(this.y));
117
+ lngFromMercatorX(this.x),
118
+ latFromMercatorY(this.y));
119
119
  }
120
120
 
121
121
  /**
@@ -2,7 +2,7 @@ import Point from '@mapbox/point-geometry';
2
2
  import Transform from './transform';
3
3
  import LngLat from './lng_lat';
4
4
  import {OverscaledTileID, CanonicalTileID} from '../source/tile_id';
5
- import {fixedLngLat, fixedCoord} from '../../test/util/fixed';
5
+ import {fixedLngLat, fixedCoord} from '../../test/unit/lib/fixed';
6
6
 
7
7
  describe('transform', () => {
8
8
  test('creates a transform', () => {
@@ -262,8 +262,8 @@ class Transform {
262
262
  * @returns {number} zoom level An integer zoom level at which all tiles will be visible.
263
263
  */
264
264
  coveringZoomLevel(options: {
265
- roundZoom?: boolean;
266
- tileSize: number;
265
+ roundZoom?: boolean;
266
+ tileSize: number;
267
267
  }) {
268
268
  const z = (options.roundZoom ? Math.round : Math.floor)(
269
269
  this.zoom + this.scaleZoom(this.tileSize / options.tileSize)
@@ -315,14 +315,14 @@ class Transform {
315
315
  * @private
316
316
  */
317
317
  coveringTiles(
318
- options: {
319
- tileSize: number;
320
- minzoom?: number;
321
- maxzoom?: number;
322
- roundZoom?: boolean;
323
- reparseOverscaled?: boolean;
324
- renderWorldCopies?: boolean;
325
- }
318
+ options: {
319
+ tileSize: number;
320
+ minzoom?: number;
321
+ maxzoom?: number;
322
+ roundZoom?: boolean;
323
+ reparseOverscaled?: boolean;
324
+ renderWorldCopies?: boolean;
325
+ }
326
326
  ): Array<OverscaledTileID> {
327
327
  let z = this.coveringZoomLevel(options);
328
328
  const actualZ = z;
@@ -436,8 +436,8 @@ class Transform {
436
436
  project(lnglat: LngLat) {
437
437
  const lat = clamp(lnglat.lat, -this.maxValidLatitude, this.maxValidLatitude);
438
438
  return new Point(
439
- mercatorXfromLng(lnglat.lng) * this.worldSize,
440
- mercatorYfromLat(lat) * this.worldSize);
439
+ mercatorXfromLng(lnglat.lng) * this.worldSize,
440
+ mercatorYfromLat(lat) * this.worldSize);
441
441
  }
442
442
 
443
443
  unproject(point: Point): LngLat {
@@ -451,8 +451,8 @@ class Transform {
451
451
  const b = this.pointCoordinate(this.centerPoint);
452
452
  const loc = this.locationCoordinate(lnglat);
453
453
  const newCenter = new MercatorCoordinate(
454
- loc.x - (a.x - b.x),
455
- loc.y - (a.y - b.y));
454
+ loc.x - (a.x - b.x),
455
+ loc.y - (a.y - b.y));
456
456
  this.center = this.coordinateLocation(newCenter);
457
457
  if (this._renderWorldCopies) {
458
458
  this.center = this.center.wrap();
package/src/gl/context.ts CHANGED
@@ -17,9 +17,9 @@ import type {
17
17
  import type Color from '../style-spec/util/color';
18
18
 
19
19
  type ClearArgs = {
20
- color?: Color;
21
- depth?: number;
22
- stencil?: number;
20
+ color?: Color;
21
+ depth?: number;
22
+ stencil?: number;
23
23
  };
24
24
 
25
25
  class Context {
package/src/gl/types.ts CHANGED
@@ -15,9 +15,9 @@ export type DepthRangeType = [number, number];
15
15
  export type DepthFuncType = CompareFuncType;
16
16
 
17
17
  export type StencilFuncType = {
18
- func: CompareFuncType;
19
- ref: number;
20
- mask: number;
18
+ func: CompareFuncType;
19
+ ref: number;
20
+ mask: number;
21
21
  };
22
22
 
23
23
  export type StencilOpConstant = WebGLRenderingContext['KEEP'] | WebGLRenderingContext['ZERO'] | WebGLRenderingContext['REPLACE'] | WebGLRenderingContext['INCR'] | WebGLRenderingContext['INCR_WRAP'] | WebGLRenderingContext['DECR'] | WebGLRenderingContext['DECR_WRAP'] | WebGLRenderingContext['INVERT'];
@@ -29,29 +29,29 @@ export type TextureUnitType = number;
29
29
  export type ViewportType = [number, number, number, number];
30
30
 
31
31
  export type StencilTestGL = {
32
- func: WebGLRenderingContext['NEVER'];
33
- mask: 0;
32
+ func: WebGLRenderingContext['NEVER'];
33
+ mask: 0;
34
34
  } | {
35
- func: WebGLRenderingContext['LESS'];
36
- mask: number;
35
+ func: WebGLRenderingContext['LESS'];
36
+ mask: number;
37
37
  } | {
38
- func: WebGLRenderingContext['EQUAL'];
39
- mask: number;
38
+ func: WebGLRenderingContext['EQUAL'];
39
+ mask: number;
40
40
  } | {
41
- func: WebGLRenderingContext['LEQUAL'];
42
- mask: number;
41
+ func: WebGLRenderingContext['LEQUAL'];
42
+ mask: number;
43
43
  } | {
44
- func: WebGLRenderingContext['GREATER'];
45
- mask: number;
44
+ func: WebGLRenderingContext['GREATER'];
45
+ mask: number;
46
46
  } | {
47
- func: WebGLRenderingContext['NOTEQUAL'];
48
- mask: number;
47
+ func: WebGLRenderingContext['NOTEQUAL'];
48
+ mask: number;
49
49
  } | {
50
- func: WebGLRenderingContext['GEQUAL'];
51
- mask: number;
50
+ func: WebGLRenderingContext['GEQUAL'];
51
+ mask: number;
52
52
  } | {
53
- func: WebGLRenderingContext['ALWAYS'];
54
- mask: 0;
53
+ func: WebGLRenderingContext['ALWAYS'];
54
+ mask: 0;
55
55
  };
56
56
 
57
57
  export type CullFaceModeType = WebGLRenderingContext['FRONT'] | WebGLRenderingContext['BACK'] | WebGLRenderingContext['FRONT_AND_BACK'];
package/src/gl/value.ts CHANGED
@@ -17,12 +17,12 @@ import type {
17
17
  } from './types';
18
18
 
19
19
  export interface IValue<T> {
20
- current: T;
21
- default: T;
22
- dirty: boolean;
23
- get(): T;
24
- setDefault(): void;
25
- set(value: T): void;
20
+ current: T;
21
+ default: T;
22
+ dirty: boolean;
23
+ get(): T;
24
+ setDefault(): void;
25
+ set(value: T): void;
26
26
  }
27
27
 
28
28
  class BaseValue<T> implements IValue<T> {
@@ -1,5 +1,5 @@
1
1
  import VertexBuffer from './vertex_buffer';
2
- import {StructArrayLayout3i6} from '../data/array_types';
2
+ import {StructArrayLayout3i6} from '../data/array_types.g';
3
3
  import Context from '../gl/context';
4
4
  import gl from 'gl';
5
5
  import {StructArrayMember} from '../util/struct_array';
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference path="./types/glsl.d.ts" />
2
1
  import assert from 'assert';
3
2
  import {supported} from '@mapbox/mapbox-gl-supported';
4
3
 
@@ -24,8 +23,16 @@ import WorkerPool from './util/worker_pool';
24
23
  import {prewarm, clearPrewarmedResources} from './util/global_worker_pool';
25
24
  import {clearTileCache} from './util/tile_request_cache';
26
25
  import {PerformanceUtils} from './util/performance';
26
+ import {AJAXError} from './util/ajax';
27
27
  import type {RequestParameters, ResponseCallback} from './util/ajax';
28
28
  import type {Cancelable} from './types/cancelable';
29
+ import GeoJSONSource from './source/geojson_source';
30
+ import CanvasSource from './source/canvas_source';
31
+ import ImageSource from './source/image_source';
32
+ import RasterDEMTileSource from './source/raster_dem_tile_source';
33
+ import RasterTileSource from './source/raster_tile_source';
34
+ import VectorTileSource from './source/vector_tile_source';
35
+ import VideoSource from './source/video_source';
29
36
 
30
37
  const exported = {
31
38
  supported,
@@ -45,7 +52,15 @@ const exported = {
45
52
  Point,
46
53
  MercatorCoordinate,
47
54
  Evented,
55
+ AJAXError,
48
56
  config,
57
+ CanvasSource,
58
+ GeoJSONSource,
59
+ ImageSource,
60
+ RasterDEMTileSource,
61
+ RasterTileSource,
62
+ VectorTileSource,
63
+ VideoSource,
49
64
  /**
50
65
  * Initializes resources like WebWorkers that can be shared across maps to lower load
51
66
  * times in some situations. `maplibregl.workerUrl` and `maplibregl.workerCount`, if being
@@ -223,14 +238,14 @@ Debug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPer
223
238
  */
224
239
 
225
240
  /**
226
- * Gets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text) status.
227
- * The status can be `unavailable` (i.e. not requested or removed), `loading`, `loaded` or `error`.
228
- * If the status is `loaded` and the plugin is requested again, an error will be thrown.
229
- *
230
- * @function getRTLTextPluginStatus
231
- * @example
232
- * const pluginStatus = maplibregl.getRTLTextPluginStatus();
233
- */
241
+ * Gets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text) status.
242
+ * The status can be `unavailable` (i.e. not requested or removed), `loading`, `loaded` or `error`.
243
+ * If the status is `loaded` and the plugin is requested again, an error will be thrown.
244
+ *
245
+ * @function getRTLTextPluginStatus
246
+ * @example
247
+ * const pluginStatus = maplibregl.getRTLTextPluginStatus();
248
+ */
234
249
 
235
250
  export default exported;
236
251
  // canary assert: used to confirm that asserts have been removed from production build
@@ -19,17 +19,17 @@ import type {CircleUniformsType} from './program/circle_program';
19
19
  export default drawCircles;
20
20
 
21
21
  type TileRenderState = {
22
- programConfiguration: ProgramConfiguration;
23
- program: Program<any>;
24
- layoutVertexBuffer: VertexBuffer;
25
- indexBuffer: IndexBuffer;
26
- uniformValues: UniformValues<CircleUniformsType>;
22
+ programConfiguration: ProgramConfiguration;
23
+ program: Program<any>;
24
+ layoutVertexBuffer: VertexBuffer;
25
+ indexBuffer: IndexBuffer;
26
+ uniformValues: UniformValues<CircleUniformsType>;
27
27
  };
28
28
 
29
29
  type SegmentsTileRenderState = {
30
- segments: SegmentVector;
31
- sortKey: number;
32
- state: TileRenderState;
30
+ segments: SegmentVector;
31
+ sortKey: number;
32
+ state: TileRenderState;
33
33
  };
34
34
 
35
35
  function drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleStyleLayer, coords: Array<OverscaledTileID>) {
@@ -8,7 +8,7 @@ import StencilMode from '../gl/stencil_mode';
8
8
  import CullFaceMode from '../gl/cull_face_mode';
9
9
  import {collisionUniformValues, collisionCircleUniformValues} from './program/collision_program';
10
10
 
11
- import {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types';
11
+ import {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types.g';
12
12
  import {collisionCircleLayout} from '../data/bucket/symbol_attributes';
13
13
  import SegmentVector from '../data/segment';
14
14
  import {mat4} from 'gl-matrix';
@@ -18,10 +18,10 @@ import IndexBuffer from '../gl/index_buffer';
18
18
  export default drawCollisionDebug;
19
19
 
20
20
  type TileBatch = {
21
- circleArray: Array<number>;
22
- circleOffset: number;
23
- transform: mat4;
24
- invTransform: mat4;
21
+ circleArray: Array<number>;
22
+ circleOffset: number;
23
+ transform: mat4;
24
+ invTransform: mat4;
25
25
  };
26
26
 
27
27
  let quadTriangles: QuadTriangleArray;
@@ -36,8 +36,8 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay
36
36
 
37
37
  const programId =
38
38
  image ? 'linePattern' :
39
- dasharray ? 'lineSDF' :
40
- gradient ? 'lineGradient' : 'line';
39
+ dasharray ? 'lineSDF' :
40
+ gradient ? 'lineGradient' : 'line';
41
41
 
42
42
  const context = painter.context;
43
43
  const gl = context.gl;
@@ -67,8 +67,8 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay
67
67
 
68
68
  const uniformValues = image ? linePatternUniformValues(painter, tile, layer, crossfade) :
69
69
  dasharray ? lineSDFUniformValues(painter, tile, layer, dasharray, crossfade) :
70
- gradient ? lineGradientUniformValues(painter, tile, layer, bucket.lineClipsArray.length) :
71
- lineUniformValues(painter, tile, layer);
70
+ gradient ? lineGradientUniformValues(painter, tile, layer, bucket.lineClipsArray.length) :
71
+ lineUniformValues(painter, tile, layer);
72
72
 
73
73
  if (image) {
74
74
  context.activeTexture.set(gl.TEXTURE0);
@@ -34,25 +34,25 @@ import type {CrossTileID, VariableOffset} from '../symbol/placement';
34
34
  export default drawSymbols;
35
35
 
36
36
  type SymbolTileRenderState = {
37
- segments: SegmentVector;
38
- sortKey: number;
39
- state: {
40
- program: any;
41
- buffers: SymbolBuffers;
42
- uniformValues: any;
43
- atlasTexture: Texture;
44
- atlasTextureIcon: Texture | null;
45
- atlasInterpolation: any;
46
- atlasInterpolationIcon: any;
47
- isSDF: boolean;
48
- hasHalo: boolean;
49
- };
37
+ segments: SegmentVector;
38
+ sortKey: number;
39
+ state: {
40
+ program: any;
41
+ buffers: SymbolBuffers;
42
+ uniformValues: any;
43
+ atlasTexture: Texture;
44
+ atlasTextureIcon: Texture | null;
45
+ atlasInterpolation: any;
46
+ atlasInterpolationIcon: any;
47
+ isSDF: boolean;
48
+ hasHalo: boolean;
49
+ };
50
50
  };
51
51
 
52
52
  const identityMat4 = mat4.identity(new Float32Array(16));
53
53
 
54
54
  function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array<OverscaledTileID>, variableOffsets: {
55
- [_ in CrossTileID]: VariableOffset;
55
+ [_ in CrossTileID]: VariableOffset;
56
56
  }) {
57
57
  if (painter.renderPass !== 'translucent') return;
58
58
 
@@ -132,13 +132,13 @@ function updateVariableAnchors(coords, painter, layer, sourceCache, rotationAlig
132
132
  if (size) {
133
133
  const tileScale = Math.pow(2, tr.zoom - tile.tileID.overscaledZ);
134
134
  updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,
135
- tr, labelPlaneMatrix, coord.posMatrix, tileScale, size, updateTextFitIcon);
135
+ tr, labelPlaneMatrix, coord.posMatrix, tileScale, size, updateTextFitIcon);
136
136
  }
137
137
  }
138
138
  }
139
139
 
140
140
  function updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,
141
- transform, labelPlaneMatrix, posMatrix, tileScale, size, updateTextFitIcon) {
141
+ transform, labelPlaneMatrix, posMatrix, tileScale, size, updateTextFitIcon) {
142
142
  const placedSymbols = bucket.text.placedSymbolArray;
143
143
  const dynamicTextLayoutVertexArray = bucket.text.dynamicLayoutVertexArray;
144
144
  const dynamicIconLayoutVertexArray = bucket.icon.dynamicLayoutVertexArray;
@@ -223,7 +223,7 @@ function getSymbolProgramName(isSDF: boolean, isText: boolean, bucket: SymbolBuc
223
223
  }
224
224
 
225
225
  function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate, translateAnchor,
226
- rotationAlignment, pitchAlignment, keepUpright, stencilMode, colorMode) {
226
+ rotationAlignment, pitchAlignment, keepUpright, stencilMode, colorMode) {
227
227
 
228
228
  const context = painter.context;
229
229
  const gl = context.gl;
@@ -310,12 +310,12 @@ function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate
310
310
  if (isSDF) {
311
311
  if (!bucket.iconsInText) {
312
312
  uniformValues = symbolSDFUniformValues(sizeData.kind,
313
- size, rotateInShader, pitchWithMap, painter, matrix,
314
- uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true);
313
+ size, rotateInShader, pitchWithMap, painter, matrix,
314
+ uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true);
315
315
  } else {
316
316
  uniformValues = symbolTextAndIconUniformValues(sizeData.kind,
317
- size, rotateInShader, pitchWithMap, painter, matrix,
318
- uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon);
317
+ size, rotateInShader, pitchWithMap, painter, matrix,
318
+ uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon);
319
319
  }
320
320
  } else {
321
321
  uniformValues = symbolIconUniformValues(sizeData.kind,
@@ -7,21 +7,21 @@ import type {GlyphMetrics, StyleGlyph} from '../style/style_glyph';
7
7
  const padding = 1;
8
8
 
9
9
  export type Rect = {
10
- x: number;
11
- y: number;
12
- w: number;
13
- h: number;
10
+ x: number;
11
+ y: number;
12
+ w: number;
13
+ h: number;
14
14
  };
15
15
 
16
16
  export type GlyphPosition = {
17
- rect: Rect;
18
- metrics: GlyphMetrics;
17
+ rect: Rect;
18
+ metrics: GlyphMetrics;
19
19
  };
20
20
 
21
21
  export type GlyphPositions = {
22
- [_: string]: {
23
- [_: number]: GlyphPosition;
24
- };
22
+ [_: string]: {
23
+ [_: number]: GlyphPosition;
24
+ };
25
25
  };
26
26
 
27
27
  export default class GlyphAtlas {
@@ -29,9 +29,9 @@ export default class GlyphAtlas {
29
29
  positions: GlyphPositions;
30
30
 
31
31
  constructor(stacks: {
32
- [_: string]: {
33
- [_: number]: StyleGlyph;
34
- };
32
+ [_: string]: {
33
+ [_: number]: StyleGlyph;
34
+ };
35
35
  }) {
36
36
  const positions = {};
37
37
  const bins = [];
@@ -4,7 +4,7 @@ import fs from 'fs';
4
4
  import {RequestManager} from '../util/request_manager';
5
5
 
6
6
  const glyphs = {};
7
- for (const glyph of parseGlyphPBF(fs.readFileSync('./test/fixtures/0-255.pbf'))) {
7
+ for (const glyph of parseGlyphPBF(fs.readFileSync('./test/unit/assets/0-255.pbf'))) {
8
8
  glyphs[glyph.id] = glyph;
9
9
  }
10
10
 
@@ -21,12 +21,6 @@ const createLoadGlyphRangeStub = () => {
21
21
  };
22
22
 
23
23
  const createGlyphManager = (font?) => {
24
- GlyphManager.TinySDF = class {
25
- // Return empty 30x30 bitmap (24 fontsize + 3 * 2 buffer)
26
- draw() {
27
- return {data: new Uint8ClampedArray(900)} as any;
28
- }
29
- };
30
24
  const manager = new GlyphManager(identityTransform, font);
31
25
  manager.setURL('https://localhost/fonts/v1/{fontstack}/{range}.pbf');
32
26
  return manager;
@@ -106,8 +100,8 @@ describe('GlyphManager', () => {
106
100
  expect(err).toBeFalsy();
107
101
  const glyph = glyphs['Arial Unicode MS'][0x30c6];
108
102
  //Ensure that te is locally generated.
109
- expect(glyph.bitmap.height).toBe(30);
110
- expect(glyph.bitmap.width).toBe(30);
103
+ expect(glyph.bitmap.height).toBe(6);
104
+ expect(glyph.bitmap.width).toBe(6);
111
105
  done();
112
106
  });
113
107
  });
@@ -118,7 +112,7 @@ describe('GlyphManager', () => {
118
112
 
119
113
  manager.getGlyphs({'Arial Unicode MS': [0x5e73]}, (err, glyphs) => {
120
114
  expect(err).toBeFalsy();
121
- expect(glyphs['Arial Unicode MS'][0x5e73].metrics.advance).toBe(24);
115
+ expect(glyphs['Arial Unicode MS'][0x5e73].metrics.advance).toBe(1);
122
116
  done();
123
117
  });
124
118
  });
@@ -129,7 +123,7 @@ describe('GlyphManager', () => {
129
123
  // Katakana letter te
130
124
  manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, (err, glyphs) => {
131
125
  expect(err).toBeFalsy();
132
- expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(24);
126
+ expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(1);
133
127
  done();
134
128
  });
135
129
  });
@@ -140,7 +134,7 @@ describe('GlyphManager', () => {
140
134
  //Hiragana letter te
141
135
  manager.getGlyphs({'Arial Unicode MS': [0x3066]}, (err, glyphs) => {
142
136
  expect(err).toBeFalsy();
143
- expect(glyphs['Arial Unicode MS'][0x3066].metrics.advance).toBe(24);
137
+ expect(glyphs['Arial Unicode MS'][0x3066].metrics.advance).toBe(1);
144
138
  done();
145
139
  });
146
140
  });
@@ -148,21 +142,16 @@ describe('GlyphManager', () => {
148
142
  test('GlyphManager caches locally generated glyphs', done => {
149
143
 
150
144
  const manager = createGlyphManager('sans-serif');
151
- let drawCallCount = 0;
152
- GlyphManager.TinySDF = class {
153
- // Return empty 30x30 bitmap (24 fontsize + 3 * 2 buffer)
154
- draw() {
155
- drawCallCount++;
156
- return {data: new Uint8ClampedArray(900)} as any;
157
- }
158
- };
145
+ const drawSpy = GlyphManager.TinySDF.prototype.draw = jest.fn().mockImplementation(() => {
146
+ return {data: new Uint8ClampedArray(900)} as any;
147
+ });
159
148
 
160
149
  // Katakana letter te
161
150
  manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, (err, glyphs) => {
162
151
  expect(err).toBeFalsy();
163
152
  expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(24);
164
153
  manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, () => {
165
- expect(drawCallCount).toBe(1);
154
+ expect(drawSpy).toHaveBeenCalledTimes(1);
166
155
  done();
167
156
  });
168
157
  });