@wisemen/coordinates 0.0.13 → 0.0.14

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.
@@ -0,0 +1,8 @@
1
+ import { CoordinatesQuery } from './coordinates.query.js';
2
+ export declare class CoordinatesQueryBuilder {
3
+ private readonly query;
4
+ constructor();
5
+ withLatitude(latitude: number | string): this;
6
+ withLongitude(longitude: number | string): this;
7
+ build(): CoordinatesQuery;
8
+ }
@@ -0,0 +1,19 @@
1
+ import { CoordinatesQuery } from './coordinates.query.js';
2
+ export class CoordinatesQueryBuilder {
3
+ query;
4
+ constructor() {
5
+ this.query = new CoordinatesQuery();
6
+ }
7
+ withLatitude(latitude) {
8
+ this.query.latitude = latitude.toString();
9
+ return this;
10
+ }
11
+ withLongitude(longitude) {
12
+ this.query.longitude = longitude.toString();
13
+ return this;
14
+ }
15
+ build() {
16
+ return this.query;
17
+ }
18
+ }
19
+ //# sourceMappingURL=coordinates-query.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates-query.builder.js","sourceRoot":"","sources":["../lib/coordinates-query.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,OAAO,uBAAuB;IACjB,KAAK,CAAkB;IAExC;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAA;IACrC,CAAC;IAED,YAAY,CAAC,QAAyB;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,SAA0B;QACtC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { Coordinates } from './coordinates.js';
2
+ export declare class CoordinatesQuery {
3
+ longitude: string;
4
+ latitude: string;
5
+ toCoordinates(): Coordinates | null;
6
+ }
@@ -0,0 +1,40 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ApiProperty } from '@nestjs/swagger';
11
+ import { IsNumberString, Matches } from 'class-validator';
12
+ import { Coordinates } from './coordinates.js';
13
+ export class CoordinatesQuery {
14
+ longitude;
15
+ latitude;
16
+ toCoordinates() {
17
+ return new Coordinates(parseFloat(this.latitude), parseFloat(this.longitude));
18
+ }
19
+ }
20
+ __decorate([
21
+ ApiProperty({
22
+ type: String,
23
+ example: '5.420593668305642',
24
+ description: 'Longitude coordinate for filtering'
25
+ }),
26
+ Matches(/^(\+|-)?(?:180(?:(?:\.0{1,8})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,8})?))$/),
27
+ IsNumberString(),
28
+ __metadata("design:type", String)
29
+ ], CoordinatesQuery.prototype, "longitude", void 0);
30
+ __decorate([
31
+ ApiProperty({
32
+ type: String,
33
+ example: '50.894565509367055',
34
+ description: 'Latitude coordinate for filtering'
35
+ }),
36
+ Matches(/^(\+|-)?(?:90(?:(?:\.0{1,8})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,8})?))$/),
37
+ IsNumberString(),
38
+ __metadata("design:type", String)
39
+ ], CoordinatesQuery.prototype, "latitude", void 0);
40
+ //# sourceMappingURL=coordinates.query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates.query.js","sourceRoot":"","sources":["../lib/coordinates.query.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,OAAO,gBAAgB;IAQ3B,SAAS,CAAQ;IASjB,QAAQ,CAAQ;IAEhB,aAAa;QACX,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/E,CAAC;CACF;AAdC;IAPC,WAAW,CAAC;QACX,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACD,OAAO,CAAC,yFAAyF,CAAC;IAClG,cAAc,EAAE;;mDACA;AASjB;IAPC,WAAW,CAAC;QACX,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,mCAAmC;KACjD,CAAC;IACD,OAAO,CAAC,4EAA4E,CAAC;IACrF,cAAc,EAAE;;kDACD"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './coordinates.js';
2
2
  export * from './coordinates.command.js';
3
3
  export * from './coordinates-command.builder.js';
4
+ export * from './coordinates.query.js';
5
+ export * from './coordinates-query.builder.js';
4
6
  export * from './coordinates.response.js';
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './coordinates.js';
2
2
  export * from './coordinates.command.js';
3
3
  export * from './coordinates-command.builder.js';
