@cratis/fundamentals 7.15.0 → 7.15.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 (237) hide show
  1. package/JsonSerializer.ts +88 -56
  2. package/dist/JsonSerializer.d.ts.map +1 -1
  3. package/dist/JsonSerializer.js +50 -54
  4. package/dist/JsonSerializer.js.map +1 -1
  5. package/dist/cjs/JsonSerializer.d.ts.map +1 -1
  6. package/dist/cjs/JsonSerializer.js +56 -54
  7. package/dist/cjs/JsonSerializer.js.map +1 -1
  8. package/dist/cjs/geospatial/LineString.d.ts +7 -0
  9. package/dist/cjs/geospatial/LineString.d.ts.map +1 -0
  10. package/dist/cjs/geospatial/LineString.js +20 -0
  11. package/dist/cjs/geospatial/LineString.js.map +1 -0
  12. package/dist/cjs/geospatial/LinearRing.d.ts +7 -0
  13. package/dist/cjs/geospatial/LinearRing.d.ts.map +1 -0
  14. package/dist/cjs/geospatial/LinearRing.js +17 -0
  15. package/dist/cjs/geospatial/LinearRing.js.map +1 -0
  16. package/dist/cjs/geospatial/Point.d.ts +7 -0
  17. package/dist/cjs/geospatial/Point.d.ts.map +1 -0
  18. package/dist/cjs/geospatial/Point.js +30 -0
  19. package/dist/cjs/geospatial/Point.js.map +1 -0
  20. package/dist/cjs/geospatial/Polygon.d.ts +8 -0
  21. package/dist/cjs/geospatial/Polygon.d.ts.map +1 -0
  22. package/dist/cjs/geospatial/Polygon.js +23 -0
  23. package/dist/cjs/geospatial/Polygon.js.map +1 -0
  24. package/dist/cjs/geospatial/index.d.ts +5 -0
  25. package/dist/cjs/geospatial/index.d.ts.map +1 -0
  26. package/dist/cjs/index.d.ts +2 -1
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +24 -2
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/json/DateJsonConverter.d.ts +8 -0
  31. package/dist/cjs/json/DateJsonConverter.d.ts.map +1 -0
  32. package/dist/cjs/json/DateJsonConverter.js +18 -0
  33. package/dist/cjs/json/DateJsonConverter.js.map +1 -0
  34. package/dist/cjs/json/GuidJsonConverter.d.ts +9 -0
  35. package/dist/cjs/json/GuidJsonConverter.d.ts.map +1 -0
  36. package/dist/cjs/json/GuidJsonConverter.js +19 -0
  37. package/dist/cjs/json/GuidJsonConverter.js.map +1 -0
  38. package/dist/cjs/json/JsonConverter.d.ts +8 -0
  39. package/dist/cjs/json/JsonConverter.d.ts.map +1 -0
  40. package/dist/cjs/json/JsonConverter.js +10 -0
  41. package/dist/cjs/json/JsonConverter.js.map +1 -0
  42. package/dist/cjs/json/LineStringJsonConverter.d.ts +9 -0
  43. package/dist/cjs/json/LineStringJsonConverter.d.ts.map +1 -0
  44. package/dist/cjs/json/LineStringJsonConverter.js +27 -0
  45. package/dist/cjs/json/LineStringJsonConverter.js.map +1 -0
  46. package/dist/cjs/json/PointJsonConverter.d.ts +9 -0
  47. package/dist/cjs/json/PointJsonConverter.d.ts.map +1 -0
  48. package/dist/cjs/json/PointJsonConverter.js +28 -0
  49. package/dist/cjs/json/PointJsonConverter.js.map +1 -0
  50. package/dist/cjs/json/PolygonJsonConverter.d.ts +9 -0
  51. package/dist/cjs/json/PolygonJsonConverter.d.ts.map +1 -0
  52. package/dist/cjs/json/PolygonJsonConverter.js +29 -0
  53. package/dist/cjs/json/PolygonJsonConverter.js.map +1 -0
  54. package/dist/cjs/json/TimeSpanJsonConverter.d.ts +9 -0
  55. package/dist/cjs/json/TimeSpanJsonConverter.d.ts.map +1 -0
  56. package/dist/cjs/json/TimeSpanJsonConverter.js +19 -0
  57. package/dist/cjs/json/TimeSpanJsonConverter.js.map +1 -0
  58. package/dist/cjs/json/ValueMapJsonConverter.d.ts +12 -0
  59. package/dist/cjs/json/ValueMapJsonConverter.d.ts.map +1 -0
  60. package/dist/cjs/json/ValueMapJsonConverter.js +33 -0
  61. package/dist/cjs/json/ValueMapJsonConverter.js.map +1 -0
  62. package/dist/cjs/json/index.d.ts +9 -0
  63. package/dist/cjs/json/index.d.ts.map +1 -0
  64. package/dist/esm/JsonSerializer.d.ts.map +1 -1
  65. package/dist/esm/JsonSerializer.js +56 -54
  66. package/dist/esm/JsonSerializer.js.map +1 -1
  67. package/dist/esm/geospatial/LineString.d.ts +7 -0
  68. package/dist/esm/geospatial/LineString.d.ts.map +1 -0
  69. package/dist/esm/geospatial/LineString.js +18 -0
  70. package/dist/esm/geospatial/LineString.js.map +1 -0
  71. package/dist/esm/geospatial/LinearRing.d.ts +7 -0
  72. package/dist/esm/geospatial/LinearRing.d.ts.map +1 -0
  73. package/dist/esm/geospatial/LinearRing.js +15 -0
  74. package/dist/esm/geospatial/LinearRing.js.map +1 -0
  75. package/dist/esm/geospatial/Point.d.ts +7 -0
  76. package/dist/esm/geospatial/Point.d.ts.map +1 -0
  77. package/dist/esm/geospatial/Point.js +28 -0
  78. package/dist/esm/geospatial/Point.js.map +1 -0
  79. package/dist/esm/geospatial/Polygon.d.ts +8 -0
  80. package/dist/esm/geospatial/Polygon.d.ts.map +1 -0
  81. package/dist/esm/geospatial/Polygon.js +21 -0
  82. package/dist/esm/geospatial/Polygon.js.map +1 -0
  83. package/dist/esm/geospatial/index.d.ts +5 -0
  84. package/dist/esm/geospatial/index.d.ts.map +1 -0
  85. package/dist/esm/index.d.ts +2 -1
  86. package/dist/esm/index.d.ts.map +1 -1
  87. package/dist/esm/index.js +12 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/json/DateJsonConverter.d.ts +8 -0
  90. package/dist/esm/json/DateJsonConverter.d.ts.map +1 -0
  91. package/dist/esm/json/DateJsonConverter.js +16 -0
  92. package/dist/esm/json/DateJsonConverter.js.map +1 -0
  93. package/dist/esm/json/GuidJsonConverter.d.ts +9 -0
  94. package/dist/esm/json/GuidJsonConverter.d.ts.map +1 -0
  95. package/dist/esm/json/GuidJsonConverter.js +17 -0
  96. package/dist/esm/json/GuidJsonConverter.js.map +1 -0
  97. package/dist/esm/json/JsonConverter.d.ts +8 -0
  98. package/dist/esm/json/JsonConverter.d.ts.map +1 -0
  99. package/dist/esm/json/JsonConverter.js +8 -0
  100. package/dist/esm/json/JsonConverter.js.map +1 -0
  101. package/dist/esm/json/LineStringJsonConverter.d.ts +9 -0
  102. package/dist/esm/json/LineStringJsonConverter.d.ts.map +1 -0
  103. package/dist/esm/json/LineStringJsonConverter.js +25 -0
  104. package/dist/esm/json/LineStringJsonConverter.js.map +1 -0
  105. package/dist/esm/json/PointJsonConverter.d.ts +9 -0
  106. package/dist/esm/json/PointJsonConverter.d.ts.map +1 -0
  107. package/dist/esm/json/PointJsonConverter.js +26 -0
  108. package/dist/esm/json/PointJsonConverter.js.map +1 -0
  109. package/dist/esm/json/PolygonJsonConverter.d.ts +9 -0
  110. package/dist/esm/json/PolygonJsonConverter.d.ts.map +1 -0
  111. package/dist/esm/json/PolygonJsonConverter.js +27 -0
  112. package/dist/esm/json/PolygonJsonConverter.js.map +1 -0
  113. package/dist/esm/json/TimeSpanJsonConverter.d.ts +9 -0
  114. package/dist/esm/json/TimeSpanJsonConverter.d.ts.map +1 -0
  115. package/dist/esm/json/TimeSpanJsonConverter.js +17 -0
  116. package/dist/esm/json/TimeSpanJsonConverter.js.map +1 -0
  117. package/dist/esm/json/ValueMapJsonConverter.d.ts +12 -0
  118. package/dist/esm/json/ValueMapJsonConverter.d.ts.map +1 -0
  119. package/dist/esm/json/ValueMapJsonConverter.js +31 -0
  120. package/dist/esm/json/ValueMapJsonConverter.js.map +1 -0
  121. package/dist/esm/json/index.d.ts +9 -0
  122. package/dist/esm/json/index.d.ts.map +1 -0
  123. package/dist/geospatial/LineString.d.ts +7 -0
  124. package/dist/geospatial/LineString.d.ts.map +1 -0
  125. package/dist/geospatial/LineString.js +16 -0
  126. package/dist/geospatial/LineString.js.map +1 -0
  127. package/dist/geospatial/LinearRing.d.ts +7 -0
  128. package/dist/geospatial/LinearRing.d.ts.map +1 -0
  129. package/dist/geospatial/LinearRing.js +13 -0
  130. package/dist/geospatial/LinearRing.js.map +1 -0
  131. package/dist/geospatial/Point.d.ts +7 -0
  132. package/dist/geospatial/Point.d.ts.map +1 -0
  133. package/dist/geospatial/Point.js +25 -0
  134. package/dist/geospatial/Point.js.map +1 -0
  135. package/dist/geospatial/Polygon.d.ts +8 -0
  136. package/dist/geospatial/Polygon.d.ts.map +1 -0
  137. package/dist/geospatial/Polygon.js +19 -0
  138. package/dist/geospatial/Polygon.js.map +1 -0
  139. package/dist/geospatial/index.d.ts +5 -0
  140. package/dist/geospatial/index.d.ts.map +1 -0
  141. package/dist/geospatial/index.js +5 -0
  142. package/dist/geospatial/index.js.map +1 -0
  143. package/dist/index.d.ts +2 -1
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +2 -1
  146. package/dist/index.js.map +1 -1
  147. package/dist/json/DateJsonConverter.d.ts +8 -0
  148. package/dist/json/DateJsonConverter.d.ts.map +1 -0
  149. package/dist/json/DateJsonConverter.js +13 -0
  150. package/dist/json/DateJsonConverter.js.map +1 -0
  151. package/dist/json/GuidJsonConverter.d.ts +9 -0
  152. package/dist/json/GuidJsonConverter.d.ts.map +1 -0
  153. package/dist/json/GuidJsonConverter.js +14 -0
  154. package/dist/json/GuidJsonConverter.js.map +1 -0
  155. package/dist/json/JsonConverter.d.ts +8 -0
  156. package/dist/json/JsonConverter.d.ts.map +1 -0
  157. package/dist/json/JsonConverter.js +6 -0
  158. package/dist/json/JsonConverter.js.map +1 -0
  159. package/dist/json/LineStringJsonConverter.d.ts +9 -0
  160. package/dist/json/LineStringJsonConverter.d.ts.map +1 -0
  161. package/dist/json/LineStringJsonConverter.js +21 -0
  162. package/dist/json/LineStringJsonConverter.js.map +1 -0
  163. package/dist/json/PointJsonConverter.d.ts +9 -0
  164. package/dist/json/PointJsonConverter.d.ts.map +1 -0
  165. package/dist/json/PointJsonConverter.js +23 -0
  166. package/dist/json/PointJsonConverter.js.map +1 -0
  167. package/dist/json/PolygonJsonConverter.d.ts +9 -0
  168. package/dist/json/PolygonJsonConverter.d.ts.map +1 -0
  169. package/dist/json/PolygonJsonConverter.js +22 -0
  170. package/dist/json/PolygonJsonConverter.js.map +1 -0
  171. package/dist/json/TimeSpanJsonConverter.d.ts +9 -0
  172. package/dist/json/TimeSpanJsonConverter.d.ts.map +1 -0
  173. package/dist/json/TimeSpanJsonConverter.js +14 -0
  174. package/dist/json/TimeSpanJsonConverter.js.map +1 -0
  175. package/dist/json/ValueMapJsonConverter.d.ts +12 -0
  176. package/dist/json/ValueMapJsonConverter.d.ts.map +1 -0
  177. package/dist/json/ValueMapJsonConverter.js +28 -0
  178. package/dist/json/ValueMapJsonConverter.js.map +1 -0
  179. package/dist/json/index.d.ts +9 -0
  180. package/dist/json/index.d.ts.map +1 -0
  181. package/dist/json/index.js +9 -0
  182. package/dist/json/index.js.map +1 -0
  183. package/dist/tsconfig.tsbuildinfo +1 -1
  184. package/geospatial/LineString.ts +33 -0
  185. package/geospatial/LinearRing.ts +30 -0
  186. package/geospatial/Point.ts +36 -0
  187. package/geospatial/Polygon.ts +37 -0
  188. package/geospatial/index.ts +7 -0
  189. package/index.ts +2 -1
  190. package/json/DateJsonConverter.ts +27 -0
  191. package/json/GuidJsonConverter.ts +28 -0
  192. package/json/JsonConverter.ts +40 -0
  193. package/json/LineStringJsonConverter.ts +35 -0
  194. package/json/PointJsonConverter.ts +37 -0
  195. package/json/PolygonJsonConverter.ts +38 -0
  196. package/json/TimeSpanJsonConverter.ts +28 -0
  197. package/json/ValueMapJsonConverter.ts +57 -0
  198. package/json/for_DateJsonConverter/when_reading_date_with_date_converter.ts +12 -0
  199. package/json/for_DateJsonConverter/when_writing_date_with_date_converter.ts +12 -0
  200. package/json/for_GuidJsonConverter/when_reading_guid_with_guid_converter.ts +13 -0
  201. package/json/for_GuidJsonConverter/when_writing_guid_with_guid_converter.ts +13 -0
  202. package/json/for_LineStringJsonConverter/when_deserializing_linestring.ts +19 -0
  203. package/json/for_LineStringJsonConverter/when_reading_linestring_with_linestring_converter.ts +24 -0
  204. package/json/for_LineStringJsonConverter/when_serializing_linestring.ts +25 -0
  205. package/json/for_LineStringJsonConverter/when_writing_linestring_with_linestring_converter.ts +27 -0
  206. package/json/for_PointJsonConverter/when_deserializing_point.ts +14 -0
  207. package/json/for_PointJsonConverter/when_reading_point_with_point_converter.ts +14 -0
  208. package/json/for_PointJsonConverter/when_serializing_point.ts +17 -0
  209. package/json/for_PointJsonConverter/when_writing_point_with_point_converter.ts +16 -0
  210. package/json/for_PolygonJsonConverter/when_deserializing_polygon_with_holes.ts +28 -0
  211. package/json/for_PolygonJsonConverter/when_deserializing_polygon_with_no_holes.ts +22 -0
  212. package/json/for_PolygonJsonConverter/when_reading_polygon_with_polygon_converter.ts +27 -0
  213. package/json/for_PolygonJsonConverter/when_serializing_polygon_with_holes.ts +53 -0
  214. package/json/for_PolygonJsonConverter/when_serializing_polygon_with_no_holes.ts +33 -0
  215. package/json/for_PolygonJsonConverter/when_writing_polygon_with_polygon_converter.ts +35 -0
  216. package/json/for_TimeSpanJsonConverter/when_reading_timespan_with_timespan_converter.ts +16 -0
  217. package/json/for_TimeSpanJsonConverter/when_writing_timespan_with_timespan_converter.ts +13 -0
  218. package/json/for_ValueMapJsonConverter/when_writing_valuemap_with_valuemap_converter.ts +28 -0
  219. package/json/index.ts +11 -0
  220. package/package.json +11 -1
  221. package/Coordinate.ts +0 -38
  222. package/dist/Coordinate.d.ts +0 -7
  223. package/dist/Coordinate.d.ts.map +0 -1
  224. package/dist/Coordinate.js +0 -27
  225. package/dist/Coordinate.js.map +0 -1
  226. package/dist/cjs/Coordinate.d.ts +0 -7
  227. package/dist/cjs/Coordinate.d.ts.map +0 -1
  228. package/dist/cjs/Coordinate.js +0 -32
  229. package/dist/cjs/Coordinate.js.map +0 -1
  230. package/dist/esm/Coordinate.d.ts +0 -7
  231. package/dist/esm/Coordinate.d.ts.map +0 -1
  232. package/dist/esm/Coordinate.js +0 -30
  233. package/dist/esm/Coordinate.js.map +0 -1
  234. package/for_Coordinate/when_creating_coordinate.ts +0 -11
  235. package/for_Coordinate/when_deserializing_coordinate.ts +0 -14
  236. package/for_Coordinate/when_deserializing_coordinate_with_missing_properties.ts +0 -13
  237. package/for_Coordinate/when_serializing_coordinate.ts +0 -14
