@stefanaki/wfs-ts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +129 -0
  2. package/dist/index.cjs +2357 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +337 -0
  5. package/dist/index.d.ts +337 -0
  6. package/dist/index.js +2314 -0
  7. package/dist/index.js.map +1 -0
  8. package/namespaces/wfs11/schemas.opengis.net/filter/1.1.0/expr.xsd +67 -0
  9. package/namespaces/wfs11/schemas.opengis.net/filter/1.1.0/filter.xsd +265 -0
  10. package/namespaces/wfs11/schemas.opengis.net/filter/1.1.0/filterAll.xsd +26 -0
  11. package/namespaces/wfs11/schemas.opengis.net/filter/1.1.0/filterCapabilities.xsd +171 -0
  12. package/namespaces/wfs11/schemas.opengis.net/filter/1.1.0/sort.xsd +47 -0
  13. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/basicTypes.xsd +279 -0
  14. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/coordinateOperations.xsd +790 -0
  15. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/coordinateReferenceSystems.xsd +430 -0
  16. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/coordinateSystems.xsd +409 -0
  17. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/coverage.xsd +452 -0
  18. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/dataQuality.xsd +130 -0
  19. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/datums.xsd +485 -0
  20. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/defaultStyle.xsd +455 -0
  21. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/dictionary.xsd +138 -0
  22. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/direction.xsd +73 -0
  23. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/dynamicFeature.xsd +116 -0
  24. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/feature.xsd +200 -0
  25. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/geometryAggregates.xsd +431 -0
  26. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/geometryBasic0d1d.xsd +603 -0
  27. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/geometryBasic2d.xsd +214 -0
  28. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/geometryComplexes.xsd +142 -0
  29. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/geometryPrimitives.xsd +1610 -0
  30. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/gml.xsd +22 -0
  31. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/gmlBase.xsd +295 -0
  32. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/grids.xsd +77 -0
  33. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/measures.xsd +201 -0
  34. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/observation.xsd +97 -0
  35. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/referenceSystems.xsd +212 -0
  36. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/temporal.xsd +333 -0
  37. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/temporalReferenceSystems.xsd +252 -0
  38. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/temporalTopology.xsd +187 -0
  39. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/topology.xsd +460 -0
  40. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/units.xsd +171 -0
  41. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/base/valueObjects.xsd +362 -0
  42. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/smil/smil20-language.xsd +117 -0
  43. package/namespaces/wfs11/schemas.opengis.net/gml/3.1.1/smil/smil20.xsd +234 -0
  44. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/ows19115subset.xsd +223 -0
  45. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsAll.xsd +20 -0
  46. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsCommon.xsd +156 -0
  47. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsDataIdentification.xsd +113 -0
  48. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd +68 -0
  49. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsGetCapabilities.xsd +109 -0
  50. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsOperationsMetadata.xsd +162 -0
  51. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsServiceIdentification.xsd +56 -0
  52. package/namespaces/wfs11/schemas.opengis.net/ows/1.0.0/owsServiceProvider.xsd +47 -0
  53. package/namespaces/wfs11/schemas.opengis.net/wfs/1.1.0/wfs.xsd +1867 -0
  54. package/namespaces/wfs11/www.w3.org/1999/xlink.xsd +270 -0
  55. package/namespaces/wfs11/www.w3.org/2001/xml.xsd +287 -0
  56. package/namespaces/wfs11/www.w3.org/2009/01/xml.xsd +286 -0
  57. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/expr.xsd +44 -0
  58. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/filter.xsd +396 -0
  59. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/filterAll.xsd +23 -0
  60. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/filterCapabilities.xsd +286 -0
  61. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/query.xsd +70 -0
  62. package/namespaces/wfs20/schemas.opengis.net/filter/2.0/sort.xsd +49 -0
  63. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/basicTypes.xsd +268 -0
  64. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/coordinateOperations.xsd +525 -0
  65. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/coordinateReferenceSystems.xsd +373 -0
  66. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/coordinateSystems.xsd +297 -0
  67. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/coverage.xsd +292 -0
  68. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/datums.xsd +287 -0
  69. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/deprecatedTypes.xsd +1133 -0
  70. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/dictionary.xsd +90 -0
  71. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/direction.xsd +84 -0
  72. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/dynamicFeature.xsd +109 -0
  73. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/feature.xsd +94 -0
  74. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/geometryAggregates.xsd +197 -0
  75. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/geometryBasic0d1d.xsd +277 -0
  76. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/geometryBasic2d.xsd +128 -0
  77. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/geometryComplexes.xsd +95 -0
  78. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/geometryPrimitives.xsd +850 -0
  79. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/gml.xsd +20 -0
  80. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/gmlBase.xsd +185 -0
  81. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/grids.xsd +64 -0
  82. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/measures.xsd +68 -0
  83. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/observation.xsd +95 -0
  84. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/referenceSystems.xsd +70 -0
  85. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/temporal.xsd +269 -0
  86. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/temporalReferenceSystems.xsd +189 -0
  87. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/temporalTopology.xsd +119 -0
  88. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/topology.xsd +386 -0
  89. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/units.xsd +162 -0
  90. package/namespaces/wfs20/schemas.opengis.net/gml/3.2.1/valueObjects.xsd +205 -0
  91. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gco/basicTypes.xsd +431 -0
  92. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gco/gco.xsd +12 -0
  93. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gco/gcoBase.xsd +63 -0
  94. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/applicationSchema.xsd +43 -0
  95. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/citation.xsd +276 -0
  96. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/constraints.xsd +107 -0
  97. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/content.xsd +190 -0
  98. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/dataQuality.xsd +556 -0
  99. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/distribution.xsd +203 -0
  100. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/extent.xsd +206 -0
  101. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/freeText.xsd +123 -0
  102. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd +12 -0
  103. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/identification.xsd +349 -0
  104. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/maintenance.xsd +87 -0
  105. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/metadataApplication.xsd +176 -0
  106. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/metadataEntity.xsd +71 -0
  107. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/metadataExtension.xsd +100 -0
  108. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/portrayalCatalogue.xsd +37 -0
  109. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/referenceSystem.xsd +101 -0
  110. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gmd/spatialRepresentation.xsd +238 -0
  111. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gsr/gsr.xsd +12 -0
  112. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gsr/spatialReferencing.xsd +25 -0
  113. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gss/geometry.xsd +36 -0
  114. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gss/gss.xsd +12 -0
  115. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gts/gts.xsd +12 -0
  116. package/namespaces/wfs20/schemas.opengis.net/iso/19139/20070417/gts/temporalObjects.xsd +35 -0
  117. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/ows19115subset.xsd +236 -0
  118. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsAll.xsd +23 -0
  119. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsCommon.xsd +158 -0
  120. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsContents.xsd +87 -0
  121. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsDataIdentification.xsd +128 -0
  122. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsDomainType.xsd +280 -0
  123. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd +77 -0
  124. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsGetCapabilities.xsd +113 -0
  125. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsGetResourceByID.xsd +52 -0
  126. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsInputOutputData.xsd +60 -0
  127. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsManifest.xsd +125 -0
  128. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsOperationsMetadata.xsd +141 -0
  129. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsServiceIdentification.xsd +61 -0
  130. package/namespaces/wfs20/schemas.opengis.net/ows/1.1.0/owsServiceProvider.xsd +48 -0
  131. package/namespaces/wfs20/schemas.opengis.net/wfs/2.0/wfs.xsd +786 -0
  132. package/namespaces/wfs20/www.w3.org/1999/xlink.xsd +270 -0
  133. package/namespaces/wfs20/www.w3.org/2001/xml.xsd +287 -0
  134. package/namespaces/wfs20/www.w3.org/2009/01/xml.xsd +286 -0
  135. package/package.json +52 -0
