@opengis/gis 0.2.174 → 0.2.176

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 (158) hide show
  1. package/README.md +181 -181
  2. package/dist/{CardIcon-Cg8bUM4G.js → CardIcon-c1Q2M3wQ.js} +1 -1
  3. package/dist/{EntityTablePage-DHQGlLRk.js → EntityTablePage-B5gpkH4S.js} +2 -2
  4. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BIL1ocLY.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-DnGSvmMU.js} +1 -1
  5. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-Buff9gTO.js → HeaderActions.vue_vue_type_script_setup_true_lang-C2B61JP6.js} +1 -1
  6. package/dist/{MapSettings-De-z7r5t.js → MapSettings-6-Xru5Q8.js} +2 -2
  7. package/dist/{RastersTablePage-Cdgkri9K.js → RastersTablePage-CXNOcTy-.js} +2 -2
  8. package/dist/{cartocss-BT50SVhy.js → cartocss-BFVqWvfP.js} +6 -6
  9. package/dist/{import-utils-CMWiuRPp.js → import-utils-uxk4LdUJ.js} +1 -1
  10. package/dist/{index-CHFLgCGW.js → index-CahlV-Xs.js} +39 -39
  11. package/dist/index.css +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.umd.cjs +19 -19
  14. package/dist/{raster-dSEb1SIG.js → raster-CEi56f0P.js} +3 -3
  15. package/dist/{register-D7Puupgo.js → register-NFAGBNa3.js} +3 -3
  16. package/dist/{service-Cz6T0O3Z.js → service-BYspag8U.js} +829 -832
  17. package/dist/{vs-datatable-DqVncrSg.js → vs-datatable-CHcBr6zy.js} +2 -2
  18. package/module/gis/cls/service_type.json +42 -42
  19. package/module/gis/form/gis.registers.form.json +4 -1
  20. package/module/test/map/addr.json +302 -302
  21. package/module/test/map/addr1.yml +23 -23
  22. package/module/test/select/address.str_id.sql +3 -3
  23. package/package.json +77 -77
  24. package/plugin.js +64 -64
  25. package/server/migrations/array_intersect.sql +13 -13
  26. package/server/migrations/cartocss.sql +27 -27
  27. package/server/migrations/group_list.sql +74 -74
  28. package/server/migrations/maps.sql +30 -30
  29. package/server/migrations/metadata.sql +415 -415
  30. package/server/migrations/ogc.sql +106 -106
  31. package/server/migrations/rasters.sql +265 -265
  32. package/server/migrations/services.sql +247 -247
  33. package/server/migrations/services_users_rel.sql +22 -22
  34. package/server/migrations/widgets.sql +20 -20
  35. package/server/plugins/crons.js +21 -21
  36. package/server/plugins/mapnik/funcs/checkRasterFile.js +107 -107
  37. package/server/plugins/mapnik/funcs/mapnik.js +151 -151
  38. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  39. package/server/plugins/mapnik/map.proto +437 -437
  40. package/server/plugins/vite.js +74 -74
  41. package/server/routes/cartocss/cartocss.route.js +31 -31
  42. package/server/routes/cartocss/cartocss.route.test.js +78 -78
  43. package/server/routes/cartocss/cartocss.schema.js +73 -73
  44. package/server/routes/cartocss/functions/add.cartocss.js +39 -39
  45. package/server/routes/cartocss/functions/get.cartocss.js +57 -57
  46. package/server/routes/gis/functions/checkXML.js +107 -107
  47. package/server/routes/gis/functions/dashboard.js +24 -24
  48. package/server/routes/gis/gis.route.js +26 -26
  49. package/server/routes/gis/gis.route.test.js +33 -33
  50. package/server/routes/map/functions/clearTiles.js +35 -35
  51. package/server/routes/map/functions/geojson.js +187 -187
  52. package/server/routes/map/functions/gis.convert.js +65 -65
  53. package/server/routes/map/functions/gis.icon.js +220 -220
  54. package/server/routes/map/functions/jsonData.js +206 -206
  55. package/server/routes/map/functions/layerList.js +102 -102
  56. package/server/routes/map/functions/map.js +122 -122
  57. package/server/routes/map/functions/mapCatalog.js +72 -72
  58. package/server/routes/map/functions/mapCatalogAttribute.js +53 -53
  59. package/server/routes/map/functions/mapFeatures.js +133 -133
  60. package/server/routes/map/functions/mapFormat.js +232 -231
  61. package/server/routes/map/functions/mapTiles.js +162 -162
  62. package/server/routes/map/functions/maps.js +15 -15
  63. package/server/routes/map/functions/marker_icon.js +43 -43
  64. package/server/routes/map/functions/parseGeoFile.js +85 -85
  65. package/server/routes/map/functions/pointHeight.js +51 -51
  66. package/server/routes/map/functions/vtile.js +174 -174
  67. package/server/routes/map/functions/vtile1.js +185 -185
  68. package/server/routes/map/map.route.js +280 -280
  69. package/server/routes/map/map.route.test.js +503 -503
  70. package/server/routes/map/map.schema.js +356 -356
  71. package/server/routes/map/pin/circle1.svg +76 -76
  72. package/server/routes/map/pin/circle2.svg +18 -18
  73. package/server/routes/map/pin/none.svg +12 -12
  74. package/server/routes/map/pin/pin.svg +14 -14
  75. package/server/routes/map/pin/pin1.svg +16 -16
  76. package/server/routes/map/pin/pin2.svg +7 -7
  77. package/server/routes/map/pin/pin3.svg +34 -34
  78. package/server/routes/map/pin/pin4.svg +14 -14
  79. package/server/routes/map/pin/pin5.svg +7 -7
  80. package/server/routes/map/pin/pin6.svg +12 -12
  81. package/server/routes/map/pin/pin7.svg +12 -12
  82. package/server/routes/mapnik/functions/cartoBounds.js +32 -32
  83. package/server/routes/mapnik/functions/clearTiles.js +103 -103
  84. package/server/routes/mapnik/functions/convertBoundToTile.js +27 -27
  85. package/server/routes/mapnik/functions/createXml.js +76 -76
  86. package/server/routes/mapnik/functions/createXmlMulti.js +72 -72
  87. package/server/routes/mapnik/functions/fileSearch.js +35 -35
  88. package/server/routes/mapnik/functions/fileStat.js +28 -28
  89. package/server/routes/mapnik/functions/pretile.js +138 -138
  90. package/server/routes/mapnik/functions/rasterInfo.js +66 -66
  91. package/server/routes/mapnik/functions/readDir.js +22 -22
  92. package/server/routes/mapnik/functions/rtile.js +164 -164
  93. package/server/routes/mapnik/functions/uploadRaster.js +152 -152
  94. package/server/routes/mapnik/functions/uploadXML.js +140 -140
  95. package/server/routes/mapnik/mapnik.route.js +102 -102
  96. package/server/routes/mapnik/mapnik.route.test.js +370 -370
  97. package/server/routes/mapnik/mapnik.schema.mjs +195 -195
  98. package/server/routes/mapnik.prefixless/functions/mapnikLogger.js +31 -31
  99. package/server/routes/mapnik.prefixless/functions/mapnikStat.js +21 -21
  100. package/server/routes/mapnik.prefixless/mapnik.prefixless.route.js +20 -20
  101. package/server/routes/mapnik.prefixless/mapnik.prefixless.route.test.js +91 -91
  102. package/server/routes/mapnik.prefixless/mapnik.prefixless.schema.mjs +27 -27
  103. package/server/routes/maps/functions/add.map.js +42 -42
  104. package/server/routes/maps/functions/del.map.js +17 -17
  105. package/server/routes/maps/functions/get.map.js +119 -119
  106. package/server/routes/maps/maps.route.js +58 -58
  107. package/server/routes/maps/maps.route.test.js +231 -231
  108. package/server/routes/maps/maps.schema.js +9 -9
  109. package/server/routes/metadata/functions/editMetadata.js +35 -35
  110. package/server/routes/metadata/functions/metadataXML.js +19 -19
  111. package/server/routes/metadata/metadata.route.js +26 -26
  112. package/server/routes/metadata/metadata.route.test.js +46 -46
  113. package/server/routes/metadata/metadata.schema.js +53 -53
  114. package/server/routes/ogc/functions/map.info.point.js +117 -117
  115. package/server/routes/ogc/ogc.route.js +21 -21
  116. package/server/routes/ogc/ogc.route.test.js +53 -53
  117. package/server/routes/ogc/ogc.schema.js +16 -16
  118. package/server/routes/permissions/functions/catalog.permissions.edit.js +20 -20
  119. package/server/routes/permissions/functions/catalog.permissions.js +12 -12
  120. package/server/routes/permissions/functions/get.permissions.js +59 -59
  121. package/server/routes/permissions/functions/gis.catalog.js +80 -80
  122. package/server/routes/permissions/permissions.route.js +35 -35
  123. package/server/routes/permissions/permissions.route.test.js +35 -35
  124. package/server/routes/permissions/permissions.schema.js +43 -43
  125. package/server/routes/registers/functions/add.registry.js +37 -37
  126. package/server/routes/registers/functions/classifiers.js +100 -100
  127. package/server/routes/registers/functions/columns.js +3 -3
  128. package/server/routes/registers/functions/content.type.js +9 -9
  129. package/server/routes/registers/functions/del.registry.js +14 -14
  130. package/server/routes/registers/functions/get.info.js +93 -93
  131. package/server/routes/registers/functions/gis.export.js +159 -159
  132. package/server/routes/registers/functions/gis.registry.js +71 -71
  133. package/server/routes/registers/functions/gis.registry.list.js +61 -61
  134. package/server/routes/registers/functions/handleRegistryRequest.js +147 -147
  135. package/server/routes/registers/functions/map.registry.js +87 -87
  136. package/server/routes/registers/registers.route.js +80 -80
  137. package/server/routes/registers/registers.route.test.js +144 -144
  138. package/server/routes/registers/registers.schema.js +246 -246
  139. package/server/routes/root.mjs +3 -3
  140. package/server/routes/services/functions/add.service.js +62 -62
  141. package/server/routes/services/functions/create.route.js +93 -93
  142. package/server/routes/services/functions/del.service.js +12 -12
  143. package/server/routes/services/functions/get.layer.geom.js +27 -27
  144. package/server/routes/services/functions/get.service.users.js +76 -76
  145. package/server/routes/services/functions/get.services.col.js +34 -34
  146. package/server/routes/services/functions/get.services.js +89 -89
  147. package/server/routes/services/functions/legend.auto.js +77 -77
  148. package/server/routes/services/services.route.js +76 -76
  149. package/server/routes/services/services.route.test.js +167 -167
  150. package/server/routes/services/services.schema.js +278 -278
  151. package/server/routes/widgets/functions/add.widget.js +38 -38
  152. package/server/routes/widgets/functions/del.widget.js +17 -17
  153. package/server/routes/widgets/functions/get.widget.js +41 -41
  154. package/server/routes/widgets/widgets.route.js +61 -61
  155. package/server/routes/widgets/widgets.route.test.js +144 -144
  156. package/server/routes/widgets/widgets.schema.js +24 -24
  157. package/server/shared/listFiles.js +15 -0
  158. package/utils.js +13 -13