@@ -0,0 +1,33 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { Point } from '../../geospatial/Point';
5
+ import { LinearRing } from '../../geospatial/LinearRing';
6
+ import { Polygon } from '../../geospatial/Polygon';
7
+ import { JsonSerializer } from '../../JsonSerializer';
8
+
9
+ describe('when serializing polygon with no holes', () => {
10
+ const shell = new LinearRing([
11
+ new Point(0, 0),
12
+ new Point(10, 0),
13
+ new Point(10, 10),
14
+ new Point(0, 10),
15
+ new Point(0, 0)
16
+ ]);
17
+ const polygon = new Polygon(shell, []);
18
+ const result = JsonSerializer.serialize(polygon);
19
+ const deserialized = JSON.parse(result);
20
+
21
+ it('should have type of Polygon', () => deserialized.type.should.equal('Polygon'));
22
+ it('should have coordinates array', () => deserialized.coordinates.should.be.an('array'));
23
+ it('should have one ring (shell only)', () => deserialized.coordinates.length.should.equal(1));
24
+ it('should have five points in shell', () => deserialized.coordinates[0].length.should.equal(5));
25
+ it('should have correct first point', () => {
26
+ deserialized.coordinates[0][0][0].should.equal(0);
27
+ deserialized.coordinates[0][0][1].should.equal(0);
28
+ });
29
+ it('should have correct last point (closed ring)', () => {
30
+ deserialized.coordinates[0][4][0].should.equal(0);
31
+ deserialized.coordinates[0][4][1].should.equal(0);
32
+ });
33
+ });
@@ -0,0 +1,35 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { Point } from '../../geospatial/Point';
5
+ import { LinearRing } from '../../geospatial/LinearRing';
6
+ import { Polygon } from '../../geospatial/Polygon';
7
+ import { PolygonJsonConverter } from '../PolygonJsonConverter';
8
+
9
+ describe('when writing polygon with polygon converter', () => {
10
+ const converter = new PolygonJsonConverter();
11
+ const polygon = new Polygon(
12
+ new LinearRing([
13
+ new Point(0, 0),
14
+ new Point(10, 0),
15
+ new Point(10, 10),
16
+ new Point(0, 10),
17
+ new Point(0, 0)
18
+ ]),
19
+ []
20
+ );
21
+ const result = converter.write(polygon);
22
+
23
+ it('should have type property', () => result.type.should.equal('Polygon'));
24
+ it('should have coordinates array', () => result.coordinates.should.be.instanceof(Array));
25
+ it('should have one ring', () => result.coordinates.length.should.equal(1));
26
+ it('should have five points in ring', () => result.coordinates[0].length.should.equal(5));
27
+ it('should have first point coordinates', () => {
28
+ result.coordinates[0][0][0].should.equal(0);
29
+ result.coordinates[0][0][1].should.equal(0);
30
+ });
31
+ it('should have closed ring', () => {
32
+ result.coordinates[0][0][0].should.equal(result.coordinates[0][4][0]);
33
+ result.coordinates[0][0][1].should.equal(result.coordinates[0][4][1]);
34
+ });
35
+ });
@@ -0,0 +1,16 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { TimeSpan } from '../../TimeSpan';
5
+ import { TimeSpanJsonConverter } from '../TimeSpanJsonConverter';
6
+
7
+ describe('when reading timespan with timespan converter', () => {
8
+ const converter = new TimeSpanJsonConverter();
9
+ const result = converter.read('1.02:30:45.678');
10
+
11
+ it('should return TimeSpan instance', () => result.should.be.instanceof(TimeSpan));
12
+ it('should have correct days', () => result.days.should.equal(1));
13
+ it('should have correct hours', () => result.hours.should.equal(2));
14
+ it('should have correct minutes', () => result.minutes.should.equal(30));
15
+ it('should have correct seconds', () => result.seconds.should.equal(45));
16
+ });
@@ -0,0 +1,13 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { TimeSpan } from '../../TimeSpan';
5
+ import { TimeSpanJsonConverter } from '../TimeSpanJsonConverter';
6
+
7
+ describe('when writing timespan with timespan converter', () => {
8
+ const converter = new TimeSpanJsonConverter();
9
+ const timespan = TimeSpan.parse('1.02:30:45.678');
10
+ const result = converter.write(timespan);
11
+
12
+ it('should return timespan string', () => result.should.equal('1.02:30:45.678'));
13
+ });
@@ -0,0 +1,28 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { Guid } from '../../Guid';
5
+ import { ValueMap } from '../../ValueMap';
6
+ import { JsonSerializer } from '../../JsonSerializer';
7
+
8
+ class SimpleType {
9
+ id: Guid = Guid.empty;
10
+ name: string = '';
11
+ }
12
+
13
+ describe('when writing valuemap with valuemap converter', () => {
14
+ const valueMap = new ValueMap<string, SimpleType>();
15
+
16
+ const item = new SimpleType();
17
+ item.id = Guid.parse('f47ac10b-58cc-4372-a567-0e02b2c3d479');
18
+ item.name = 'Test';
19
+ valueMap.set('key1', item);
20
+
21
+ const result = JsonSerializer.serialize(valueMap);
22
+ const parsed = JSON.parse(result);
23
+
24
+ it('should serialize to object', () => parsed.should.be.instanceof(Object));
25
+ it('should have key1 property', () => parsed.key1.should.not.be.undefined);
26
+ it('should serialize name property', () => parsed.key1.name.should.equal('Test'));
27
+ it('should serialize guid as string', () => parsed.key1.id.should.equal('f47ac10b-58cc-4372-a567-0e02b2c3d479'));
28
+ });
package/json/index.ts ADDED
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ export * from './JsonConverter';
5
+ export * from './DateJsonConverter';
6
+ export * from './GuidJsonConverter';
7
+ export * from './TimeSpanJsonConverter';
8
+ export * from './PointJsonConverter';
9
+ export * from './LineStringJsonConverter';
10
+ export * from './PolygonJsonConverter';
11
+ export * from './ValueMapJsonConverter';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/fundamentals",
3
- "version": "7.15.0",
3
+ "version": "7.15.2",
4
4
  "description": "",