package/README.md ADDED
@@ -0,0 +1,129 @@
1
+ # wfs-ts
2
+
3
+ High-level TypeScript SDK for OGC WFS services (WFS `2.0.x` and `1.1.0`) with a GeoJSON-first API.
4
+
5
+ ## Features
6
+
7
+ - Class-based API: `WfsClient`
8
+ - WFS operations:
9
+ - `getCapabilities`
10
+ - `describeFeatureType`
11
+ - `getFeature`
12
+ - `getFeatureWithLock`
13
+ - `getPropertyValue`
14
+ - `transaction`
15
+ - `lockFeature`
16
+ - `listStoredQueries`
17
+ - `describeStoredQueries`
18
+ - `createStoredQuery`
19
+ - `dropStoredQuery`
20
+ - GET query params and POST XML bindings
21
+ - GeoJSON-first responses with XML/GML fallback parser
22
+ - Typed OWS exceptions (`OwsExceptionError`)
23
+ - GeoServer vendor support (`cql_filter`, `viewParams`, `format_options`) + XML hints
24
+ - Filter AST + compiler for FES 2.0 and OGC Filter 1.1
25
+
26
+ ## Install
27
+
28
+ `axios` is a peer dependency.
29
+
30
+ ```bash
31
+ pnpm add @stefanaki/wfs-ts axios
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ ```ts
37
+ import { WfsClient } from "@stefanaki/wfs-ts";
38
+
39
+ const client = new WfsClient({
40
+ baseUrl: "https://example.com/geoserver/wfs",
41
+ versionStrategy: "auto",
42
+ geoserver: { enabled: true }
43
+ });
44
+
45
+ const roads = await client.getFeature({
46
+ typeNames: ["topp:roads"],
47
+ count: 100,
48
+ geoserver: {
49
+ cqlFilter: "POPULATION > 1000"
50
+ }
51
+ });
52
+ ```
53
+
54
+ ## Typed Feature Generics
55
+
56
+ ```ts
57
+ import type { Point, GeoJsonProperties } from "geojson";
58
+
59
+ type CityProps = GeoJsonProperties & {
60
+ name: string;
61
+ population: number;
62
+ };
63
+
64
+ const cities = await client.getFeature<Point, CityProps>({
65
+ typeNames: ["topp:cities"]
66
+ });
67
+ ```
68
+
69
+ ## Scripts
70
+
71
+ ```bash
72
+ pnpm build
73
+ pnpm test
74
+ pnpm schemas:sync
75
+ pnpm schemas:validate
76
+ pnpm types:validate
77
+ ```
78
+
79
+ ## Release
80
+
81
+ Publishing is automated by GitHub Actions when a version tag is pushed.
82
+
83
+
84
+ ## Schema Assets
85
+
86
+ - Seed schema files live in `namespaces/`.
87
+ - Downloaded complete dependency trees are stored under:
88
+ - `namespaces/wfs20/`
89
+ - `namespaces/wfs11/`
90
+
91
+ Sync and validation scripts are in `scripts/`.
92
+
93
+ ## Integration Testing (GeoServer)
94
+
95
+ The integration stack starts:
96
+
97
+ - PostGIS seeded with real vector data in `integration.world_cities`
98
+ - GeoServer
99
+ - A one-shot setup container that configures workspace/datastore/layer publishing
100
+
101
+ 1. Start integration services:
102
+
103
+ ```bash
104
+ docker compose -f test/integration/docker-compose.yml up -d
105
+ ```
106
+
107
+ 2. Run integration tests:
108
+
109
+ ```bash
110
+ RUN_GEOSERVER_TESTS=1 \
111
+ GEOSERVER_WFS_URL=http://localhost:8080/geoserver/wfs \
112
+ GEOSERVER_ADMIN_USER=admin \
113
+ GEOSERVER_ADMIN_PASSWORD=geoserver \
114
+ GEOSERVER_TYPENAME=integration:world_cities \
115
+ pnpm test:integration
116
+ ```
117
+
118
+ Environment variables:
119
+
120
+ - `RUN_GEOSERVER_TESTS=1` enables integration tests
121
+ - `GEOSERVER_WFS_URL` defaults to `http://localhost:8080/geoserver/wfs`
122
+ - `GEOSERVER_ADMIN_USER` defaults to `admin`
123
+ - `GEOSERVER_ADMIN_PASSWORD` defaults to `geoserver`
124
+ - `GEOSERVER_TYPENAME` defaults to `integration:world_cities`
125
+
126
+ Notes:
127
+
128
+ - The WFS `2.0.2` client path is tested against GeoServer, but GeoServer capabilities may report `2.0.0`; tests should not assert an exact capabilities version string.
129
+ - WFS `1.1.0` intentionally tests stored-query methods (`listStoredQueries`, `describeStoredQueries`, `createStoredQuery`, `dropStoredQuery`) as expected `OperationNotSupported` errors, since these are not part of WFS `1.1.0`.