@ngageoint/mage.service 6.3.0 → 6.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/adapters/observations/adapters.observations.dto.ecma404-json.d.ts.map +1 -1
  2. package/lib/adapters/observations/adapters.observations.dto.ecma404-json.js +2 -1
  3. package/lib/adapters/observations/adapters.observations.dto.ecma404-json.js.map +1 -1
  4. package/lib/api/observation.d.ts.map +1 -1
  5. package/lib/api/observation.js +61 -46
  6. package/lib/api/observation.js.map +1 -1
  7. package/lib/app.api/observations/app.api.observations.d.ts +1 -0
  8. package/lib/app.api/observations/app.api.observations.d.ts.map +1 -1
  9. package/lib/app.api/observations/app.api.observations.js.map +1 -1
  10. package/lib/app.impl/observations/app.impl.observations.js +32 -29
  11. package/lib/app.impl/observations/app.impl.observations.js.map +1 -1
  12. package/lib/authentication/ldap.d.ts.map +1 -1
  13. package/lib/authentication/ldap.js +3 -1
  14. package/lib/authentication/ldap.js.map +1 -1
  15. package/lib/dist-package.json +2 -1
  16. package/lib/entities/observations/entities.observations.d.ts +5 -0
  17. package/lib/entities/observations/entities.observations.d.ts.map +1 -1
  18. package/lib/entities/observations/entities.observations.js +3 -1
  19. package/lib/entities/observations/entities.observations.js.map +1 -1
  20. package/lib/models/event.d.ts.map +1 -1
  21. package/lib/models/event.js +2 -1
  22. package/lib/models/event.js.map +1 -1
  23. package/lib/models/observation.d.ts +1 -1
  24. package/lib/models/team.d.ts.map +1 -1
  25. package/lib/models/team.js +2 -1
  26. package/lib/models/team.js.map +1 -1
  27. package/lib/routes/imports.d.ts +8 -2
  28. package/lib/routes/imports.d.ts.map +1 -1
  29. package/lib/routes/imports.js +90 -32
  30. package/lib/routes/imports.js.map +1 -1
  31. package/lib/routes/logins.d.ts.map +1 -1
  32. package/lib/routes/logins.js +4 -0
  33. package/lib/routes/logins.js.map +1 -1
  34. package/lib/routes/observations.d.ts.map +1 -1
  35. package/lib/routes/observations.js +90 -65
  36. package/lib/routes/observations.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/lib/utilities/transformKML.d.ts +8 -0
  39. package/lib/utilities/transformKML.d.ts.map +1 -0
  40. package/lib/utilities/transformKML.js +316 -0
  41. package/lib/utilities/transformKML.js.map +1 -0
  42. package/npm-shrinkwrap.json +13 -2
  43. package/package.json +2 -1
  44. package/lib/utilities/togeojson.d.ts +0 -2
  45. package/lib/utilities/togeojson.d.ts.map +0 -1
  46. package/lib/utilities/togeojson.js +0 -308
  47. package/lib/utilities/togeojson.js.map +0 -1
