After #6204, this will give us one provide per module.
There is inconsistency here that isn't all that great - but I tried to make pragmatic choices when moving enums to dedicated modules or tacking them on to existing constructors.
So, for example, we have a dedicated module for the ol.geom.GeometryType enum (instead of a Type enum on ol.geom.Geometry) because
On the other hand, we have a Property enum on ol.layer.Base (instead of a dedicated module for a ol.layer.LayerProperty enum) because
After these changes, we can treat openlayers-internal/one-provide linter rule violations as errors. So it shouldn't be possible going forward to have multiple goog.provide() calls in a single file.
The change in 294cb1f is required so the Compiler doesn't choke on our olx.js. We have types in there that may not be included in custom builds. This is a real problem for anybody creating custom builds (and it is not just about @typedef). We need to rework our build scripts so we always pass all source files to the Compiler. Without doing this, there will always be risks that types in olx.js are missing.
Update: see #6207 for a solution for the olx.js issue.
Wow, what an effort. This looks great. Please merge.
Dedicated module for ol.extent.Corner enum
Dedicated module for ol.extent.Relationship enum
Add OperationType enum to ol.source.Raster
Add EventType enum to ol.Object
Add Event to ol.Object
Dedicated module for GeometryType enum
Dedicated module for GeometryLayout
Add Property enum to ol.layer.Base
Reworked mapbrowser* things
Treat one-provide violations as errors
The change in 294cb1f should no longer be necessary after #6207. Prior to #6207, the make compile-examples target was failing because our (compilable) examples didn't explicitly require stuff that appears in olx.js. The change in 294cb1f was a specific fix to make our config/all-examples.json builds work, but #6207 should make it so custom builds work in general.
So, I've removed that commit. I'll merge if the build is green.