diff --git a/.coverage_json/coverage-summary.json b/.coverage_json/coverage-summary.json
index c39538b47..c12e4694c 100644
--- a/.coverage_json/coverage-summary.json
+++ b/.coverage_json/coverage-summary.json
@@ -1 +1,872 @@
-{"total":{"lines":{"total":2792,"covered":2696,"skipped":0,"pct":96.56},"statements":{"total":2886,"covered":2778,"skipped":0,"pct":96.25},"functions":{"total":518,"covered":507,"skipped":0,"pct":97.87},"branches":{"total":1679,"covered":1541,"skipped":0,"pct":91.78},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/cache-memory/src/index.js":{"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/core/src/index.js":{"lines":{"total":56,"covered":56,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":56,"covered":56,"skipped":0,"pct":100},"branches":{"total":22,"covered":22,"skipped":0,"pct":100}},"packages/core/src/data-provider/extend-controller.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}},"packages/core/src/data-provider/extend-model.js":{"lines":{"total":115,"covered":115,"skipped":0,"pct":100},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":115,"covered":115,"skipped":0,"pct":100},"branches":{"total":77,"covered":77,"skipped":0,"pct":100}},"packages/core/src/data-provider/index.js":{"lines":{"total":57,"covered":57,"skipped":0,"pct":100},"functions":{"total":10,"covered":10,"skipped":0,"pct":100},"statements":{"total":57,"covered":57,"skipped":0,"pct":100},"branches":{"total":22,"covered":22,"skipped":0,"pct":100}},"packages/core/src/data-provider/provider-route.js":{"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/core/src/data-provider/helpers/compose-route-path.js":{"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}},"packages/core/src/data-provider/helpers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/core/src/data-provider/helpers/route-joiner.js":{"lines":{"total":6,"covered":6,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/featureserver/src/index.js":{"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/layer-metadata.js":{"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}},"packages/featureserver/src/layers-metadata.js":{"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}},"packages/featureserver/src/log-manager.js":{"lines":{"total":12,"covered":5,"skipped":0,"pct":41.66},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":12,"covered":5,"skipped":0,"pct":41.66},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}},"packages/featureserver/src/metadata-defaults.js":{"lines":{"total":29,"covered":29,"skipped":0,"pct":100},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":29,"covered":29,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/featureserver/src/queryRelatedRecords.js":{"lines":{"total":26,"covered":4,"skipped":0,"pct":15.38},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":27,"covered":4,"skipped":0,"pct":14.81},"branches":{"total":16,"covered":0,"skipped":0,"pct":0}},"packages/featureserver/src/rest-info-route-handler.js":{"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}},"packages/featureserver/src/route.js":{"lines":{"total":56,"covered":48,"skipped":0,"pct":85.71},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":56,"covered":48,"skipped":0,"pct":85.71},"branches":{"total":34,"covered":26,"skipped":0,"pct":76.47}},"packages/featureserver/src/server-info-route-handler.js":{"lines":{"total":54,"covered":53,"skipped":0,"pct":98.14},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":54,"covered":53,"skipped":0,"pct":98.14},"branches":{"total":46,"covered":46,"skipped":0,"pct":100}},"packages/featureserver/src/generate-renderer/color-ramp.js":{"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":21,"covered":21,"skipped":0,"pct":100}},"packages/featureserver/src/generate-renderer/create-symbol.js":{"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/featureserver/src/generate-renderer/index.js":{"lines":{"total":42,"covered":42,"skipped":0,"pct":100},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":43,"covered":43,"skipped":0,"pct":100},"branches":{"total":17,"covered":17,"skipped":0,"pct":100}},"packages/featureserver/src/generate-renderer/validate-classification-definition.js":{"lines":{"total":31,"covered":31,"skipped":0,"pct":100},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":32,"covered":32,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/data-type-utils.js":{"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":16,"covered":16,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/errors.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/esri-units-lookup.js":{"lines":{"total":13,"covered":12,"skipped":0,"pct":92.3},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.3},"branches":{"total":16,"covered":15,"skipped":0,"pct":93.75}},"packages/featureserver/src/helpers/feature-layer-metadata.js":{"lines":{"total":49,"covered":46,"skipped":0,"pct":93.87},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":49,"covered":46,"skipped":0,"pct":93.87},"branches":{"total":19,"covered":14,"skipped":0,"pct":73.68}},"packages/featureserver/src/helpers/get-collection-crs.js":{"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":15,"covered":15,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/get-geometry-type-from-geojson.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/get-spatial-reference.js":{"lines":{"total":11,"covered":10,"skipped":0,"pct":90.9},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":11,"skipped":0,"pct":84.61},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}},"packages/featureserver/src/helpers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/is-geojson-table.js":{"lines":{"total":10,"covered":9,"skipped":0,"pct":90},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.9},"branches":{"total":12,"covered":7,"skipped":0,"pct":58.33}},"packages/featureserver/src/helpers/normalize-extent.js":{"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/normalize-input-data.js":{"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":13,"covered":13,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/normalize-request-params.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":9,"covered":9,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/normalize-spatial-reference.js":{"lines":{"total":43,"covered":43,"skipped":0,"pct":100},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":46,"covered":45,"skipped":0,"pct":97.82},"branches":{"total":34,"covered":31,"skipped":0,"pct":91.17}},"packages/featureserver/src/helpers/renderers.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/server-metadata.js":{"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/table-layer-metadata.js":{"lines":{"total":76,"covered":75,"skipped":0,"pct":98.68},"functions":{"total":17,"covered":17,"skipped":0,"pct":100},"statements":{"total":77,"covered":76,"skipped":0,"pct":98.7},"branches":{"total":49,"covered":44,"skipped":0,"pct":89.79}},"packages/featureserver/src/helpers/validate-inputs.js":{"lines":{"total":24,"covered":24,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":24,"covered":24,"skipped":0,"pct":100},"branches":{"total":9,"covered":8,"skipped":0,"pct":88.88}},"packages/featureserver/src/helpers/fields/constants.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/fields/esri-type-utils.js":{"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/fields/field-classes.js":{"lines":{"total":51,"covered":50,"skipped":0,"pct":98.03},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":51,"covered":50,"skipped":0,"pct":98.03},"branches":{"total":20,"covered":17,"skipped":0,"pct":85}},"packages/featureserver/src/helpers/fields/fields.js":{"lines":{"total":33,"covered":32,"skipped":0,"pct":96.96},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":35,"covered":34,"skipped":0,"pct":97.14},"branches":{"total":24,"covered":22,"skipped":0,"pct":91.66}},"packages/featureserver/src/helpers/fields/index.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/fields/layer-fields.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}},"packages/featureserver/src/helpers/fields/query-fields.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":6,"covered":4,"skipped":0,"pct":66.66}},"packages/featureserver/src/helpers/fields/statistics-fields.js":{"lines":{"total":35,"covered":34,"skipped":0,"pct":97.14},"functions":{"total":14,"covered":14,"skipped":0,"pct":100},"statements":{"total":37,"covered":36,"skipped":0,"pct":97.29},"branches":{"total":25,"covered":20,"skipped":0,"pct":80}},"packages/featureserver/src/query/filter-and-transform.js":{"lines":{"total":40,"covered":40,"skipped":0,"pct":100},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":40,"covered":40,"skipped":0,"pct":100},"branches":{"total":28,"covered":28,"skipped":0,"pct":100}},"packages/featureserver/src/query/index.js":{"lines":{"total":44,"covered":44,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":44,"covered":44,"skipped":0,"pct":100},"branches":{"total":35,"covered":33,"skipped":0,"pct":94.28}},"packages/featureserver/src/query/log-provider-data-warnings.js":{"lines":{"total":36,"covered":35,"skipped":0,"pct":97.22},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":36,"covered":35,"skipped":0,"pct":97.22},"branches":{"total":47,"covered":46,"skipped":0,"pct":97.87}},"packages/featureserver/src/query/render-count-and-extent.js":{"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}},"packages/featureserver/src/query/render-features.js":{"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":21,"covered":21,"skipped":0,"pct":100},"branches":{"total":24,"covered":24,"skipped":0,"pct":100}},"packages/featureserver/src/query/render-precalculated-statistics.js":{"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/featureserver/src/query/render-statistics.js":{"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}},"packages/featureserver/src/query/validate-query-request-parameters.js":{"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/general-response-handler.js":{"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/query-response-handler.js":{"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-callback.js":{"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pretty-json.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pbf/get-geometry-transform.js":{"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":19,"covered":19,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pbf/index.js":{"lines":{"total":29,"covered":29,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":29,"covered":29,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pbf/transform-features-for-pbf.js":{"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pbf/transform-to-pbf-attributes.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/featureserver/src/response-handlers/helpers/send-pbf/transform-to-pbf-geometry.js":{"lines":{"total":63,"covered":63,"skipped":0,"pct":100},"functions":{"total":18,"covered":18,"skipped":0,"pct":100},"statements":{"total":66,"covered":66,"skipped":0,"pct":100},"branches":{"total":22,"covered":22,"skipped":0,"pct":100}},"packages/logger/src/index.js":{"lines":{"total":30,"covered":12,"skipped":0,"pct":40},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":32,"covered":12,"skipped":0,"pct":37.5},"branches":{"total":22,"covered":7,"skipped":0,"pct":31.81}},"packages/output-geoservices/src/index.js":{"lines":{"total":250,"covered":250,"skipped":0,"pct":100},"functions":{"total":15,"covered":15,"skipped":0,"pct":100},"statements":{"total":250,"covered":250,"skipped":0,"pct":100},"branches":{"total":52,"covered":51,"skipped":0,"pct":98.07}},"packages/winnow/src/errors.js":{"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}},"packages/winnow/src/index.js":{"lines":{"total":4,"covered":0,"skipped":0,"pct":0},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":0,"skipped":0,"pct":0},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/log-manager.js":{"lines":{"total":10,"covered":4,"skipped":0,"pct":40},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":10,"covered":4,"skipped":0,"pct":40},"branches":{"total":4,"covered":0,"skipped":0,"pct":0}},"packages/winnow/src/calculate-class-breaks/calculate-std-dev-intervals.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/calculate-class-breaks/filter-and-validate-classification-features.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/winnow/src/calculate-class-breaks/index.js":{"lines":{"total":28,"covered":26,"skipped":0,"pct":92.85},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":31,"covered":28,"skipped":0,"pct":90.32},"branches":{"total":20,"covered":16,"skipped":0,"pct":80}},"packages/winnow/src/calculate-class-breaks/normalize-classification-values.js":{"lines":{"total":49,"covered":49,"skipped":0,"pct":100},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":49,"covered":49,"skipped":0,"pct":100},"branches":{"total":36,"covered":34,"skipped":0,"pct":94.44}},"packages/winnow/src/calculate-class-breaks/transform-class-breaks-to-ranges.js":{"lines":{"total":28,"covered":28,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":30,"covered":29,"skipped":0,"pct":96.66},"branches":{"total":13,"covered":12,"skipped":0,"pct":92.3}},"packages/winnow/src/filter-and-transform/filter-and-transform.js":{"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/prepare-filter-and-transform.js":{"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":19,"covered":18,"skipped":0,"pct":94.73},"branches":{"total":18,"covered":17,"skipped":0,"pct":94.44}},"packages/winnow/src/filter-and-transform/filters/contains.js":{"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/filters/envelope-intersects.js":{"lines":{"total":17,"covered":17,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":20,"covered":19,"skipped":0,"pct":95},"branches":{"total":17,"covered":15,"skipped":0,"pct":88.23}},"packages/winnow/src/filter-and-transform/filters/hashed-objectid-comparator.js":{"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":21,"covered":21,"skipped":0,"pct":100},"branches":{"total":26,"covered":26,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/filters/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/filters/intersects.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":14,"covered":14,"skipped":0,"pct":100},"branches":{"total":16,"covered":16,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/filters/within.js":{"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":9,"covered":9,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/helpers/create-integer-hash.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/helpers/hash-fixture.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/helpers/hash-function.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/helpers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/project.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":12,"skipped":0,"pct":92.3},"branches":{"total":8,"covered":7,"skipped":0,"pct":87.5}},"packages/winnow/src/filter-and-transform/transforms/reduce-precision.js":{"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/select-fields-to-esri-attributes.js":{"lines":{"total":6,"covered":3,"skipped":0,"pct":50},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":6,"covered":3,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/select-fields.js":{"lines":{"total":4,"covered":2,"skipped":0,"pct":50},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":4,"covered":2,"skipped":0,"pct":50},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/to-esri-attributes.js":{"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":25,"covered":25,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/to-esri-geometry.js":{"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":7,"covered":7,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/to-geohash.js":{"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/filter-and-transform/transforms/to-hash.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}},"packages/winnow/src/helpers/project-coordinates.js":{"lines":{"total":10,"covered":9,"skipped":0,"pct":90},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.9},"branches":{"total":9,"covered":8,"skipped":0,"pct":88.88}},"packages/winnow/src/helpers/transform-coordinates.js":{"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}},"packages/winnow/src/normalize-query-options/aggregates.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/classification.js":{"lines":{"total":23,"covered":21,"skipped":0,"pct":91.3},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":24,"covered":22,"skipped":0,"pct":91.66},"branches":{"total":21,"covered":17,"skipped":0,"pct":80.95}},"packages/winnow/src/normalize-query-options/collection.js":{"lines":{"total":14,"covered":14,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":16,"covered":15,"skipped":0,"pct":93.75},"branches":{"total":11,"covered":9,"skipped":0,"pct":81.81}},"packages/winnow/src/normalize-query-options/date-fields.js":{"lines":{"total":6,"covered":6,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/fields.js":{"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/geometry-filter-spatial-reference.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":19,"covered":19,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/geometry-filter.js":{"lines":{"total":32,"covered":31,"skipped":0,"pct":96.87},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":33,"covered":32,"skipped":0,"pct":96.96},"branches":{"total":26,"covered":22,"skipped":0,"pct":84.61}},"packages/winnow/src/normalize-query-options/group-by.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/id-field.js":{"lines":{"total":20,"covered":20,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":20,"covered":20,"skipped":0,"pct":100},"branches":{"total":21,"covered":20,"skipped":0,"pct":95.23}},"packages/winnow/src/normalize-query-options/index.js":{"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/limit.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":15,"covered":15,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/object-ids.js":{"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/offset.js":{"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/order.js":{"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/output-data-spatial-reference.js":{"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/source-data-spatial-reference.js":{"lines":{"total":10,"covered":9,"skipped":0,"pct":90},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":11,"covered":10,"skipped":0,"pct":90.9},"branches":{"total":10,"covered":8,"skipped":0,"pct":80}},"packages/winnow/src/normalize-query-options/spatial-predicate.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/spatial-reference.js":{"lines":{"total":47,"covered":47,"skipped":0,"pct":100},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":52,"covered":51,"skipped":0,"pct":98.07},"branches":{"total":34,"covered":32,"skipped":0,"pct":94.11}},"packages/winnow/src/normalize-query-options/where.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":9,"covered":9,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/helpers/detect-esri-field-type.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/helpers/get-collection-crs.js":{"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":15,"covered":15,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/helpers/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/normalize-query-options/helpers/normalize-array.js":{"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}},"packages/winnow/src/query/classification-query.js":{"lines":{"total":18,"covered":16,"skipped":0,"pct":88.88},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":19,"covered":17,"skipped":0,"pct":89.47},"branches":{"total":10,"covered":8,"skipped":0,"pct":80}},"packages/winnow/src/query/index.js":{"lines":{"total":1,"covered":0,"skipped":0,"pct":0},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":0,"skipped":0,"pct":0},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/query/normalize-query-input.js":{"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":19,"covered":19,"skipped":0,"pct":100}},"packages/winnow/src/query/package-features.js":{"lines":{"total":13,"covered":11,"skipped":0,"pct":84.61},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":11,"skipped":0,"pct":84.61},"branches":{"total":18,"covered":12,"skipped":0,"pct":66.66}},"packages/winnow/src/query/prepare-query.js":{"lines":{"total":24,"covered":24,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":24,"covered":24,"skipped":0,"pct":100},"branches":{"total":4,"covered":2,"skipped":0,"pct":50}},"packages/winnow/src/query/query.js":{"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":19,"covered":19,"skipped":0,"pct":100},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}},"packages/winnow/src/query/standard-query.js":{"lines":{"total":15,"covered":15,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":15,"covered":15,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}},"packages/winnow/src/query/unique-value-query.js":{"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}},"packages/winnow/src/sql-query-builder/create-sql-params.js":{"lines":{"total":13,"covered":13,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":16,"covered":13,"skipped":0,"pct":81.25}},"packages/winnow/src/sql-query-builder/create-sql-string.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/group-by.js":{"lines":{"total":6,"covered":6,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/index.js":{"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/is-different-crs.js":{"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/order-by.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":13,"covered":13,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/select/aggregation-select.js":{"lines":{"total":12,"covered":10,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":13,"covered":11,"skipped":0,"pct":84.61},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}},"packages/winnow/src/sql-query-builder/select/fields-select-fragment.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":17,"covered":17,"skipped":0,"pct":100},"branches":{"total":14,"covered":13,"skipped":0,"pct":92.85}},"packages/winnow/src/sql-query-builder/select/geometry-select-fragment.js":{"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":11,"covered":11,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/select/index.js":{"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":7,"covered":7,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/where-builder/index.js":{"lines":{"total":78,"covered":78,"skipped":0,"pct":100},"functions":{"total":17,"covered":17,"skipped":0,"pct":100},"statements":{"total":78,"covered":78,"skipped":0,"pct":100},"branches":{"total":50,"covered":50,"skipped":0,"pct":100}},"packages/winnow/src/sql-query-builder/where-builder/to-json-where.js":{"lines":{"total":51,"covered":51,"skipped":0,"pct":100},"functions":{"total":15,"covered":15,"skipped":0,"pct":100},"statements":{"total":55,"covered":55,"skipped":0,"pct":100},"branches":{"total":30,"covered":30,"skipped":0,"pct":100}}}
\ No newline at end of file
+{
+ "total": {
+ "lines": { "total": 2812, "covered": 2713, "skipped": 0, "pct": 96.47 },
+ "statements": {
+ "total": 2889,
+ "covered": 2781,
+ "skipped": 0,
+ "pct": 96.26
+ },
+ "functions": { "total": 518, "covered": 507, "skipped": 0, "pct": 97.87 },
+ "branches": { "total": 1676, "covered": 1539, "skipped": 0, "pct": 91.82 },
+ "branchesTrue": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/cache-memory/src/index.js": {
+ "lines": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/index.js": {
+ "lines": { "total": 56, "covered": 56, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 56, "covered": 56, "skipped": 0, "pct": 100 },
+ "branches": { "total": 22, "covered": 22, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/extend-controller.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/extend-model.js": {
+ "lines": { "total": 115, "covered": 115, "skipped": 0, "pct": 100 },
+ "functions": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "statements": { "total": 115, "covered": 115, "skipped": 0, "pct": 100 },
+ "branches": { "total": 75, "covered": 75, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/index.js": {
+ "lines": { "total": 57, "covered": 57, "skipped": 0, "pct": 100 },
+ "functions": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "statements": { "total": 57, "covered": 57, "skipped": 0, "pct": 100 },
+ "branches": { "total": 22, "covered": 22, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/provider-route.js": {
+ "lines": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/helpers/compose-route-path.js": {
+ "lines": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "branches": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/helpers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/core/src/data-provider/helpers/route-joiner.js": {
+ "lines": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/index.js": {
+ "lines": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/layer-metadata.js": {
+ "lines": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 2, "skipped": 0, "pct": 50 }
+ },
+ "packages/featureserver/src/layers-metadata.js": {
+ "lines": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "branches": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/log-manager.js": {
+ "lines": { "total": 12, "covered": 5, "skipped": 0, "pct": 41.66 },
+ "functions": { "total": 2, "covered": 1, "skipped": 0, "pct": 50 },
+ "statements": { "total": 12, "covered": 5, "skipped": 0, "pct": 41.66 },
+ "branches": { "total": 4, "covered": 0, "skipped": 0, "pct": 0 }
+ },
+ "packages/featureserver/src/metadata-defaults.js": {
+ "lines": { "total": 29, "covered": 29, "skipped": 0, "pct": 100 },
+ "functions": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "statements": { "total": 29, "covered": 29, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/queryRelatedRecords.js": {
+ "lines": { "total": 27, "covered": 4, "skipped": 0, "pct": 14.81 },
+ "functions": { "total": 4, "covered": 0, "skipped": 0, "pct": 0 },
+ "statements": { "total": 27, "covered": 4, "skipped": 0, "pct": 14.81 },
+ "branches": { "total": 16, "covered": 0, "skipped": 0, "pct": 0 }
+ },
+ "packages/featureserver/src/rest-info-route-handler.js": {
+ "lines": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "branches": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/route.js": {
+ "lines": { "total": 56, "covered": 48, "skipped": 0, "pct": 85.71 },
+ "functions": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "statements": { "total": 56, "covered": 48, "skipped": 0, "pct": 85.71 },
+ "branches": { "total": 34, "covered": 26, "skipped": 0, "pct": 76.47 }
+ },
+ "packages/featureserver/src/server-info-route-handler.js": {
+ "lines": { "total": 54, "covered": 53, "skipped": 0, "pct": 98.14 },
+ "functions": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "statements": { "total": 54, "covered": 53, "skipped": 0, "pct": 98.14 },
+ "branches": { "total": 46, "covered": 46, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/generate-renderer/color-ramp.js": {
+ "lines": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "branches": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/generate-renderer/create-symbol.js": {
+ "lines": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/generate-renderer/index.js": {
+ "lines": { "total": 42, "covered": 42, "skipped": 0, "pct": 100 },
+ "functions": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "statements": { "total": 43, "covered": 43, "skipped": 0, "pct": 100 },
+ "branches": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/generate-renderer/validate-classification-definition.js": {
+ "lines": { "total": 32, "covered": 32, "skipped": 0, "pct": 100 },
+ "functions": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "statements": { "total": 32, "covered": 32, "skipped": 0, "pct": 100 },
+ "branches": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/data-type-utils.js": {
+ "lines": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/errors.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/esri-units-lookup.js": {
+ "lines": { "total": 13, "covered": 12, "skipped": 0, "pct": 92.3 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 12, "skipped": 0, "pct": 92.3 },
+ "branches": { "total": 16, "covered": 15, "skipped": 0, "pct": 93.75 }
+ },
+ "packages/featureserver/src/helpers/feature-layer-metadata.js": {
+ "lines": { "total": 49, "covered": 46, "skipped": 0, "pct": 93.87 },
+ "functions": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "statements": { "total": 49, "covered": 46, "skipped": 0, "pct": 93.87 },
+ "branches": { "total": 19, "covered": 14, "skipped": 0, "pct": 73.68 }
+ },
+ "packages/featureserver/src/helpers/get-collection-crs.js": {
+ "lines": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/get-geometry-type-from-geojson.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/get-spatial-reference.js": {
+ "lines": { "total": 11, "covered": 10, "skipped": 0, "pct": 90.9 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 11, "skipped": 0, "pct": 84.61 },
+ "branches": { "total": 14, "covered": 11, "skipped": 0, "pct": 78.57 }
+ },
+ "packages/featureserver/src/helpers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/is-geojson-table.js": {
+ "lines": { "total": 10, "covered": 9, "skipped": 0, "pct": 90 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 10, "skipped": 0, "pct": 90.9 },
+ "branches": { "total": 12, "covered": 7, "skipped": 0, "pct": 58.33 }
+ },
+ "packages/featureserver/src/helpers/normalize-extent.js": {
+ "lines": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/normalize-input-data.js": {
+ "lines": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "branches": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/normalize-request-params.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "branches": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/normalize-spatial-reference.js": {
+ "lines": { "total": 44, "covered": 44, "skipped": 0, "pct": 100 },
+ "functions": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "statements": { "total": 46, "covered": 45, "skipped": 0, "pct": 97.82 },
+ "branches": { "total": 34, "covered": 31, "skipped": 0, "pct": 91.17 }
+ },
+ "packages/featureserver/src/helpers/renderers.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/server-metadata.js": {
+ "lines": { "total": 25, "covered": 25, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 25, "covered": 25, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/table-layer-metadata.js": {
+ "lines": { "total": 77, "covered": 76, "skipped": 0, "pct": 98.7 },
+ "functions": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "statements": { "total": 77, "covered": 76, "skipped": 0, "pct": 98.7 },
+ "branches": { "total": 49, "covered": 44, "skipped": 0, "pct": 89.79 }
+ },
+ "packages/featureserver/src/helpers/validate-inputs.js": {
+ "lines": { "total": 24, "covered": 24, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 24, "covered": 24, "skipped": 0, "pct": 100 },
+ "branches": { "total": 9, "covered": 8, "skipped": 0, "pct": 88.88 }
+ },
+ "packages/featureserver/src/helpers/fields/constants.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/fields/esri-type-utils.js": {
+ "lines": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/fields/field-classes.js": {
+ "lines": { "total": 51, "covered": 50, "skipped": 0, "pct": 98.03 },
+ "functions": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "statements": { "total": 51, "covered": 50, "skipped": 0, "pct": 98.03 },
+ "branches": { "total": 20, "covered": 17, "skipped": 0, "pct": 85 }
+ },
+ "packages/featureserver/src/helpers/fields/fields.js": {
+ "lines": { "total": 33, "covered": 32, "skipped": 0, "pct": 96.96 },
+ "functions": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "statements": { "total": 35, "covered": 34, "skipped": 0, "pct": 97.14 },
+ "branches": { "total": 24, "covered": 22, "skipped": 0, "pct": 91.66 }
+ },
+ "packages/featureserver/src/helpers/fields/index.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/fields/layer-fields.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/helpers/fields/query-fields.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 4, "skipped": 0, "pct": 66.66 }
+ },
+ "packages/featureserver/src/helpers/fields/statistics-fields.js": {
+ "lines": { "total": 36, "covered": 35, "skipped": 0, "pct": 97.22 },
+ "functions": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "statements": { "total": 37, "covered": 36, "skipped": 0, "pct": 97.29 },
+ "branches": { "total": 25, "covered": 20, "skipped": 0, "pct": 80 }
+ },
+ "packages/featureserver/src/query/filter-and-transform.js": {
+ "lines": { "total": 40, "covered": 40, "skipped": 0, "pct": 100 },
+ "functions": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "statements": { "total": 40, "covered": 40, "skipped": 0, "pct": 100 },
+ "branches": { "total": 28, "covered": 28, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/query/index.js": {
+ "lines": { "total": 44, "covered": 44, "skipped": 0, "pct": 100 },
+ "functions": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "statements": { "total": 44, "covered": 44, "skipped": 0, "pct": 100 },
+ "branches": { "total": 35, "covered": 33, "skipped": 0, "pct": 94.28 }
+ },
+ "packages/featureserver/src/query/log-provider-data-warnings.js": {
+ "lines": { "total": 36, "covered": 35, "skipped": 0, "pct": 97.22 },
+ "functions": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "statements": { "total": 36, "covered": 35, "skipped": 0, "pct": 97.22 },
+ "branches": { "total": 47, "covered": 46, "skipped": 0, "pct": 97.87 }
+ },
+ "packages/featureserver/src/query/render-count-and-extent.js": {
+ "lines": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/query/render-features.js": {
+ "lines": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 },
+ "branches": { "total": 24, "covered": 24, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/query/render-precalculated-statistics.js": {
+ "lines": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/query/render-statistics.js": {
+ "lines": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 2, "skipped": 0, "pct": 50 }
+ },
+ "packages/featureserver/src/query/validate-query-request-parameters.js": {
+ "lines": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/general-response-handler.js": {
+ "lines": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/query-response-handler.js": {
+ "lines": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-callback.js": {
+ "lines": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pretty-json.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pbf/get-geometry-transform.js": {
+ "lines": { "total": 25, "covered": 25, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 25, "covered": 25, "skipped": 0, "pct": 100 },
+ "branches": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pbf/index.js": {
+ "lines": { "total": 29, "covered": 29, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 29, "covered": 29, "skipped": 0, "pct": 100 },
+ "branches": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pbf/transform-features-for-pbf.js": {
+ "lines": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pbf/transform-to-pbf-attributes.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/featureserver/src/response-handlers/helpers/send-pbf/transform-to-pbf-geometry.js": {
+ "lines": { "total": 63, "covered": 63, "skipped": 0, "pct": 100 },
+ "functions": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "statements": { "total": 66, "covered": 66, "skipped": 0, "pct": 100 },
+ "branches": { "total": 22, "covered": 22, "skipped": 0, "pct": 100 }
+ },
+ "packages/logger/src/index.js": {
+ "lines": { "total": 31, "covered": 12, "skipped": 0, "pct": 38.7 },
+ "functions": { "total": 5, "covered": 2, "skipped": 0, "pct": 40 },
+ "statements": { "total": 32, "covered": 12, "skipped": 0, "pct": 37.5 },
+ "branches": { "total": 22, "covered": 7, "skipped": 0, "pct": 31.81 }
+ },
+ "packages/output-geoservices/src/index.js": {
+ "lines": { "total": 253, "covered": 253, "skipped": 0, "pct": 100 },
+ "functions": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "statements": { "total": 253, "covered": 253, "skipped": 0, "pct": 100 },
+ "branches": { "total": 51, "covered": 51, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/errors.js": {
+ "lines": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 1, "skipped": 0, "pct": 50 }
+ },
+ "packages/winnow/src/index.js": {
+ "lines": { "total": 4, "covered": 0, "skipped": 0, "pct": 0 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 0, "skipped": 0, "pct": 0 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/log-manager.js": {
+ "lines": { "total": 10, "covered": 4, "skipped": 0, "pct": 40 },
+ "functions": { "total": 2, "covered": 1, "skipped": 0, "pct": 50 },
+ "statements": { "total": 10, "covered": 4, "skipped": 0, "pct": 40 },
+ "branches": { "total": 4, "covered": 0, "skipped": 0, "pct": 0 }
+ },
+ "packages/winnow/src/calculate-class-breaks/calculate-std-dev-intervals.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/calculate-class-breaks/filter-and-validate-classification-features.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/calculate-class-breaks/index.js": {
+ "lines": { "total": 31, "covered": 28, "skipped": 0, "pct": 90.32 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 31, "covered": 28, "skipped": 0, "pct": 90.32 },
+ "branches": { "total": 20, "covered": 16, "skipped": 0, "pct": 80 }
+ },
+ "packages/winnow/src/calculate-class-breaks/normalize-classification-values.js": {
+ "lines": { "total": 49, "covered": 49, "skipped": 0, "pct": 100 },
+ "functions": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "statements": { "total": 49, "covered": 49, "skipped": 0, "pct": 100 },
+ "branches": { "total": 36, "covered": 34, "skipped": 0, "pct": 94.44 }
+ },
+ "packages/winnow/src/calculate-class-breaks/transform-class-breaks-to-ranges.js": {
+ "lines": { "total": 28, "covered": 28, "skipped": 0, "pct": 100 },
+ "functions": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "statements": { "total": 30, "covered": 29, "skipped": 0, "pct": 96.66 },
+ "branches": { "total": 13, "covered": 12, "skipped": 0, "pct": 92.3 }
+ },
+ "packages/winnow/src/filter-and-transform/filter-and-transform.js": {
+ "lines": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/prepare-filter-and-transform.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 18, "skipped": 0, "pct": 94.73 },
+ "branches": { "total": 18, "covered": 17, "skipped": 0, "pct": 94.44 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/contains.js": {
+ "lines": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/envelope-intersects.js": {
+ "lines": { "total": 18, "covered": 18, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 20, "covered": 19, "skipped": 0, "pct": 95 },
+ "branches": { "total": 17, "covered": 15, "skipped": 0, "pct": 88.23 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/hashed-objectid-comparator.js": {
+ "lines": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 21, "covered": 21, "skipped": 0, "pct": 100 },
+ "branches": { "total": 26, "covered": 26, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/intersects.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "branches": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/filters/within.js": {
+ "lines": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "branches": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/helpers/create-integer-hash.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/helpers/hash-fixture.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/helpers/hash-function.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/helpers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/project.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 12, "skipped": 0, "pct": 92.3 },
+ "branches": { "total": 8, "covered": 7, "skipped": 0, "pct": 87.5 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/reduce-precision.js": {
+ "lines": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/select-fields-to-esri-attributes.js": {
+ "lines": { "total": 6, "covered": 3, "skipped": 0, "pct": 50 },
+ "functions": { "total": 1, "covered": 0, "skipped": 0, "pct": 0 },
+ "statements": { "total": 6, "covered": 3, "skipped": 0, "pct": 50 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/select-fields.js": {
+ "lines": { "total": 4, "covered": 2, "skipped": 0, "pct": 50 },
+ "functions": { "total": 1, "covered": 0, "skipped": 0, "pct": 0 },
+ "statements": { "total": 4, "covered": 2, "skipped": 0, "pct": 50 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/to-esri-attributes.js": {
+ "lines": { "total": 26, "covered": 26, "skipped": 0, "pct": 100 },
+ "functions": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "statements": { "total": 26, "covered": 26, "skipped": 0, "pct": 100 },
+ "branches": { "total": 25, "covered": 25, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/to-esri-geometry.js": {
+ "lines": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "branches": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/to-geohash.js": {
+ "lines": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/filter-and-transform/transforms/to-hash.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "branches": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/helpers/project-coordinates.js": {
+ "lines": { "total": 10, "covered": 9, "skipped": 0, "pct": 90 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 10, "skipped": 0, "pct": 90.9 },
+ "branches": { "total": 9, "covered": 8, "skipped": 0, "pct": 88.88 }
+ },
+ "packages/winnow/src/helpers/transform-coordinates.js": {
+ "lines": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "branches": { "total": 3, "covered": 2, "skipped": 0, "pct": 66.66 }
+ },
+ "packages/winnow/src/normalize-query-options/aggregates.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/classification.js": {
+ "lines": { "total": 24, "covered": 22, "skipped": 0, "pct": 91.66 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 24, "covered": 22, "skipped": 0, "pct": 91.66 },
+ "branches": { "total": 21, "covered": 17, "skipped": 0, "pct": 80.95 }
+ },
+ "packages/winnow/src/normalize-query-options/collection.js": {
+ "lines": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 16, "covered": 15, "skipped": 0, "pct": 93.75 },
+ "branches": { "total": 11, "covered": 9, "skipped": 0, "pct": 81.81 }
+ },
+ "packages/winnow/src/normalize-query-options/date-fields.js": {
+ "lines": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/fields.js": {
+ "lines": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/geometry-filter-spatial-reference.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "branches": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/geometry-filter.js": {
+ "lines": { "total": 32, "covered": 31, "skipped": 0, "pct": 96.87 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 33, "covered": 32, "skipped": 0, "pct": 96.96 },
+ "branches": { "total": 26, "covered": 22, "skipped": 0, "pct": 84.61 }
+ },
+ "packages/winnow/src/normalize-query-options/group-by.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/id-field.js": {
+ "lines": { "total": 20, "covered": 20, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 20, "covered": 20, "skipped": 0, "pct": 100 },
+ "branches": { "total": 21, "covered": 20, "skipped": 0, "pct": 95.23 }
+ },
+ "packages/winnow/src/normalize-query-options/index.js": {
+ "lines": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/limit.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/object-ids.js": {
+ "lines": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/offset.js": {
+ "lines": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/order.js": {
+ "lines": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/output-data-spatial-reference.js": {
+ "lines": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 14, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/source-data-spatial-reference.js": {
+ "lines": { "total": 10, "covered": 9, "skipped": 0, "pct": 90 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 10, "skipped": 0, "pct": 90.9 },
+ "branches": { "total": 10, "covered": 8, "skipped": 0, "pct": 80 }
+ },
+ "packages/winnow/src/normalize-query-options/spatial-predicate.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/spatial-reference.js": {
+ "lines": { "total": 47, "covered": 47, "skipped": 0, "pct": 100 },
+ "functions": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 },
+ "statements": { "total": 52, "covered": 51, "skipped": 0, "pct": 98.07 },
+ "branches": { "total": 34, "covered": 32, "skipped": 0, "pct": 94.11 }
+ },
+ "packages/winnow/src/normalize-query-options/where.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "branches": { "total": 9, "covered": 9, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/helpers/detect-esri-field-type.js": {
+ "lines": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/helpers/get-collection-crs.js": {
+ "lines": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/helpers/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/normalize-query-options/helpers/normalize-array.js": {
+ "lines": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "branches": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/query/classification-query.js": {
+ "lines": { "total": 19, "covered": 17, "skipped": 0, "pct": 89.47 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 17, "skipped": 0, "pct": 89.47 },
+ "branches": { "total": 10, "covered": 8, "skipped": 0, "pct": 80 }
+ },
+ "packages/winnow/src/query/index.js": {
+ "lines": { "total": 1, "covered": 0, "skipped": 0, "pct": 0 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 0, "skipped": 0, "pct": 0 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/query/normalize-query-input.js": {
+ "lines": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 23, "covered": 23, "skipped": 0, "pct": 100 },
+ "branches": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/query/package-features.js": {
+ "lines": { "total": 13, "covered": 11, "skipped": 0, "pct": 84.61 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 11, "skipped": 0, "pct": 84.61 },
+ "branches": { "total": 18, "covered": 12, "skipped": 0, "pct": 66.66 }
+ },
+ "packages/winnow/src/query/prepare-query.js": {
+ "lines": { "total": 24, "covered": 24, "skipped": 0, "pct": 100 },
+ "functions": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 },
+ "statements": { "total": 24, "covered": 24, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 2, "skipped": 0, "pct": 50 }
+ },
+ "packages/winnow/src/query/query.js": {
+ "lines": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 19, "covered": 19, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 4, "skipped": 0, "pct": 80 }
+ },
+ "packages/winnow/src/query/standard-query.js": {
+ "lines": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "branches": { "total": 8, "covered": 8, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/query/unique-value-query.js": {
+ "lines": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 4, "skipped": 0, "pct": 80 }
+ },
+ "packages/winnow/src/sql-query-builder/create-sql-params.js": {
+ "lines": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "functions": { "total": 3, "covered": 3, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 16, "covered": 13, "skipped": 0, "pct": 81.25 }
+ },
+ "packages/winnow/src/sql-query-builder/create-sql-string.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/group-by.js": {
+ "lines": { "total": 6, "covered": 6, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 },
+ "branches": { "total": 5, "covered": 5, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/index.js": {
+ "lines": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "functions": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 },
+ "statements": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "branches": { "total": 0, "covered": 0, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/is-different-crs.js": {
+ "lines": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "functions": { "total": 1, "covered": 1, "skipped": 0, "pct": 100 },
+ "statements": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "branches": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/order-by.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 13, "skipped": 0, "pct": 100 },
+ "branches": { "total": 10, "covered": 10, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/select/aggregation-select.js": {
+ "lines": { "total": 12, "covered": 10, "skipped": 0, "pct": 83.33 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 13, "covered": 11, "skipped": 0, "pct": 84.61 },
+ "branches": { "total": 6, "covered": 3, "skipped": 0, "pct": 50 }
+ },
+ "packages/winnow/src/sql-query-builder/select/fields-select-fragment.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 4, "covered": 4, "skipped": 0, "pct": 100 },
+ "statements": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "branches": { "total": 14, "covered": 13, "skipped": 0, "pct": 92.85 }
+ },
+ "packages/winnow/src/sql-query-builder/select/geometry-select-fragment.js": {
+ "lines": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 16, "covered": 16, "skipped": 0, "pct": 100 },
+ "branches": { "total": 11, "covered": 11, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/select/index.js": {
+ "lines": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "functions": { "total": 2, "covered": 2, "skipped": 0, "pct": 100 },
+ "statements": { "total": 12, "covered": 12, "skipped": 0, "pct": 100 },
+ "branches": { "total": 7, "covered": 7, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/where-builder/index.js": {
+ "lines": { "total": 78, "covered": 78, "skipped": 0, "pct": 100 },
+ "functions": { "total": 17, "covered": 17, "skipped": 0, "pct": 100 },
+ "statements": { "total": 78, "covered": 78, "skipped": 0, "pct": 100 },
+ "branches": { "total": 50, "covered": 50, "skipped": 0, "pct": 100 }
+ },
+ "packages/winnow/src/sql-query-builder/where-builder/to-json-where.js": {
+ "lines": { "total": 52, "covered": 52, "skipped": 0, "pct": 100 },
+ "functions": { "total": 15, "covered": 15, "skipped": 0, "pct": 100 },
+ "statements": { "total": 55, "covered": 55, "skipped": 0, "pct": 100 },
+ "branches": { "total": 30, "covered": 30, "skipped": 0, "pct": 100 }
+ }
+}
diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml
index 9053bc03d..cb9ece463 100644
--- a/.github/workflows/pr-tests.yml
+++ b/.github/workflows/pr-tests.yml
@@ -5,11 +5,13 @@ on:
branches:
- master
- beta
+ - next
paths:
- "./.github/**.yml"
- "**/packages/**.js"
- "**/packages/**/package.json"
- "test/**/*.js"
+ - "ci/**/*.js"
jobs:
pr-tests:
diff --git a/.husky/pre-push b/.husky/pre-push
new file mode 100755
index 000000000..4bfa57440
--- /dev/null
+++ b/.husky/pre-push
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+echo "\nRunning code linting...\n"
+npm run lint
\ No newline at end of file
diff --git a/ci/format-branch-coverage-changes.js b/ci/format-branch-coverage-changes.js
index dfa9ee7a5..867c8a6e2 100644
--- a/ci/format-branch-coverage-changes.js
+++ b/ci/format-branch-coverage-changes.js
@@ -1,7 +1,6 @@
const { writeFileSync, existsSync } = require('fs');
const json2md = require('json2md');
const coverageSummary = require('../.coverage_json/coverage-summary.json');
-
const markdownFilePath = '.branch-coverage-changes.md';
if (!existsSync('.coverage_changes_json/coverage-summary.json')) {
@@ -16,6 +15,7 @@ if (!existsSync('.coverage_changes_json/coverage-summary.json')) {
}
const coverageChangesSummary = require('../.coverage_changes_json/coverage-summary.json');
+
const rows = Object.entries(coverageChangesSummary)
.filter(([filePath]) => {
return filePath !== 'total';
@@ -23,22 +23,35 @@ const rows = Object.entries(coverageChangesSummary)
.map(([filePath, changesCoverage]) => {
const packageFilePath = `packages${filePath.split('packages')[1]}`;
const masterCoverage = coverageSummary[packageFilePath];
+
return [
packageFilePath,
- formatCovComparison(changesCoverage.statements.pct, masterCoverage?.statements?.pct || 0),
- formatCovComparison(changesCoverage.branches.pct, masterCoverage?.branches?.pct || 0),
- formatCovComparison(changesCoverage.functions.pct, masterCoverage?.functions?.pct || 0),
- formatCovComparison(changesCoverage.lines.pct, masterCoverage?.lines?.pct || 0),
+ formatCovComparison(
+ changesCoverage.statements.pct,
+ masterCoverage?.statements?.pct || null,
+ ),
+ formatCovComparison(
+ changesCoverage.branches.pct,
+ masterCoverage?.branches?.pct || null,
+ ),
+ formatCovComparison(
+ changesCoverage.functions.pct,
+ masterCoverage?.functions?.pct || null,
+ ),
+ formatCovComparison(
+ changesCoverage.lines.pct,
+ masterCoverage?.lines?.pct || null,
+ ),
];
});
-const headers = ['File Path', 'Statements', 'Branches', 'Functions', 'Lines'];
+const headers = ['File Path', 'Statements', 'Branches', 'Functions', ' Lines '];
const table = json2md([{ h2: 'Coverage Report (change vs master)' }, { table: { headers, rows } }]);
const alignedTable = table.replace(
- '| --------- | ---------- | -------- | --------- | ----- |',
- '| :--------- | ----------: | --------: | ---------: | -----: |',
+ '| --------- | --------- | -------- | --------- | --------- |',
+ '| :--------- | ---------: | --------: | ---------: | ---------: |',
);
const markdown = `[g-img]: https://github.com/koopjs/koop/assets/4369192/fd82d4b7-7f6e-448c-a56c-82ac6781a629
@@ -52,25 +65,29 @@ ${alignedTable}`;
writeFileSync(markdownFilePath, markdown, 'utf8');
function formatCovComparison(changePct, mainPct) {
- return `${formatCovPct(changePct)} vs ${formatCovPct(mainPct)}`;
+ return `${formatCovPct(changePct)}
vs
${formatCovPct(mainPct)}`;
}
function formatCovPct(pct) {
+ if (!pct) {
+ return '(NA)';
+ }
+
if (pct === 100) {
- return `${pct} ![green][g-img]`;
+ return `${pct.toFixed(1)} ![green][g-img]`;
}
if (pct > 90) {
- return `${pct} ![yellowGreen][yg-img]`;
+ return `${pct.toFixed(1)} ![yellowGreen][yg-img]`;
}
if (pct > 80) {
- return `${pct} ![yellow][y-img]`;
+ return `${pct.toFixed(1)} ![yellow][y-img]`;
}
if (pct > 70) {
- return `${pct} ![orange][o-img]`;
+ return `${pct.toFixed(1)} ![orange][o-img]`;
}
- return `${pct} ![red][r-img]`;
+ return `${pct.toFixed(1)} ![red][r-img]`;
}
diff --git a/packages/featureserver/coverage-unit.svg b/packages/featureserver/coverage-unit.svg
index bdcaf392d..ae751e733 100644
--- a/packages/featureserver/coverage-unit.svg
+++ b/packages/featureserver/coverage-unit.svg
@@ -1,5 +1,5 @@
-