@@ -1,356 +1,356 @@
1
- export const gisConvertSchema = {
2
- body: {
3
- type: 'object',
4
- additionalProperties: false,
5
- properties: {
6
- encoding: {
7
- type: 'string',
8
- // python is case insensitive and ignores "-"
9
- enum: ['LATIN-1', 'CP1251', 'UTF-8'],
10
- },
11
- // srid: {
12
- // type: 'number',
13
- // minimum: 1,
14
- // },
15
- file: {
16
- type: 'string',
17
- },
18
- filename: {
19
- type: 'string',
20
- },
21
- filepath: {
22
- type: 'string',
23
- },
24
- },
25
- anyOf: [
26
- { required: ['file', 'filename'] },
27
- { required: ['filepath'] },
28
- ],
29
- },
30
- };
31
-
32
- export const mapFormatSchema = {
33
- querystring: {
34
- type: 'object',
35
- additionalProperties: false,
36
- required: ['layer'],
37
- properties: {
38
- lat: {
39
- type: 'number',
40
- minimum: 1,
41
- maximum: 90,
42
- },
43
- lng: {
44
- type: 'number',
45
- minimum: -180,
46
- maximum: 180,
47
- },
48
- radius: {
49
- type: 'number',
50
- minimum: 1,
51
- maximum: 1000,
52
- },
53
- layer: {
54
- type: 'string', pattern: "^([\\d\\w._-]+)$"
55
- },
56
- id: {
57
- type: 'string', pattern: "^([\\d\\w._-]+)$"
58
- },
59
- nogeom: {
60
- type: 'string', enum: ['1', 'true']
61
- }
62
- },
63
- },
64
- };
65
-
66
- export const pointHeightSchema = {
67
- querystring: {
68
- type: 'object',
69
- required: ['lat', 'lng'],
70
- properties: {
71
- lat: { type: 'number', minimum: -90, maximum: 90 },
72
- lng: { type: 'number', minimum: -180, maximum: 180 },
73
- },
74
- },
75
- response: {
76
- 200: {
77
- type: 'object',
78
- properties: {
79
- lat: { type: 'number' },
80
- lng: { type: 'number' },
81
- height: { anyOf: [{ type: 'number' }, { type: 'null' }] },
82
- },
83
- },
84
- },
85
- };
86
-
87
- export const getIconSchema = {
88
- params: {
89
- type: 'object',
90
- required: ['*'],
91
- properties: {
92
- '*': { type: 'string' },
93
- },
94
- },
95
- querystring: {
96
- type: 'object',
97
- additionalProperties: false,
98
- properties: {
99
- nocache: { type: 'string', enum: ['true', '1'] },
100
- },
101
- },
102
- };
103
-
104
- export const mapTilesSchema = {
105
- params: {
106
- type: 'object',
107
- required: ['slug', 'z', 'x', 'y'],
108
- properties: {
109
- slug: {
110
- type: 'string',
111
- },
112
- z: {
113
- type: 'number',
114
- },
115
- y: {
116
- type: 'number',
117
- },
118
- x: {
119
- type: 'string',
120
- pattern: '^\\d+\\.(pbf|vmt)$',
121
- },
122
- },
123
- },
124
- querystring: {
125
- type: 'object',
126
- additionalProperties: false,
127
- properties: {
128
- nocache: { type: 'string', enum: ['1'] },
129
- filter: { type: 'string', /** pattern: "" */ },
130
- type: { type: 'string', /** enum: [] */ },
131
- layer: { type: 'string', /** pattern: "" */ },
132
- layers: { type: 'string', /** pattern: "" */ },
133
- sql: { type: 'number', minimum: 1, maximum: 4 },
134
- pointZoom: { type: 'number', minimum: 1, maximum: 25 },
135
- },
136
- },
137
- };
138
-
139
- export const mapFeaturesPointSchema = {
140
- params: {
141
- type: 'object',
142
- required: ['slug'],
143
- properties: {
144
- slug: {
145
- type: 'string',
146
- },
147
- },
148
- },
149
- querystring: {
150
- type: 'object',
151
- additionalProperties: false,
152
- properties: {
153
- x: { type: 'number', minimum: -180, maximum: 180 }, // longitude
154
- y: { type: 'number', minimum: -90, maximum: 90 }, // latitude
155
- sql: { type: 'number', enum: [1] },
156
- },
157
- },
158
- };
159
- export const mapFeaturesSchema = {
160
- params: {
161
- type: 'object',
162
- required: ['slug', 'id'],
163
- properties: {
164
- slug: {
165
- type: 'string',
166
- },
167
- id: {
168
- type: 'string', pattern: "^([\\d\\w_.-]+)$"
169
- },
170
- },
171
- },
172
- querystring: {
173
- type: 'object',
174
- additionalProperties: false,
175
- properties: {
176
- sql: { type: 'number', enum: [1] },
177
- },
178
- },
179
- };
180
-
181
- export const mapCatalogAttributeSchema = {
182
- params: {
183
- type: 'object',
184
- required: ['service', 'attr'],
185
- properties: {
186
- service: {
187
- type: 'string', pattern: "^([\\d\\w_.-]+)$"
188
- },
189
- attr: {
190
- type: 'string', pattern: "^([\\d\\w_.-]+)$"
191
- },
192
- },
193
- },
194
- querystring: {
195
- type: 'object',
196
- additionalProperties: false,
197
- properties: {
198
- cls: { type: 'string', pattern: "^([\\d\\w_.-]+)$" },
199
- },
200
- },
201
- };
202
-
203
- export const vtileSchema = {
204
- params: {
205
- type: 'object',
206
- properties: {
207
- layer: {
208
- type: 'string',
209
- },
210
- lang: {
211
- type: 'string', enum: ['ua']
212
- },
213
- z: {
214
- type: 'number',
215
- },
216
- y: {
217
- type: 'number',
218
- },
219
- x: {
220
- type: 'string',
221
- pattern: '^\\d+\\.(pbf|vmt)$',
222
- },
223
- },
224
- },
225
- querystring: {
226
- type: 'object',
227
- additionalProperties: false,
228
- properties: {
229
- type: {
230
- type: 'string', enum: ['point', 'polygon', 'line']
231
- },
232
- nocache: {
233
- type: 'string', enum: ['1', 'true']
234
- },
235
- clusterZoom: {
236
- type: 'number', minimum: 1, maximum: 25
237
- },
238
- nottl: {
239
- type: 'string', enum: ['1', 'true']
240
- },
241
- filter: {
242
- type: 'string'
243
- },
244
- all: {
245
- type: 'string', enum: ['1', 'true']
246
- },
247
- sql: {
248
- type: 'number', enum: [1]
249
- },
250
- pointZoom: {
251
- type: 'number', minimum: 1, maximum: 25
252
- },
253
- }
254
- }
255
- };
256
-
257
- export const clearTilesSchema = {
258
- params: {
259
- type: 'object',
260
- properties: {
261
- id: {
262
- type: 'string', pattern: '^([\\d\\w._-]+)$'
263
- },
264
- },
265
- },
266
- querystring: {
267
- type: 'object',
268
- additionalProperties: false,
269
- properties: {
270
- debug: {
271
- type: 'number', enum: [1]
272
- },
273
- }
274
- }
275
- };
276
-
277
- export const mapSchema = {
278
- params: {
279
- type: 'object',
280
- required: ['slug'],
281
- properties: {
282
- slug: {
283
- type: 'string', pattern: "^([\\d\\w_.-]+)$"
284
- },
285
- },
286
- },
287
- };
288
-
289
- export const geojsonSchema = {
290
- params: {
291
- type: 'object',
292
- properties: {
293
- layer: { type: 'string', pattern: "^([\\d\\w,.-_]+)$" },
294
- }
295
- },
296
- querystring: {
297
- type: 'object',
298
- additionalProperties: false,
299
- properties: {
300
- sql: { type: 'number', enum: [1, 2] },
301
- nocache: { type: 'number', enum: [1] },
302
- srid: { type: 'number', minimum: 1 },
303
- type: { type: 'string', enum: ['centroid'] },
304
- extent: { type: 'string', pattern: "^([\\d\\s,.-]+)$" },
305
- }
306
- }
307
- };
308
-
309
- export const jsonDataSchema = {
310
- params: {
311
- type: 'object',
312
- properties: {
313
- layer: { type: 'string', pattern: "^([\\d\\w,.-_]+)$" },
314
- }
315
- },
316
- querystring: {
317
- type: 'object',
318
- additionalProperties: false,
319
- properties: {
320
- sql: { type: 'number', enum: [1, 2] },
321
- nocache: { type: 'number', enum: [1] },
322
- page: { type: 'number', minimum: 1 },
323
- limit: { type: 'number', minimum: 1, maximum: 1000 },
324
- // where: { type: 'string' }, // ? possible sql injection
325
- }
326
- }
327
- };
328
- export const layerListSchema = {
329
- querystring: {
330
- type: 'object',
331
- additionalProperties: false,
332
- properties: {
333
- sql: {
334
- type: 'number', enum: [1]
335
- }
336
- }
337
- }
338
- };
339
-
340
- export const parseGeoFileSchema = {
341
- body: {
342
- type: 'object',
343
- additionalProperties: false,
344
- required: ['content'],
345
- properties: {
346
- content: {
347
- type: 'string'
348
- },
349
- filename: {
350
- type: 'string'
351
- }
352
- }
353
- }
354
- };
355
-
356
- export default null;
1
+ export const gisConvertSchema = {
2
+ body: {
3
+ type: 'object',
4
+ additionalProperties: false,
5
+ properties: {
6
+ encoding: {
7
+ type: 'string',
8
+ // python is case insensitive and ignores "-"
9
+ enum: ['LATIN-1', 'CP1251', 'UTF-8'],
10
+ },
11
+ // srid: {
12
+ // type: 'number',
13
+ // minimum: 1,
14
+ // },
15
+ file: {
16
+ type: 'string',
17
+ },
18
+ filename: {
19
+ type: 'string',
20
+ },
21
+ filepath: {
22
+ type: 'string',
23
+ },
24
+ },
25
+ anyOf: [
26
+ { required: ['file', 'filename'] },
27
+ { required: ['filepath'] },
28
+ ],
29
+ },
30
+ };
31
+
32
+ export const mapFormatSchema = {
33
+ querystring: {
34
+ type: 'object',
35
+ additionalProperties: false,
36
+ required: ['layer'],
37
+ properties: {
38
+ lat: {
39
+ type: 'number',
40
+ minimum: 1,
41
+ maximum: 90,
42
+ },
43
+ lng: {
44
+ type: 'number',
45
+ minimum: -180,
46
+ maximum: 180,
47
+ },
48
+ radius: {
49
+ type: 'number',
50
+ minimum: 1,
51
+ maximum: 1000,
52
+ },
53
+ layer: {
54
+ type: 'string', pattern: "^([\\d\\w._-]+)$"
55
+ },
56
+ id: {
57
+ type: 'string', pattern: "^([\\d\\w._-]+)$"
58
+ },
59
+ nogeom: {
60
+ type: 'string', enum: ['1', 'true']
61
+ }
62
+ },
63
+ },
64
+ };
65
+
66
+ export const pointHeightSchema = {
67
+ querystring: {
68
+ type: 'object',
69
+ required: ['lat', 'lng'],
70
+ properties: {
71
+ lat: { type: 'number', minimum: -90, maximum: 90 },
72
+ lng: { type: 'number', minimum: -180, maximum: 180 },
73
+ },
74
+ },
75
+ response: {
76
+ 200: {
77
+ type: 'object',
78
+ properties: {
79
+ lat: { type: 'number' },
80
+ lng: { type: 'number' },
81
+ height: { anyOf: [{ type: 'number' }, { type: 'null' }] },
82
+ },
83
+ },
84
+ },
85
+ };
86
+
87
+ export const getIconSchema = {
88
+ params: {
89
+ type: 'object',
90
+ required: ['*'],
91
+ properties: {
92
+ '*': { type: 'string' },
93
+ },
94
+ },
95
+ querystring: {
96
+ type: 'object',
97
+ additionalProperties: false,
98
+ properties: {
99
+ nocache: { type: 'string', enum: ['true', '1'] },
100
+ },
101
+ },
102
+ };
103
+
104
+ export const mapTilesSchema = {
105
+ params: {
106
+ type: 'object',
107
+ required: ['slug', 'z', 'x', 'y'],
108
+ properties: {
109
+ slug: {
110
+ type: 'string',
111
+ },
112
+ z: {
113
+ type: 'number',
114
+ },
115
+ y: {
116
+ type: 'number',
117
+ },
118
+ x: {
119
+ type: 'string',
120
+ pattern: '^\\d+\\.(pbf|vmt)$',
121
+ },
122
+ },
123
+ },
124
+ querystring: {
125
+ type: 'object',
126
+ additionalProperties: false,
127
+ properties: {
128
+ nocache: { type: 'string', enum: ['1'] },
129
+ filter: { type: 'string', /** pattern: "" */ },
130
+ type: { type: 'string', /** enum: [] */ },
131
+ layer: { type: 'string', /** pattern: "" */ },
132
+ layers: { type: 'string', /** pattern: "" */ },
133
+ sql: { type: 'number', minimum: 1, maximum: 4 },
134
+ pointZoom: { type: 'number', minimum: 1, maximum: 25 },
135
+ },
136
+ },
137
+ };
138
+
139
+ export const mapFeaturesPointSchema = {
140
+ params: {
141
+ type: 'object',
142
+ required: ['slug'],
143
+ properties: {
144
+ slug: {
145
+ type: 'string',
146
+ },
147
+ },
148
+ },
149
+ querystring: {
150
+ type: 'object',
151
+ additionalProperties: false,
152
+ properties: {
153
+ x: { type: 'number', minimum: -180, maximum: 180 }, // longitude
154
+ y: { type: 'number', minimum: -90, maximum: 90 }, // latitude
155
+ sql: { type: 'number', enum: [1] },
156
+ },
157
+ },
158
+ };
159
+ export const mapFeaturesSchema = {
160
+ params: {
161
+ type: 'object',
162
+ required: ['slug', 'id'],
163
+ properties: {
164
+ slug: {
165
+ type: 'string',
166
+ },
167
+ id: {
168
+ type: 'string', pattern: "^([\\d\\w_.-]+)$"
169
+ },
170
+ },
171
+ },
172
+ querystring: {
173
+ type: 'object',
174
+ additionalProperties: false,
175
+ properties: {
176
+ sql: { type: 'number', enum: [1] },
177
+ },
178
+ },
179
+ };
180
+
181
+ export const mapCatalogAttributeSchema = {
182
+ params: {
183
+ type: 'object',
184
+ required: ['service', 'attr'],
185
+ properties: {
186
+ service: {
187
+ type: 'string', pattern: "^([\\d\\w_.-]+)$"
188
+ },
189
+ attr: {
190
+ type: 'string', pattern: "^([\\d\\w_.-]+)$"
191
+ },
192
+ },
193
+ },
194
+ querystring: {
195
+ type: 'object',
196
+ additionalProperties: false,
197
+ properties: {
198
+ cls: { type: 'string', pattern: "^([\\d\\w_.-]+)$" },
199
+ },
200
+ },
201
+ };
202
+
203
+ export const vtileSchema = {
204
+ params: {
205
+ type: 'object',
206
+ properties: {
207
+ layer: {
208
+ type: 'string',
209
+ },
210
+ lang: {
211
+ type: 'string', enum: ['ua']
212
+ },
213
+ z: {
214
+ type: 'number',
215
+ },
216
+ y: {
217
+ type: 'number',
218
+ },
219
+ x: {
220
+ type: 'string',
221
+ pattern: '^\\d+\\.(pbf|vmt)$',
222
+ },
223
+ },
224
+ },
225
+ querystring: {
226
+ type: 'object',
227
+ additionalProperties: false,
228
+ properties: {
229
+ type: {
230
+ type: 'string', enum: ['point', 'polygon', 'line']
231
+ },
232
+ nocache: {
233
+ type: 'string', enum: ['1', 'true']
234
+ },
235
+ clusterZoom: {
236
+ type: 'number', minimum: 1, maximum: 25
237
+ },
238
+ nottl: {
239
+ type: 'string', enum: ['1', 'true']
240
+ },
241
+ filter: {
242
+ type: 'string'
243
+ },
244
+ all: {
245
+ type: 'string', enum: ['1', 'true']
246
+ },
247
+ sql: {
248
+ type: 'number', enum: [1]
249
+ },
250
+ pointZoom: {
251
+ type: 'number', minimum: 1, maximum: 25
252
+ },
253
+ }
254
+ }
255
+ };
256
+
257
+ export const clearTilesSchema = {
258
+ params: {
259
+ type: 'object',
260
+ properties: {
261
+ id: {
262
+ type: 'string', pattern: '^([\\d\\w._-]+)$'
263
+ },
264
+ },
265
+ },
266
+ querystring: {
267
+ type: 'object',
268
+ additionalProperties: false,
269
+ properties: {
270
+ debug: {
271
+ type: 'number', enum: [1]
272
+ },
273
+ }
274
+ }
275
+ };
276
+
277
+ export const mapSchema = {
278
+ params: {
279
+ type: 'object',
280
+ required: ['slug'],
281
+ properties: {
282
+ slug: {
283
+ type: 'string', pattern: "^([\\d\\w_.-]+)$"
284
+ },
285
+ },
286
+ },
287
+ };
288
+
289
+ export const geojsonSchema = {
290
+ params: {
291
+ type: 'object',
292
+ properties: {
293
+ layer: { type: 'string', pattern: "^([\\d\\w,.-_]+)$" },
294
+ }
295
+ },
296
+ querystring: {
297
+ type: 'object',
298
+ additionalProperties: false,
299
+ properties: {
300
+ sql: { type: 'number', enum: [1, 2] },
301
+ nocache: { type: 'number', enum: [1] },
302
+ srid: { type: 'number', minimum: 1 },
303
+ type: { type: 'string', enum: ['centroid'] },
304
+ extent: { type: 'string', pattern: "^([\\d\\s,.-]+)$" },
305
+ }
306
+ }
307
+ };
308
+
309
+ export const jsonDataSchema = {
310
+ params: {
311
+ type: 'object',
312
+ properties: {
313
+ layer: { type: 'string', pattern: "^([\\d\\w,.-_]+)$" },
314
+ }
315
+ },
316
+ querystring: {
317
+ type: 'object',
318
+ additionalProperties: false,
319
+ properties: {
320
+ sql: { type: 'number', enum: [1, 2] },
321
+ nocache: { type: 'number', enum: [1] },
322
+ page: { type: 'number', minimum: 1 },
323
+ limit: { type: 'number', minimum: 1, maximum: 1000 },
324
+ // where: { type: 'string' }, // ? possible sql injection
325
+ }
326
+ }
327
+ };
328
+ export const layerListSchema = {
329
+ querystring: {
330
+ type: 'object',
331
+ additionalProperties: false,
332
+ properties: {
333
+ sql: {
334
+ type: 'number', enum: [1]
335
+ }
336
+ }
337
+ }
338
+ };
339
+
340
+ export const parseGeoFileSchema = {
341
+ body: {
342
+ type: 'object',
343
+ additionalProperties: false,
344
+ required: ['content'],
345
+ properties: {
346
+ content: {
347
+ type: 'string'
348
+ },
349
+ filename: {
350
+ type: 'string'
351
+ }
352
+ }
353
+ }
354
+ };
355
+
356
+ export default null;