@cratis/fundamentals 7.14.0 → 7.15.1

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 (221) hide show
  1. package/JsonSerializer.ts +88 -42
  2. package/README.md +10 -0
  3. package/dist/JsonSerializer.d.ts.map +1 -1
  4. package/dist/JsonSerializer.js +50 -40
  5. package/dist/JsonSerializer.js.map +1 -1
  6. package/dist/cjs/JsonSerializer.d.ts.map +1 -1
  7. package/dist/cjs/JsonSerializer.js +56 -40
  8. package/dist/cjs/JsonSerializer.js.map +1 -1
  9. package/dist/cjs/geospatial/LineString.d.ts +7 -0
  10. package/dist/cjs/geospatial/LineString.d.ts.map +1 -0
  11. package/dist/cjs/geospatial/LineString.js +20 -0
  12. package/dist/cjs/geospatial/LineString.js.map +1 -0
  13. package/dist/cjs/geospatial/LinearRing.d.ts +7 -0
  14. package/dist/cjs/geospatial/LinearRing.d.ts.map +1 -0
  15. package/dist/cjs/geospatial/LinearRing.js +17 -0
  16. package/dist/cjs/geospatial/LinearRing.js.map +1 -0
  17. package/dist/cjs/geospatial/Point.d.ts +7 -0
  18. package/dist/cjs/geospatial/Point.d.ts.map +1 -0
  19. package/dist/cjs/geospatial/Point.js +30 -0
  20. package/dist/cjs/geospatial/Point.js.map +1 -0
  21. package/dist/cjs/geospatial/Polygon.d.ts +8 -0
  22. package/dist/cjs/geospatial/Polygon.d.ts.map +1 -0
  23. package/dist/cjs/geospatial/Polygon.js +23 -0
  24. package/dist/cjs/geospatial/Polygon.js.map +1 -0
  25. package/dist/cjs/geospatial/index.d.ts +5 -0
  26. package/dist/cjs/geospatial/index.d.ts.map +1 -0
  27. package/dist/cjs/index.d.ts +2 -0
  28. package/dist/cjs/index.d.ts.map +1 -1
  29. package/dist/cjs/index.js +24 -0
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/json/DateJsonConverter.d.ts +8 -0
  32. package/dist/cjs/json/DateJsonConverter.d.ts.map +1 -0
  33. package/dist/cjs/json/DateJsonConverter.js +18 -0
  34. package/dist/cjs/json/DateJsonConverter.js.map +1 -0
  35. package/dist/cjs/json/GuidJsonConverter.d.ts +9 -0
  36. package/dist/cjs/json/GuidJsonConverter.d.ts.map +1 -0
  37. package/dist/cjs/json/GuidJsonConverter.js +19 -0
  38. package/dist/cjs/json/GuidJsonConverter.js.map +1 -0
  39. package/dist/cjs/json/JsonConverter.d.ts +8 -0
  40. package/dist/cjs/json/JsonConverter.d.ts.map +1 -0
  41. package/dist/cjs/json/JsonConverter.js +10 -0
  42. package/dist/cjs/json/JsonConverter.js.map +1 -0
  43. package/dist/cjs/json/LineStringJsonConverter.d.ts +9 -0
  44. package/dist/cjs/json/LineStringJsonConverter.d.ts.map +1 -0
  45. package/dist/cjs/json/LineStringJsonConverter.js +27 -0
  46. package/dist/cjs/json/LineStringJsonConverter.js.map +1 -0
  47. package/dist/cjs/json/PointJsonConverter.d.ts +9 -0
  48. package/dist/cjs/json/PointJsonConverter.d.ts.map +1 -0
  49. package/dist/cjs/json/PointJsonConverter.js +25 -0
  50. package/dist/cjs/json/PointJsonConverter.js.map +1 -0
  51. package/dist/cjs/json/PolygonJsonConverter.d.ts +9 -0
  52. package/dist/cjs/json/PolygonJsonConverter.d.ts.map +1 -0
  53. package/dist/cjs/json/PolygonJsonConverter.js +29 -0
  54. package/dist/cjs/json/PolygonJsonConverter.js.map +1 -0
  55. package/dist/cjs/json/TimeSpanJsonConverter.d.ts +9 -0
  56. package/dist/cjs/json/TimeSpanJsonConverter.d.ts.map +1 -0
  57. package/dist/cjs/json/TimeSpanJsonConverter.js +19 -0
  58. package/dist/cjs/json/TimeSpanJsonConverter.js.map +1 -0
  59. package/dist/cjs/json/ValueMapJsonConverter.d.ts +12 -0
  60. package/dist/cjs/json/ValueMapJsonConverter.d.ts.map +1 -0
  61. package/dist/cjs/json/ValueMapJsonConverter.js +33 -0
  62. package/dist/cjs/json/ValueMapJsonConverter.js.map +1 -0
  63. package/dist/cjs/json/index.d.ts +9 -0
  64. package/dist/cjs/json/index.d.ts.map +1 -0
  65. package/dist/esm/JsonSerializer.d.ts.map +1 -1
  66. package/dist/esm/JsonSerializer.js +56 -40
  67. package/dist/esm/JsonSerializer.js.map +1 -1
  68. package/dist/esm/geospatial/LineString.d.ts +7 -0
  69. package/dist/esm/geospatial/LineString.d.ts.map +1 -0
  70. package/dist/esm/geospatial/LineString.js +18 -0
  71. package/dist/esm/geospatial/LineString.js.map +1 -0
  72. package/dist/esm/geospatial/LinearRing.d.ts +7 -0
  73. package/dist/esm/geospatial/LinearRing.d.ts.map +1 -0
  74. package/dist/esm/geospatial/LinearRing.js +15 -0
  75. package/dist/esm/geospatial/LinearRing.js.map +1 -0
  76. package/dist/esm/geospatial/Point.d.ts +7 -0
  77. package/dist/esm/geospatial/Point.d.ts.map +1 -0
  78. package/dist/esm/geospatial/Point.js +28 -0
  79. package/dist/esm/geospatial/Point.js.map +1 -0
  80. package/dist/esm/geospatial/Polygon.d.ts +8 -0
  81. package/dist/esm/geospatial/Polygon.d.ts.map +1 -0
  82. package/dist/esm/geospatial/Polygon.js +21 -0
  83. package/dist/esm/geospatial/Polygon.js.map +1 -0
  84. package/dist/esm/geospatial/index.d.ts +5 -0
  85. package/dist/esm/geospatial/index.d.ts.map +1 -0
  86. package/dist/esm/index.d.ts +2 -0
  87. package/dist/esm/index.d.ts.map +1 -1
  88. package/dist/esm/index.js +12 -0
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/json/DateJsonConverter.d.ts +8 -0
  91. package/dist/esm/json/DateJsonConverter.d.ts.map +1 -0
  92. package/dist/esm/json/DateJsonConverter.js +16 -0
  93. package/dist/esm/json/DateJsonConverter.js.map +1 -0
  94. package/dist/esm/json/GuidJsonConverter.d.ts +9 -0
  95. package/dist/esm/json/GuidJsonConverter.d.ts.map +1 -0
  96. package/dist/esm/json/GuidJsonConverter.js +17 -0
  97. package/dist/esm/json/GuidJsonConverter.js.map +1 -0
  98. package/dist/esm/json/JsonConverter.d.ts +8 -0
  99. package/dist/esm/json/JsonConverter.d.ts.map +1 -0
  100. package/dist/esm/json/JsonConverter.js +8 -0
  101. package/dist/esm/json/JsonConverter.js.map +1 -0
  102. package/dist/esm/json/LineStringJsonConverter.d.ts +9 -0
  103. package/dist/esm/json/LineStringJsonConverter.d.ts.map +1 -0
  104. package/dist/esm/json/LineStringJsonConverter.js +25 -0
  105. package/dist/esm/json/LineStringJsonConverter.js.map +1 -0
  106. package/dist/esm/json/PointJsonConverter.d.ts +9 -0
  107. package/dist/esm/json/PointJsonConverter.d.ts.map +1 -0
  108. package/dist/esm/json/PointJsonConverter.js +23 -0
  109. package/dist/esm/json/PointJsonConverter.js.map +1 -0
  110. package/dist/esm/json/PolygonJsonConverter.d.ts +9 -0
  111. package/dist/esm/json/PolygonJsonConverter.d.ts.map +1 -0
  112. package/dist/esm/json/PolygonJsonConverter.js +27 -0
  113. package/dist/esm/json/PolygonJsonConverter.js.map +1 -0
  114. package/dist/esm/json/TimeSpanJsonConverter.d.ts +9 -0
  115. package/dist/esm/json/TimeSpanJsonConverter.d.ts.map +1 -0
  116. package/dist/esm/json/TimeSpanJsonConverter.js +17 -0
  117. package/dist/esm/json/TimeSpanJsonConverter.js.map +1 -0
  118. package/dist/esm/json/ValueMapJsonConverter.d.ts +12 -0
  119. package/dist/esm/json/ValueMapJsonConverter.d.ts.map +1 -0
  120. package/dist/esm/json/ValueMapJsonConverter.js +31 -0
  121. package/dist/esm/json/ValueMapJsonConverter.js.map +1 -0
  122. package/dist/esm/json/index.d.ts +9 -0
  123. package/dist/esm/json/index.d.ts.map +1 -0
  124. package/dist/geospatial/LineString.d.ts +7 -0
  125. package/dist/geospatial/LineString.d.ts.map +1 -0
  126. package/dist/geospatial/LineString.js +16 -0
  127. package/dist/geospatial/LineString.js.map +1 -0
  128. package/dist/geospatial/LinearRing.d.ts +7 -0
  129. package/dist/geospatial/LinearRing.d.ts.map +1 -0
  130. package/dist/geospatial/LinearRing.js +13 -0
  131. package/dist/geospatial/LinearRing.js.map +1 -0
  132. package/dist/geospatial/Point.d.ts +7 -0
  133. package/dist/geospatial/Point.d.ts.map +1 -0
  134. package/dist/geospatial/Point.js +25 -0
  135. package/dist/geospatial/Point.js.map +1 -0
  136. package/dist/geospatial/Polygon.d.ts +8 -0
  137. package/dist/geospatial/Polygon.d.ts.map +1 -0
  138. package/dist/geospatial/Polygon.js +19 -0
  139. package/dist/geospatial/Polygon.js.map +1 -0
  140. package/dist/geospatial/index.d.ts +5 -0
  141. package/dist/geospatial/index.d.ts.map +1 -0
  142. package/dist/geospatial/index.js +5 -0
  143. package/dist/geospatial/index.js.map +1 -0
  144. package/dist/index.d.ts +2 -0
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +2 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/json/DateJsonConverter.d.ts +8 -0
  149. package/dist/json/DateJsonConverter.d.ts.map +1 -0
  150. package/dist/json/DateJsonConverter.js +13 -0
  151. package/dist/json/DateJsonConverter.js.map +1 -0
  152. package/dist/json/GuidJsonConverter.d.ts +9 -0
  153. package/dist/json/GuidJsonConverter.d.ts.map +1 -0
  154. package/dist/json/GuidJsonConverter.js +14 -0
  155. package/dist/json/GuidJsonConverter.js.map +1 -0
  156. package/dist/json/JsonConverter.d.ts +8 -0
  157. package/dist/json/JsonConverter.d.ts.map +1 -0
  158. package/dist/json/JsonConverter.js +6 -0
  159. package/dist/json/JsonConverter.js.map +1 -0
  160. package/dist/json/LineStringJsonConverter.d.ts +9 -0
  161. package/dist/json/LineStringJsonConverter.d.ts.map +1 -0
  162. package/dist/json/LineStringJsonConverter.js +21 -0
  163. package/dist/json/LineStringJsonConverter.js.map +1 -0
  164. package/dist/json/PointJsonConverter.d.ts +9 -0
  165. package/dist/json/PointJsonConverter.d.ts.map +1 -0
  166. package/dist/json/PointJsonConverter.js +20 -0
  167. package/dist/json/PointJsonConverter.js.map +1 -0
  168. package/dist/json/PolygonJsonConverter.d.ts +9 -0
  169. package/dist/json/PolygonJsonConverter.d.ts.map +1 -0
  170. package/dist/json/PolygonJsonConverter.js +22 -0
  171. package/dist/json/PolygonJsonConverter.js.map +1 -0
  172. package/dist/json/TimeSpanJsonConverter.d.ts +9 -0
  173. package/dist/json/TimeSpanJsonConverter.d.ts.map +1 -0
  174. package/dist/json/TimeSpanJsonConverter.js +14 -0
  175. package/dist/json/TimeSpanJsonConverter.js.map +1 -0
  176. package/dist/json/ValueMapJsonConverter.d.ts +12 -0
  177. package/dist/json/ValueMapJsonConverter.d.ts.map +1 -0
  178. package/dist/json/ValueMapJsonConverter.js +28 -0
  179. package/dist/json/ValueMapJsonConverter.js.map +1 -0
  180. package/dist/json/index.d.ts +9 -0
  181. package/dist/json/index.d.ts.map +1 -0
  182. package/dist/json/index.js +9 -0
  183. package/dist/json/index.js.map +1 -0
  184. package/dist/tsconfig.tsbuildinfo +1 -1
  185. package/geospatial/LineString.ts +33 -0
  186. package/geospatial/LinearRing.ts +30 -0
  187. package/geospatial/Point.ts +36 -0
  188. package/geospatial/Polygon.ts +37 -0
  189. package/geospatial/index.ts +7 -0
  190. package/index.ts +2 -0
  191. package/json/DateJsonConverter.ts +27 -0
  192. package/json/GuidJsonConverter.ts +28 -0
  193. package/json/JsonConverter.ts +40 -0
  194. package/json/LineStringJsonConverter.ts +35 -0
  195. package/json/PointJsonConverter.ts +34 -0
  196. package/json/PolygonJsonConverter.ts +38 -0
  197. package/json/TimeSpanJsonConverter.ts +28 -0
  198. package/json/ValueMapJsonConverter.ts +57 -0
  199. package/json/for_DateJsonConverter/when_reading_date_with_date_converter.ts +12 -0
  200. package/json/for_DateJsonConverter/when_writing_date_with_date_converter.ts +12 -0
  201. package/json/for_GuidJsonConverter/when_reading_guid_with_guid_converter.ts +13 -0
  202. package/json/for_GuidJsonConverter/when_writing_guid_with_guid_converter.ts +13 -0
  203. package/json/for_LineStringJsonConverter/when_deserializing_linestring.ts +19 -0
  204. package/json/for_LineStringJsonConverter/when_reading_linestring_with_linestring_converter.ts +24 -0
  205. package/json/for_LineStringJsonConverter/when_serializing_linestring.ts +25 -0
  206. package/json/for_LineStringJsonConverter/when_writing_linestring_with_linestring_converter.ts +27 -0
  207. package/json/for_PointJsonConverter/when_deserializing_point.ts +14 -0
  208. package/json/for_PointJsonConverter/when_reading_point_with_point_converter.ts +14 -0
  209. package/json/for_PointJsonConverter/when_serializing_point.ts +17 -0
  210. package/json/for_PointJsonConverter/when_writing_point_with_point_converter.ts +16 -0
  211. package/json/for_PolygonJsonConverter/when_deserializing_polygon_with_holes.ts +28 -0
  212. package/json/for_PolygonJsonConverter/when_deserializing_polygon_with_no_holes.ts +22 -0
  213. package/json/for_PolygonJsonConverter/when_reading_polygon_with_polygon_converter.ts +27 -0
  214. package/json/for_PolygonJsonConverter/when_serializing_polygon_with_holes.ts +53 -0
  215. package/json/for_PolygonJsonConverter/when_serializing_polygon_with_no_holes.ts +33 -0
  216. package/json/for_PolygonJsonConverter/when_writing_polygon_with_polygon_converter.ts +35 -0
  217. package/json/for_TimeSpanJsonConverter/when_reading_timespan_with_timespan_converter.ts +16 -0
  218. package/json/for_TimeSpanJsonConverter/when_writing_timespan_with_timespan_converter.ts +13 -0
  219. package/json/for_ValueMapJsonConverter/when_writing_valuemap_with_valuemap_converter.ts +28 -0
  220. package/json/index.ts +11 -0
  221. package/package.json +11 -1
@@ -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.14.0",
3
+ "version": "7.15.1",
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": {