4
+ export * from './coordinates.query.js';
5
+ export * from './coordinates-query.builder.js';
4
6
  export * from './coordinates.response.js';
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,83 @@
1
+ import { describe, it } from 'node:test';
2
+ import { expect } from 'expect';
3
+ import { validate } from 'class-validator';
4
+ import { CoordinatesQuery } from '../coordinates.query.js';
5
+ import { CoordinatesQueryBuilder } from '../coordinates-query.builder.js';
6
+ describe('CoordinatesQuery', () => {
7
+ describe('validation', () => {
8
+ it('should pass validation with valid coordinates', async () => {
9
+ const query = new CoordinatesQuery();
10
+ query.latitude = '50.894565';
11
+ query.longitude = '5.420593';
12
+ const errors = await validate(query);
13
+ expect(errors.length).toBe(0);
14
+ });
15
+ it('should pass validation with valid (long) coordinates', async () => {
16
+ const query = new CoordinatesQuery();
17
+ query.latitude = '50.12345678';
18
+ query.longitude = '5.12345678';
19
+ const errors = await validate(query);
20
+ expect(errors.length).toBe(0);
21
+ });
22
+ it('should fail validation with invalid latitude string', async () => {
23
+ const query = new CoordinatesQuery();
24
+ query.latitude = 'invalid'; // Invalid number string
25
+ query.longitude = '5.420593';
26
+ const errors = await validate(query);
27
+ expect(errors.length).toBeGreaterThan(0);
28
+ expect(errors[0].property).toBe('latitude');
29
+ });
30
+ it('should fail validation with invalid longitude string', async () => {
31
+ const query = new CoordinatesQuery();
32
+ query.latitude = '50.894565';
33
+ query.longitude = 'invalid'; // Invalid number string
34
+ const errors = await validate(query);
35
+ expect(errors.length).toBeGreaterThan(0);
36
+ expect(errors[0].property).toBe('longitude');
37
+ });
38
+ it('should fail validation with out of range latitude', async () => {
39
+ const query = new CoordinatesQuery();
40
+ query.latitude = '95.0'; // Out of valid latitude range
41
+ query.longitude = '5.420593';
42
+ const errors = await validate(query);
43
+ expect(errors.length).toBeGreaterThan(0);
44
+ expect(errors[0].property).toBe('latitude');
45
+ });
46
+ it('should fail validation with out of range longitude', async () => {
47
+ const query = new CoordinatesQuery();
48
+ query.latitude = '50.894565';
49
+ query.longitude = '185.0'; // Out of valid longitude range
50
+ const errors = await validate(query);
51
+ expect(errors.length).toBeGreaterThan(0);
52
+ expect(errors[0].property).toBe('longitude');
53
+ });
54
+ });
55
+ describe('toCoordinates', () => {
56
+ it('should return coordinates when both latitude and longitude are set', () => {
57
+ const query = new CoordinatesQuery();
58
+ query.latitude = '50.894565';
59
+ query.longitude = '5.420593';
60
+ const coordinates = query.toCoordinates();
61
+ expect(coordinates).not.toBeNull();
62
+ expect(coordinates?.latitude).toBe(50.894565);
63
+ expect(coordinates?.longitude).toBe(5.420593);
64
+ });
65
+ });
66
+ });
67
+ describe('CoordinatesQueryBuilder', () => {
68
+ it('should build query with latitude', () => {
69
+ const query = new CoordinatesQueryBuilder()
70
+ .withLatitude(50.894565509367055)
71
+ .build();
72
+ expect(query.latitude).toBe('50.894565509367055');
73
+ expect(query.longitude).toBeUndefined();
74
+ });
75
+ it('should build query with longitude', () => {
76
+ const query = new CoordinatesQueryBuilder()
77
+ .withLongitude(5.420593668305642)
78
+ .build();
79
+ expect(query.longitude).toBe('5.420593668305642');
80
+ expect(query.latitude).toBeUndefined();
81
+ });
82
+ });
83
+ //# sourceMappingURL=coordinates.query.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates.query.unit.test.js","sourceRoot":"","sources":["../../lib/tests/coordinates.query.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/coordinates",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",