5
5
  "author": "Cratis",
6
6
  "license": "MIT",
@@ -24,6 +24,16 @@
24
24
  "types": "./dist/esm/index.d.ts",
25
25
  "require": "./dist/cjs/index.js",
26
26
  "import": "./dist/esm/index.js"
27
+ },
28
+ "./geospatial": {
29
+ "types": "./dist/esm/geospatial/index.d.ts",
30
+ "import": "./dist/esm/geospatial/index.js",
31
+ "require": "./dist/cjs/geospatial/index.js"
32
+ },
33
+ "./json": {
34
+ "types": "./dist/esm/json/index.d.ts",
35
+ "import": "./dist/esm/json/index.js",
36
+ "require": "./dist/cjs/json/index.js"
27
37
  }
28
38
  },
29
39
  "scripts": {
package/Coordinate.ts DELETED
@@ -1,38 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
-
4
- import { field } from './fieldDecorator';
5
-
6
- /**
7
- * Represents a geographic coordinate with longitude and latitude.
8
- */
9
- export class Coordinate {
10
- @field(Number)
11
- longitude!: number;
12
-
13
- @field(Number)
14
- latitude!: number;
15
-
16
- /**
17
- * Creates a new Coordinate instance.
18
- * @param {number} longitude - The longitude of the coordinate.
19
- * @param {number} latitude - The latitude of the coordinate.
20
- */
21
- constructor(longitude?: number, latitude?: number) {
22
- if (longitude !== undefined && latitude !== undefined) {
23
- this.longitude = longitude;
24
- this.latitude = latitude;
25
- }
26
- }
27
-
28
- /**
29
- * Converts the Coordinate to a JSON representation.
30
- * @returns {object} JSON representation with longitude and latitude.
31
- */
32
- toJSON(): object {
33
- return {
34
- longitude: this.longitude,
35
- latitude: this.latitude
36
- };
37
- }
38
- }
@@ -1,7 +0,0 @@
1
- export declare class Coordinate {
2
- longitude: number;
3
- latitude: number;
4
- constructor(longitude?: number, latitude?: number);
5
- toJSON(): object;
6
- }
7
- //# sourceMappingURL=Coordinate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.d.ts","sourceRoot":"","sources":["../Coordinate.ts"],"names":[],"mappings":"AAQA,qBAAa,UAAU;IAEnB,SAAS,EAAG,MAAM,CAAC;IAGnB,QAAQ,EAAG,MAAM,CAAC;gBAON,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAWjD,MAAM,IAAI,MAAM;CAMnB"}
@@ -1,27 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { field } from './fieldDecorator';
3
- export class Coordinate {
4
- longitude;
5
- latitude;
6
- constructor(longitude, latitude) {
7
- if (longitude !== undefined && latitude !== undefined) {
8
- this.longitude = longitude;
9
- this.latitude = latitude;
10
- }
11
- }
12
- toJSON() {
13
- return {
14
- longitude: this.longitude,
15
- latitude: this.latitude
16
- };
17
- }
18
- }
19
- __decorate([
20
- field(Number),
21
- __metadata("design:type", Number)
22
- ], Coordinate.prototype, "longitude", void 0);
23
- __decorate([
24
- field(Number),
25
- __metadata("design:type", Number)
26
- ], Coordinate.prototype, "latitude", void 0);
27
- //# sourceMappingURL=Coordinate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.js","sourceRoot":"","sources":["../Coordinate.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAKzC,MAAM,OAAO,UAAU;IAEnB,SAAS,CAAU;IAGnB,QAAQ,CAAU;IAOlB,YAAY,SAAkB,EAAE,QAAiB;QAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC;IACL,CAAC;IAMD,MAAM;QACF,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;IACN,CAAC;CACJ;AA3BG;IADC,KAAK,CAAC,MAAM,CAAC;;6CACK;AAGnB;IADC,KAAK,CAAC,MAAM,CAAC;;4CACI"}
@@ -1,7 +0,0 @@
1
- export declare class Coordinate {
2
- longitude: number;
3
- latitude: number;
4
- constructor(longitude?: number, latitude?: number);
5
- toJSON(): object;
6
- }
7
- //# sourceMappingURL=Coordinate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.d.ts","sourceRoot":"","sources":["../../Coordinate.ts"],"names":[],"mappings":"AAQA,qBAAa,UAAU;IAEnB,SAAS,EAAG,MAAM,CAAC;IAGnB,QAAQ,EAAG,MAAM,CAAC;gBAON,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAWjD,MAAM,IAAI,MAAM;CAMnB"}
@@ -1,32 +0,0 @@
1
- 'use strict';
2
-
3
- var _tslib = require('./_virtual/_tslib.js');
4
- var fieldDecorator = require('./fieldDecorator.js');
5
-
6
- class Coordinate {
7
- longitude;
8
- latitude;
9
- constructor(longitude, latitude) {
10
- if (longitude !== undefined && latitude !== undefined) {
11
- this.longitude = longitude;
12
- this.latitude = latitude;
13
- }
14
- }
15
- toJSON() {
16
- return {
17
- longitude: this.longitude,
18
- latitude: this.latitude
19
- };
20
- }
21
- }
22
- _tslib.__decorate([
23
- fieldDecorator.field(Number),
24
- _tslib.__metadata("design:type", Number)
25
- ], Coordinate.prototype, "longitude", void 0);
26
- _tslib.__decorate([
27
- fieldDecorator.field(Number),
28
- _tslib.__metadata("design:type", Number)
29
- ], Coordinate.prototype, "latitude", void 0);
30
-
31
- exports.Coordinate = Coordinate;
32
- //# sourceMappingURL=Coordinate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.js","sources":["../../Coordinate.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { field } from './fieldDecorator';\n\n/**\n * Represents a geographic coordinate with longitude and latitude.\n */\nexport class Coordinate {\n @field(Number)\n longitude!: number;\n\n @field(Number)\n latitude!: number;\n\n /**\n * Creates a new Coordinate instance.\n * @param {number} longitude - The longitude of the coordinate.\n * @param {number} latitude - The latitude of the coordinate.\n */\n constructor(longitude?: number, latitude?: number) {\n if (longitude !== undefined && latitude !== undefined) {\n this.longitude = longitude;\n this.latitude = latitude;\n }\n }\n\n /**\n * Converts the Coordinate to a JSON representation.\n * @returns {object} JSON representation with longitude and latitude.\n */\n toJSON(): object {\n return {\n longitude: this.longitude,\n latitude: this.latitude\n };\n }\n}\n"],"names":["__decorate","field"],"mappings":";;;;;MAQa,UAAU,CAAA;AAEnB,IAAA,SAAS;AAGT,IAAA,QAAQ;IAOR,WAAA,CAAY,SAAkB,EAAE,QAAiB,EAAA;QAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;AACnD,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAC5B;IACJ;IAMA,MAAM,GAAA;QACF,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC;SAClB;IACL;AACH;AA3BGA,iBAAA,CAAA;IADCC,oBAAK,CAAC,MAAM,CAAC;;AACK,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAGnBD,iBAAA,CAAA;IADCC,oBAAK,CAAC,MAAM,CAAC;;AACI,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;;;;"}
@@ -1,7 +0,0 @@
1
- export declare class Coordinate {
2
- longitude: number;
3
- latitude: number;
4
- constructor(longitude?: number, latitude?: number);
5
- toJSON(): object;
6
- }
7
- //# sourceMappingURL=Coordinate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.d.ts","sourceRoot":"","sources":["../../Coordinate.ts"],"names":[],"mappings":"AAQA,qBAAa,UAAU;IAEnB,SAAS,EAAG,MAAM,CAAC;IAGnB,QAAQ,EAAG,MAAM,CAAC;gBAON,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAWjD,MAAM,IAAI,MAAM;CAMnB"}
@@ -1,30 +0,0 @@
1
- import { __decorate, __metadata } from './_virtual/_tslib.js';
2
- import { field } from './fieldDecorator.js';
3
-
4
- class Coordinate {
5
- longitude;
6
- latitude;
7
- constructor(longitude, latitude) {
8
- if (longitude !== undefined && latitude !== undefined) {
9
- this.longitude = longitude;
10
- this.latitude = latitude;
11
- }
12
- }
13
- toJSON() {
14
- return {
15
- longitude: this.longitude,
16
- latitude: this.latitude
17
- };
18
- }
19
- }
20
- __decorate([
21
- field(Number),
22
- __metadata("design:type", Number)
23
- ], Coordinate.prototype, "longitude", void 0);
24
- __decorate([
25
- field(Number),
26
- __metadata("design:type", Number)
27
- ], Coordinate.prototype, "latitude", void 0);
28
-
29
- export { Coordinate };
30
- //# sourceMappingURL=Coordinate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Coordinate.js","sources":["../../Coordinate.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { field } from './fieldDecorator';\n\n/**\n * Represents a geographic coordinate with longitude and latitude.\n */\nexport class Coordinate {\n @field(Number)\n longitude!: number;\n\n @field(Number)\n latitude!: number;\n\n /**\n * Creates a new Coordinate instance.\n * @param {number} longitude - The longitude of the coordinate.\n * @param {number} latitude - The latitude of the coordinate.\n */\n constructor(longitude?: number, latitude?: number) {\n if (longitude !== undefined && latitude !== undefined) {\n this.longitude = longitude;\n this.latitude = latitude;\n }\n }\n\n /**\n * Converts the Coordinate to a JSON representation.\n * @returns {object} JSON representation with longitude and latitude.\n */\n toJSON(): object {\n return {\n longitude: this.longitude,\n latitude: this.latitude\n };\n }\n}\n"],"names":[],"mappings":";;;MAQa,UAAU,CAAA;AAEnB,IAAA,SAAS;AAGT,IAAA,QAAQ;IAOR,WAAA,CAAY,SAAkB,EAAE,QAAiB,EAAA;QAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;AACnD,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAC5B;IACJ;IAMA,MAAM,GAAA;QACF,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC;SAClB;IACL;AACH;AA3BG,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;;AACK,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAGnB,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;;AACI,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;;;;"}
@@ -1,11 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
-
4
- import { Coordinate } from '../Coordinate';
5
-
6
- describe('when creating coordinate', () => {
7
- const coordinate = new Coordinate(10.5, 20.3);
8
-
9
- it('should have correct longitude', () => coordinate.longitude.should.equal(10.5));
10
- it('should have correct latitude', () => coordinate.latitude.should.equal(20.3));
11
- });
@@ -1,14 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
-
4
- import { Coordinate } from '../Coordinate';
5
- import { JsonSerializer } from '../JsonSerializer';
6
-
7
- describe('when deserializing coordinate', () => {
8
- const json = '{"longitude":10.5,"latitude":20.3}';
9
- const result = JsonSerializer.deserialize(Coordinate, json);
10
-
11
- it('should be a coordinate', () => result.should.be.instanceof(Coordinate));
12
- it('should have correct longitude', () => result.longitude.should.equal(10.5));
13
- it('should have correct latitude', () => result.latitude.should.equal(20.3));
14
- });
@@ -1,13 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
-
4
- import { Coordinate } from '../Coordinate';
5
- import { JsonSerializer } from '../JsonSerializer';
6
-
7
- describe('when deserializing coordinate with missing properties', () => {
8
- const json = '{"longitude":10.5}';
9
-
10
- it('should throw an error', () => {
11
- (() => JsonSerializer.deserialize(Coordinate, json)).should.throw('Cannot deserialize Coordinate: longitude and latitude are required');
12
- });
13
- });
@@ -1,14 +0,0 @@
1
- // Copyright (c) Cratis. All rights reserved.
2
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
-
4
- import { Coordinate } from '../Coordinate';
5
- import { JsonSerializer } from '../JsonSerializer';
6
-
7
- describe('when serializing coordinate', () => {
8
- const coordinate = new Coordinate(10.5, 20.3);
9
- const result = JsonSerializer.serialize(coordinate);
10
- const deserialized = JSON.parse(result);
11
-
12
- it('should have correct longitude', () => deserialized.longitude.should.equal(10.5));
13
- it('should have correct latitude', () => deserialized.latitude.should.equal(20.3));
14
- });