@o-zone/scorer-core 0.1.2 → 0.1.4

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,2 @@
1
+ export * from './position';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './position';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const withPosition: <T>(items: T[], sortBy: (item: T) => number | undefined) => (T & {
2
+ position: number | undefined;
3
+ })[];
4
+ //# sourceMappingURL=position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/helpers/position.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,GAAI,CAAC,EAC5B,OAAO,CAAC,EAAE,EACV,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,KACtC,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,EAiCxC,CAAC"}
@@ -0,0 +1,33 @@
1
+ export const withPosition = (items, sortBy) => {
2
+ const sorted = items
3
+ .map((item) => ({
4
+ item,
5
+ sortBy: sortBy(item),
6
+ }))
7
+ .sort((a, b) => {
8
+ if (a.sortBy === undefined && b.sortBy === undefined)
9
+ return 0;
10
+ if (a.sortBy === undefined)
11
+ return 1;
12
+ if (b.sortBy === undefined)
13
+ return -1;
14
+ return a.sortBy - b.sortBy;
15
+ });
16
+ return sorted
17
+ .reduce((acc, augmentedItem, sortedIndex) => {
18
+ const previous = sortedIndex > 0 ? acc[sortedIndex - 1] : undefined;
19
+ return acc.concat({
20
+ ...augmentedItem,
21
+ position: previous && previous.sortBy === augmentedItem.sortBy
22
+ ? previous.position
23
+ : augmentedItem.sortBy !== undefined
24
+ ? sortedIndex + 1
25
+ : undefined,
26
+ });
27
+ }, [])
28
+ .map((augmentedItem) => ({
29
+ ...augmentedItem.item,
30
+ position: augmentedItem.position,
31
+ }));
32
+ };
33
+ //# sourceMappingURL=position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../src/helpers/position.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAU,EACV,MAAuC,EACG,EAAE;IAC5C,MAAM,MAAM,GAAsB,KAAK;SACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;KACrB,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM;SACV,MAAM,CACL,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,OAAO,GAAG,CAAC,MAAM,CAAC;YAChB,GAAG,aAAa;YAChB,QAAQ,EACN,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;gBAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ;gBACnB,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,SAAS;oBAClC,CAAC,CAAC,WAAW,GAAG,CAAC;oBACjB,CAAC,CAAC,SAAS;SAClB,CAAC,CAAC;IACL,CAAC,EACD,EAAE,CACH;SACA,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvB,GAAG,aAAa,CAAC,IAAI;QACrB,QAAQ,EAAE,aAAa,CAAC,QAAQ;KACjC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=position.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.d.ts","sourceRoot":"","sources":["../../src/helpers/position.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { withPosition } from './position';
3
+ describe('withPosition', () => {
4
+ it('should return empty array for empty input', () => {
5
+ const result = withPosition([], (_item) => undefined);
6
+ expect(result).toEqual([]);
7
+ });
8
+ it('should assign position 1 to single item', () => {
9
+ const items = [{ id: 1 }];
10
+ const result = withPosition(items, (_item) => 100);
11
+ expect(result).toEqual([{ id: 1, position: 1 }]);
12
+ });
13
+ it('should assign sequential positions to items with different sort values', () => {
14
+ const items = [{ id: 1 }, { id: 2 }, { id: 3 }];
15
+ const result = withPosition(items, (item) => item.id * 10);
16
+ expect(result).toEqual([
17
+ { id: 1, position: 1 },
18
+ { id: 2, position: 2 },
19
+ { id: 3, position: 3 },
20
+ ]);
21
+ });
22
+ it('should assign same position to items with equal sort values', () => {
23
+ const items = [
24
+ { id: 1, duration: 100 },
25
+ { id: 2, duration: 100 },
26
+ { id: 3, duration: 100 },
27
+ ];
28
+ const result = withPosition(items, (item) => item.duration);
29
+ expect(result).toEqual([
30
+ { id: 1, duration: 100, position: 1 },
31
+ { id: 2, duration: 100, position: 1 },
32
+ { id: 3, duration: 100, position: 1 },
33
+ ]);
34
+ });
35
+ it('should handle 3 items at 2nd equal position correctly', () => {
36
+ const items = [
37
+ { id: 1, duration: 100 },
38
+ { id: 2, duration: 90 },
39
+ { id: 3, duration: 90 },
40
+ { id: 4, duration: 90 },
41
+ ];
42
+ const result = withPosition(items, (item) => item.duration);
43
+ expect(result).toEqual([
44
+ { id: 2, duration: 90, position: 1 },
45
+ { id: 3, duration: 90, position: 1 },
46
+ { id: 4, duration: 90, position: 1 },
47
+ { id: 1, duration: 100, position: 4 },
48
+ ]);
49
+ });
50
+ it('should skip position numbers when there are ties', () => {
51
+ const items = [
52
+ { id: 1, duration: 100 },
53
+ { id: 2, duration: 100 },
54
+ { id: 3, duration: 95 },
55
+ { id: 4, duration: 90 },
56
+ { id: 5, duration: 90 },
57
+ { id: 6, duration: 90 },
58
+ ];
59
+ const result = withPosition(items, (item) => item.duration);
60
+ expect(result).toEqual([
61
+ { id: 4, duration: 90, position: 1 },
62
+ { id: 5, duration: 90, position: 1 },
63
+ { id: 6, duration: 90, position: 1 },
64
+ { id: 3, duration: 95, position: 4 },
65
+ { id: 1, duration: 100, position: 5 },
66
+ { id: 2, duration: 100, position: 5 },
67
+ ]);
68
+ });
69
+ it('should handle items with undefined sort values at the end', () => {
70
+ const items = [
71
+ { id: 1, duration: 100 },
72
+ { id: 2, duration: 90 },
73
+ { id: 3, duration: undefined },
74
+ ];
75
+ const result = withPosition(items, (item) => item.duration);
76
+ expect(result).toEqual([
77
+ { id: 2, duration: 90, position: 1 },
78
+ { id: 1, duration: 100, position: 2 },
79
+ { id: 3, duration: undefined, position: undefined },
80
+ ]);
81
+ });
82
+ it('should handle all items with undefined sort values', () => {
83
+ const items = [{ id: 1 }, { id: 2 }, { id: 3 }];
84
+ const result = withPosition(items, () => undefined);
85
+ expect(result).toEqual([
86
+ { id: 1, position: undefined },
87
+ { id: 2, position: undefined },
88
+ { id: 3, position: undefined },
89
+ ]);
90
+ });
91
+ it('should sort items in ascending order by sort value', () => {
92
+ const items = [
93
+ { id: 1, duration: 50 },
94
+ { id: 2, duration: 100 },
95
+ { id: 3, duration: 75 },
96
+ ];
97
+ const result = withPosition(items, (item) => item.duration);
98
+ expect(result).toEqual([
99
+ { id: 1, duration: 50, position: 1 },
100
+ { id: 3, duration: 75, position: 2 },
101
+ { id: 2, duration: 100, position: 3 },
102
+ ]);
103
+ });
104
+ it('should handle negative sort values', () => {
105
+ const items = [
106
+ { id: 1, value: -10 },
107
+ { id: 2, value: 0 },
108
+ { id: 3, value: 10 },
109
+ ];
110
+ const result = withPosition(items, (item) => item.value);
111
+ expect(result).toEqual([
112
+ { id: 1, value: -10, position: 1 },
113
+ { id: 2, value: 0, position: 2 },
114
+ { id: 3, value: 10, position: 3 },
115
+ ]);
116
+ });
117
+ });
118
+ //# sourceMappingURL=position.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.js","sourceRoot":"","sources":["../../src/helpers/position.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;SACzB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;YACrC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;YACrC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;YACrC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;YACrC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YACnB,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YAClC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;YAChC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/router.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { type z } from 'zod';
1
+ import type { JSONSchema } from 'zod/v4/core';
2
2
  export type RouteHandler = (req: Request) => Promise<Response>;