@@ -1,308 +0,0 @@
1
- "use strict";
2
- const xpath = require('xpath'), log = require('winston');
3
- exports.kml = kml;
4
- function kml(document) {
5
- log.info('Generate KML');
6
- const styleIndex = getStyles(document);
7
- // Pull all placemarks regards of depth level
8
- let placemarks = xpath.select("//*[local-name()='Placemark']", document);
9
- log.info('Style index ', styleIndex);
10
- log.info('Found ' + placemarks.length + ' placemarks in the KML document');
11
- let features = [];
12
- placemarks.forEach(placemark => {
13
- features = features.concat(getPlacemark(placemark, styleIndex));
14
- });
15
- return features;
16
- }
17
- function getProperties(node, styleIndex) {
18
- let properties = {};
19
- let name = nodeVal(get1(node, 'name'));
20
- if (name)
21
- properties.name = name;
22
- let description = nodeVal(get1(node, 'description'));
23
- if (description)
24
- properties.description = description;
25
- const extendedData = get1(node, 'ExtendedData');
26
- if (extendedData) {
27
- const datas = get(extendedData, 'Data'), simpleDatas = get(extendedData, 'SimpleData');
28
- for (let i = 0; i < datas.length; i++) {
29
- properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
30
- }
31
- for (let i = 0; i < simpleDatas.length; i++) {
32
- properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
33
- }
34
- }
35
- let styleUrl = nodeVal(get1(node, 'styleUrl'));
36
- if (styleUrl && styleIndex[styleUrl]) {
37
- properties.style = styleIndex[styleUrl];
38
- }
39
- else {
40
- // Check if placemark has style
41
- const styleElement = get1(node, 'Style');
42
- if (styleElement) {
43
- properties.style = {
44
- iconStyle: getIconStyle(styleElement),
45
- lineStyle: getLineStyle(styleElement),
46
- labelStyle: getLabelStyle(styleElement),
47
- polyStyle: getPolygonStyle(styleElement)
48
- };
49
- }
50
- }
51
- return properties;
52
- }
53
- function getPlacemark(node, styleIndex) {
54
- const geometries = getGeometry(node);
55
- if (!geometries.length)
56
- return [];
57
- const properties = getProperties(node, styleIndex);
58
- return geometries.map(geometry => {
59
- return {
60
- type: 'Feature',
61
- geometry: geometry,
62
- properties: properties
63
- };
64
- });
65
- }
66
- function getGeometry(node) {
67
- if (get1(node, 'MultiGeometry')) {
68
- return getGeometry(get1(node, 'MultiGeometry'));
69
- }
70
- if (get1(node, 'MultiTrack')) {
71
- return getGeometry(get1(node, 'MultiTrack'));
72
- }
73
- let geometries = [];
74
- ['Polygon', 'LineString', 'Point', 'Track'].forEach(geometryType => {
75
- let geometryNodes = get(node, geometryType);
76
- if (geometryNodes) {
77
- for (let i = 0; i < geometryNodes.length; i++) {
78
- let geometryNode = geometryNodes[i];
79
- switch (geometryType) {
80
- case 'Point':
81
- geometries.push(getPoint(geometryNode));
82
- break;
83
- case 'LineString':
84
- geometries.push(getLineString(geometryNode));
85
- break;
86
- case 'Track':
87
- geometries.push(getTrack(geometryNode));
88
- break;
89
- case 'Polygon':
90
- geometries.push(getPolygon(geometryNode));
91
- break;
92
- }
93
- }
94
- }
95
- });
96
- return geometries;
97
- }
98
- function getPoint(node) {
99
- return {
100
- type: 'Point',
101
- coordinates: coord1(nodeVal(get1(node, 'coordinates')))
102
- };
103
- }
104
- function getLineString(node) {
105
- return {
106
- type: 'LineString',
107
- coordinates: coord(nodeVal(get1(node, 'coordinates')))
108
- };
109
- }
110
- function getTrack(node) {
111
- return {
112
- type: 'LineString',
113
- coordinates: gxCoords(node)
114
- };
115
- }
116
- function getPolygon(node) {
117
- const rings = get(node, 'LinearRing');
118
- let coords = [];
119
- for (let i = 0; i < rings.length; i++) {
120
- coords.push(coord(nodeVal(get1(rings[i], 'coordinates'))));
121
- }
122
- return {
123
- type: 'Polygon',
124
- coordinates: coords
125
- };
126
- }
127
- function gxCoords(node) {
128
- let elems = get(node, 'coord', 'gx');
129
- if (elems.length === 0) {
130
- elems = get(node, 'gx:coord');
131
- }
132
- let coords = [];
133
- for (let i = 0; i < elems.length; i++) {
134
- coords.push(gxCoord(nodeVal(elems[i])));
135
- }
136
- let times = [];
137
- const timeElems = get(node, 'when');
138
- for (let i = 0; i < timeElems.length; i++) {
139
- times.push(nodeVal(timeElems[i]));
140
- }
141
- return {
142
- coords: coords,
143
- times: times
144
- };
145
- }
146
- function gxCoord(v) {
147
- return numarray(v.split(' '));
148
- }
149
- function getStyles(node) {
150
- let styleIndex = {};
151
- const styles = get(node, 'Style');
152
- for (let i = 0; i < styles.length; i++) {
153
- const kmlStyle = styles[i];
154
- const styleId = '#' + attr(kmlStyle, 'id');
155
- styleIndex[styleId] = {
156
- iconStyle: getIconStyle(kmlStyle),
157
- lineStyle: getLineStyle(kmlStyle),
158
- labelStyle: getLabelStyle(kmlStyle),
159
- polyStyle: getPolygonStyle(kmlStyle)
160
- };
161
- }
162
- const styleMaps = get(node, 'StyleMap');
163
- for (let i = 0; i < styleMaps.length; i++) {
164
- const styleMap = styleMaps[i];
165
- const pairs = xpath.select("*[local-name()='Pair']", styleMap);
166
- for (let p = 0; p < pairs.length; p++) {
167
- const key = get(pairs[p], 'key');
168
- if (key) {
169
- const keyName = nodeVal(key[0]);
170
- if (keyName === 'normal') {
171
- const styleUrl = get(pairs[p], 'styleUrl');
172
- if (styleUrl) {
173
- const styleUrlName = nodeVal(styleUrl[0]);
174
- const styleMapId = '#' + attr(styleMap, 'id');
175
- styleIndex[styleMapId] = styleIndex[styleUrlName];
176
- }
177
- }
178
- }
179
- }
180
- }
181
- return styleIndex;
182
- }
183
- function getIconStyle(node) {
184
- const iconStyle = get(node, 'IconStyle');
185
- if (iconStyle[0]) {
186
- let style = {};
187
- const iconScale = get(iconStyle[0], 'scale');
188
- if (iconScale && iconScale[0]) {
189
- style.scale = nodeVal(iconScale[0]);
190
- }
191
- const icon = get(iconStyle[0], 'Icon');
192
- if (icon && icon[0]) {
193
- style.icon = {};
194
- const href = get(icon[0], 'href');
195
- if (href[0]) {
196
- style.icon.href = nodeVal(href[0]);
197
- }
198
- }
199
- return style;
200
- }
201
- }
202
- function getLineStyle(node) {
203
- const lineStyle = get(node, 'LineStyle');
204
- if (lineStyle[0]) {
205
- let style = {};
206
- const lineColor = get(lineStyle[0], 'color');
207
- if (lineColor[0]) {
208
- style.color = parseColor(nodeVal(lineColor[0]));
209
- }
210
- const width = get(lineStyle[0], 'width');
211
- if (width[0]) {
212
- style.width = nodeVal(width[0]);
213
- }
214
- return style;
215
- }
216
- }
217
- function getLabelStyle(node) {
218
- const labelStyle = get(node, 'LabelStyle');
219
- if (labelStyle[0]) {
220
- let style = {};
221
- const labelColor = get(labelStyle[0], 'color');
222
- if (labelColor[0]) {
223
- style.color = parseColor(nodeVal(labelColor[0]));
224
- }
225
- const labelScale = get(labelStyle[0], 'scale');
226
- if (labelScale[0]) {
227
- style.color = nodeVal(labelScale[0]);
228
- }
229
- return style;
230
- }
231
- }
232
- function getPolygonStyle(node) {
233
- const polyStyle = get(node, 'PolyStyle');
234
- if (polyStyle[0]) {
235
- let style = {};
236
- const color = get(polyStyle[0], 'color');
237
- if (color[0]) {
238
- style.color = parseColor(nodeVal(color[0]));
239
- }
240
- return style;
241
- }
242
- }
243
- // all Y children of X
244
- function get(x, y) {
245
- return x.getElementsByTagNameNS("*", y);
246
- }
247
- function attr(x, y) { return x.getAttribute(y); }
248
- // one Y child of X, if any, otherwise null
249
- function get1(x, y) {
250
- let n = get(x, y);
251
- return n.length ? n[0] : null;
252
- }
253
- // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
254
- function norm(el) {
255
- if (el.normalize) {
256
- el.normalize();
257
- }
258
- return el;
259
- }
260
- // cast array x into numbers
261
- function numarray(x) {
262
- let o = [];
263
- for (let i = 0; i < x.length; i++) {
264
- o[i] = parseFloat(x[i]);
265
- }
266
- return o;
267
- }
268
- // cast array x into numbers
269
- function coordinateArray(x) {
270
- let o = [];
271
- for (let i = 0; i < x.length; i++) {
272
- o[i] = parseFloat(x[i]);
273
- }
274
- return o.splice(0, 2);
275
- }
276
- // get the content of a text node, if any
277
- function nodeVal(x) {
278
- if (x) {
279
- norm(x);
280
- }
281
- return x && x.firstChild && x.firstChild.nodeValue;
282
- }
283
- // get one coordinate from a coordinate array, if any
284
- function coord1(v) {
285
- const removeSpace = (/\s*/g);
286
- return coordinateArray(v.replace(removeSpace, '').split(','));
287
- }
288
- // get all coordinates from a coordinate array as [[],[]]
289
- function coord(v) {
290
- const trimSpace = (/^\s*|\s*$/g);
291
- const splitSpace = (/\s+/);
292
- let coords = v.replace(trimSpace, '').split(splitSpace), o = [];
293
- for (let i = 0; i < coords.length; i++) {
294
- o.push(coord1(coords[i]));
295
- }
296
- return o;
297
- }
298
- function parseColor(color) {
299
- const r = color.slice(6, 8);
300
- const g = color.slice(4, 6);
301
- const b = color.slice(2, 4);
302
- const a = color.slice(0, 2);
303
- return {
304
- rgb: '#' + r + g + b,
305
- opacity: parseInt(a, 16)
306
- };
307
- }
308
- //# sourceMappingURL=togeojson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"togeojson.js","sourceRoot":"","sources":["../../src/utilities/togeojson.js"],"names":[],"mappings":"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"}