3
3
  export type RouteConfig = RouteHandler | {
4
4
  handler: RouteHandler;
5
- configSchema: z.ZodJSONSchema;
5
+ configSchema: JSONSchema.BaseSchema;
6
6
  };
7
7
  export declare const router: (routes: Record<string, RouteConfig>) => ((req: Request) => Promise<Response>);
8
8
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,CAAC,EAAY,MAAM,KAAK,CAAC;AA+BvC,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/D,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,CAAC,CAAC,aAAa,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,MAAM,GAEf,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAClC,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAiDtC,CAAC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+B9C,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/D,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC,UAAU,CAAA;CAAE,CAAC;AAEnE,eAAO,MAAM,MAAM,GAEf,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAClC,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAiDtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o-zone/scorer-core",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Orienteering scoring core library with modular exports",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,6 +13,10 @@
13
13
  "import": "./dist/server.js",
14
14
  "types": "./dist/server.d.ts"
15
15
  },
16
+ "./helpers": {
17
+ "import": "./dist/helpers/index.js",
18
+ "types": "./dist/helpers/index.d.ts"
19
+ },
16
20
  "./race": {
17
21
  "import": "./dist/race/index.js",
18
22
  "types": "./dist/race/index.d.ts"
@@ -35,7 +39,8 @@
35
39
  "@changesets/cli": "^2.29.8",
36
40
  "@total-typescript/ts-reset": "^0.6.1",
37
41
  "@types/bun": "latest",
38
- "typescript": "^5.3.3"
42
+ "typescript": "^5.3.3",
43
+ "vitest": "^4.0.18"
39
44
  },
40
45
  "peerDependencies": {
41
46
  "typescript": "^5"
@@ -50,6 +55,7 @@
50
55
  "check:types": "tsc --noEmit",
51
56
  "format": "biome format . --write",
52
57
  "lint": "biome check .",
53
- "lint:fix": "biome check . --write"
58
+ "lint:fix": "biome check . --write",
59
+ "test": "vitest"
54
60
  }
55
61
  }