@o-zone/scorer-core 1.1.3 → 2.0.0

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.
@@ -19,52 +19,52 @@ const RaceTimingSchema = z
19
19
  .loose();
20
20
  const RaceRunSchema = z
21
21
  .object({
22
- id: z.number(),
23
- run_status: z.string().nullish(),
24
22
  class_position: z.number().nullish(),
23
+ id: z.number(),
25
24
  race_timing: RaceTimingSchema,
25
+ run_status: z.string().nullish(),
26
26
  })
27
27
  .loose();
28
28
  const AthleteSchema = z
29
29
  .object({
30
- id: z.number(),
31
30
  club_id: z.number().nullish(),
31
+ id: z.number(),
32
32
  is_nz_eligible: z.boolean().nullish().default(true),
33
33
  })
34
34
  .loose();
35
35
  const RaceEntrySchema = z
36
36
  .object({
37
- id: z.number(),
38
- status: z.enum(['entered', 'cancelled', 'implied', 'did-not-start']),
39
37
  adhoc_name: z.string().nullish(),
40
- is_group: z.boolean().nullish(),
41
38
  athlete: AthleteSchema.nullish(),
39
+ id: z.number(),
40
+ is_group: z.boolean().nullish(),
42
41
  race_runs: z.array(RaceRunSchema),
42
+ status: z.enum(['entered', 'cancelled', 'implied', 'did-not-start']),
43
43
  })
44
44
  .loose();
45
45
  const RaceClassSchema = z
46
46
  .object({
47
+ course_variant_id: z.number().nullish(),
47
48
  id: z.number(),
48
49
  name: z.string(),
49
- course_variant_id: z.number().nullish(),
50
- race_format: RaceClassFormatSchema.nullish(),
51
50
  race_entries: z.array(RaceEntrySchema),
51
+ race_format: RaceClassFormatSchema.nullish(),
52
52
  })
53
53
  .loose();
54
54
  const EventSchema = z
55
55
  .object({
56
+ classification: z.enum(['local', 'regional', 'national', 'international']),
56
57
  id: z.number(),
57
58
  name: z.string(),
58
- classification: z.enum(['local', 'regional', 'national', 'international']),
59
59
  })
60
60
  .loose();
61
61
  const RaceSchema = z
62
62
  .object({
63
+ event: EventSchema,
63
64
  id: z.number(),
64
65
  name: z.string(),
65
- event: EventSchema,
66
- race_format: RaceFormatSchema.nullish(),
67
66
  race_classes: z.array(RaceClassSchema),
67
+ race_format: RaceFormatSchema.nullish(),
68
68
  })
69
69
  .loose();
70
70
  const CompetitionClassSchema = z
@@ -76,9 +76,9 @@ const CompetitionClassSchema = z
76
76
  .loose();
77
77
  const CompetitionSchema = z
78
78
  .object({
79
+ competition_classes: z.array(CompetitionClassSchema),
79
80
  id: z.number(),
80
81
  name: z.string(),
81
- competition_classes: z.array(CompetitionClassSchema),
82
82
  })
83
83
  .loose();
84
84
  export const EliminationRaceSchema = z
@@ -91,8 +91,8 @@ export const RaceScoreRequestSchema = z
91
91
  .object({
92
92
  competition: CompetitionSchema,
93
93
  config: z.record(z.string(), z.any()),
94
- race: RaceSchema,
95
94
  eliminationRaces: z.array(EliminationRaceSchema).nullish(),
95
+ race: RaceSchema,
96
96
  score: z.boolean().default(true),
97
97
  tiebreak: z.boolean().default(false),
98
98
  })
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/race/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;CACnE,CAAC,CAAC;AAKH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;CACnE,CAAC,CAAC;AAKH,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,qBAAqB,CAAC;SAC5B,OAAO,EAAE;CACb,CAAC;KACD,KAAK,EAAE,CAAC;AAKX,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IACpC,WAAW,EAAE,gBAAgB;CAC9B,CAAC;KACD,KAAK,EAAE,CAAC;AAKX,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC7B,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpD,CAAC;KACD,KAAK,EAAE,CAAC;AAKX,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACpE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;IAC/B,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;CAClC,CAAC;KACD,KAAK,EAAE,CAAC;AASX,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,qBAAqB,CAAC,OAAO,EAAE;IAC5C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACvC,CAAC;KACD,KAAK,EAAE,CAAC;AASX,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;CAC3E,CAAC;KACD,KAAK,EAAE,CAAC;AAKX,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE;IACvC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACvC,CAAC;KACD,KAAK,EAAE,CAAC;AAcX,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;CACjC,CAAC;KACD,KAAK,EAAE,CAAC;AAOX,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CACrD,CAAC;KACD,KAAK,EAAE,CAAC;AASX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,EAAE,UAAU;CACjB,CAAC;KACD,KAAK,EAAE,CAAC;AAOX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACrC,IAAI,EAAE,UAAU;IAChB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE;IAC1D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACrC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/race/request.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,12 +1,21 @@
1
- import type { JSONSchema } from 'zod/v4/core';
2
- export type RouteHandler = (req: Request) => Promise<Response>;
1
+ import { type ZodType } from 'zod';
2
+ import { type CompetitionScoreRequestLoose } from './competition';
3
+ import { type RaceScoreRequestLoose } from './race';
4
+ export type RouteHandler<B = Record<string, unknown>> = (req: Request, body: B) => Promise<Response>;
3
5
  export type ScorerType = 'race' | 'competition';
4
- export type RouteConfig = {
5
- configSchema?: JSONSchema.BaseSchema;
6
- handler: RouteHandler;
6
+ export type RouteConfig<B = Record<string, unknown>, C = unknown> = {
7
+ bodySchema: ZodType<B>;
8
+ configSchema?: ZodType<C>;
9
+ handler: RouteHandler<B & {
10
+ config: C;
11
+ }>;
7
12
  scorerType: ScorerType;
8
13
  };
9
- export declare const competitionScorer: (handler: RouteHandler, configSchema?: JSONSchema.BaseSchema) => RouteConfig;
10
- export declare const raceScorer: (handler: RouteHandler, configSchema?: JSONSchema.BaseSchema) => RouteConfig;
14
+ export declare const competitionScorer: <C>(handler: RouteHandler<CompetitionScoreRequestLoose & {
15
+ config: C;
16
+ }>, configSchema?: ZodType<C>) => RouteConfig<CompetitionScoreRequestLoose, C>;
17
+ export declare const raceScorer: <C>(handler: RouteHandler<RaceScoreRequestLoose & {
18
+ config: C;
19
+ }>, configSchema?: ZodType<C>) => RouteConfig<RaceScoreRequestLoose, C>;
11
20
  export declare const router: (routes: Record<string, RouteConfig>) => ((req: Request) => Promise<Response>);
12
21
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4B9C,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IACrC,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,YAAY,EACrB,eAAe,UAAU,CAAC,UAAU,KACnC,WAID,CAAC;AAEH,eAAO,MAAM,UAAU,GACrB,SAAS,YAAY,EACrB,eAAe,UAAU,CAAC,UAAU,KACnC,WAID,CAAC;AAEH,eAAO,MAAM,MAAM,GAEf,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAClC,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAwDtC,CAAC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAE7C,OAAO,EACL,KAAK,4BAA4B,EAElC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,qBAAqB,EAA0B,MAAM,QAAQ,CAAC;AAkB5E,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACtD,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,KACJ,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI;IAClE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,SAAS,YAAY,CAAC,4BAA4B,GAAG;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EACnE,eAAe,OAAO,CAAC,CAAC,CAAC,KACxB,WAAW,CAAC,4BAA4B,EAAE,CAAC,CAK5C,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,SAAS,YAAY,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EAC5D,eAAe,OAAO,CAAC,CAAC,CAAC,KACxB,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAKrC,CAAC;AAEH,eAAO,MAAM,MAAM,GAEf,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAClC,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA0GtC,CAAC"}
package/dist/router.js CHANGED
@@ -1,5 +1,7 @@
1
- import { authenticate } from './auth';
2
1
  import { ZodError } from 'zod';
2
+ import { authenticate } from './auth';
3
+ import { CompetitionScoreRequestSchema, } from './competition';
4
+ import { RaceScoreRequestSchema } from './race';
3
5
  const verify = async (req, body) => {
4
6
  const token = req.headers.get('O-Zone-Endpoint-Verification');
5
7
  if (!token) {
@@ -9,28 +11,22 @@ const verify = async (req, body) => {
9
11
  console.log('[verify]', 'Authorized', token);
10
12
  return new Response(JSON.stringify(body), {
11
13
  headers: {
12
- 'O-Zone-Endpoint-Verification-Response': token,
13
14
  'Content-Type': 'application/json',
15
+ 'O-Zone-Endpoint-Verification-Response': token,
14
16
  },
15
17
  });
16
18
  };
17
- const getHandler = (config) => {
18
- if (!config)
19
- return undefined;
20
- if (typeof config === 'function') {
21
- return config;
22
- }
23
- return config.handler;
24
- };
25
19
  export const competitionScorer = (handler, configSchema) => ({
20
+ bodySchema: CompetitionScoreRequestSchema,
21
+ configSchema,
26
22
  handler,
27
23
  scorerType: 'competition',
28
- configSchema,
29
24
  });
30
25
  export const raceScorer = (handler, configSchema) => ({
26
+ bodySchema: RaceScoreRequestSchema,
27
+ configSchema,
31
28
  handler,
32
29
  scorerType: 'race',
33
- configSchema,
34
30
  });
35
31
  export const router = (routes) => async (req) => {
36
32
  try {
@@ -40,9 +36,9 @@ export const router = (routes) => async (req) => {
40
36
  case 'OPTIONS':
41
37
  return new Response(null, {
42
38
  headers: {
43
- 'Access-Control-Allow-Origin': 'null',
44
- 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
45
39
  'Access-Control-Allow-Headers': 'Content-Type, Authorization, O-Zone-Endpoint-Verification',
40
+ 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
41
+ 'Access-Control-Allow-Origin': 'null',
46
42
  },
47
43
  });
48
44
  case 'GET': {
@@ -54,17 +50,44 @@ export const router = (routes) => async (req) => {
54
50
  }
55
51
  console.log('[verify]', `Endpoint ${url.pathname}`);
56
52
  return verify(req, {
53
+ config_schema: config.configSchema?.toJSONSchema(),
57
54
  type: config.scorerType,
58
- config_schema: config.configSchema,
59
55
  });
60
56
  }
61
57
  case 'POST': {
62
58
  const url = new URL(req.url);
63
- const routeHandler = getHandler(routes[url.pathname]);
64
- if (!routeHandler) {
59
+ const config = routes[url.pathname];
60
+ if (!config) {
65
61
  return new Response('Not Found', { status: 404 });
66
62
  }
67
- return routeHandler(req);
63
+ const rawBody = await req.json().catch((err) => {
64
+ console.warn('[router]', `Invalid JSON body for ${url.pathname}`, err);
65
+ return undefined;
66
+ });
67
+ if (rawBody === undefined) {
68
+ return new Response('Invalid JSON body', { status: 400 });
69
+ }
70
+ const parsedBodyResult = config.bodySchema.safeParse(rawBody);
71
+ if (!parsedBodyResult.success) {
72
+ console.warn('[router]', `Request body parse failure for ${url.pathname}`, parsedBodyResult.error.issues);
73
+ return new Response(JSON.stringify(parsedBodyResult.error.issues), {
74
+ headers: { 'Content-Type': 'application/json' },
75
+ status: 400,
76
+ });
77
+ }
78
+ const parsedBody = parsedBodyResult.data;
79
+ if (config.configSchema) {
80
+ const parsedConfigResult = config.configSchema.safeParse(parsedBody.config);
81
+ if (!parsedConfigResult.success) {
82
+ console.warn('[router]', `Config parse failure for ${url.pathname}`, parsedConfigResult.error.issues);
83
+ return new Response(JSON.stringify(parsedConfigResult.error.issues), {
84
+ headers: { 'Content-Type': 'application/json' },
85
+ status: 400,
86
+ });
87
+ }
88
+ parsedBody.config = parsedConfigResult.data;
89
+ }
90
+ return config.handler(req, parsedBody);
68
91
  }
69
92
  default:
70
93
  return new Response('Method Not Allowed', { status: 405 });
@@ -76,8 +99,8 @@ export const router = (routes) => async (req) => {
76
99
  }
77
100
  if (err instanceof ZodError) {
78
101
  return new Response(JSON.stringify(err.issues), {
79
- status: 400,
80
102
  headers: { 'Content-Type': 'application/json' },
103
+ status: 400,
81
104
  });
82
105
  }
83
106
  console.error('Internal server error', err);
@@ -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/dist/server.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type RouteConfig } from './router.js';
2
- export { competitionScorer, raceScorer, } from './router.js';
3
2
  export type { RouteConfig, RouteHandler, } from './router.js';
3
+ export { competitionScorer, raceScorer, } from './router.js';
4
4
  export declare namespace Scorer {
5
5
  const serve: (routes: Record<string, RouteConfig>) => void;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AAKrB,yBAAiB,MAAM,CAAC;IACf,MAAM,KAAK,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAOxD,CAAC;CACH;AAED,eAAO,MAAM,IAAI,GACf,MACI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,GACpD;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,aAQtC,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,aAAa,CAAC;AAEvD,YAAY,EACV,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC;AAKrB,yBAAiB,MAAM,CAAC;IACf,MAAM,KAAK,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAOxD,CAAC;CACH;AAED,eAAO,MAAM,IAAI,GACf,MACI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,GACpD;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,aAQtC,CAAC"}
package/dist/server.js CHANGED
@@ -5,14 +5,14 @@ export var Scorer;
5
5
  (function (Scorer) {
6
6
  Scorer.serve = (routes) => {
7
7
  const server = Bun.serve({
8
- port: getPort(),
9
8
  fetch: router(routes),
9
+ port: getPort(),
10
10
  });
11
11
  console.info(`Listening on ${server.url}`);
12
12
  };
13
13
  })(Scorer || (Scorer = {}));
14
14
  export const done = (body) => new Response(JSON.stringify({ ...body, entries: body.success ? body.entries : null }), {
15
- status: 200,
16
15
  headers: { 'Content-Type': 'application/json' },
16
+ status: 200,
17
17
  });
18
18
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC;AAOrB,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElE,MAAM,KAAW,MAAM,CAStB;AATD,WAAiB,MAAM;IACR,YAAK,GAAG,CAAC,MAAmC,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,OAAO,EAAE;YACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;SACtB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC,EATgB,MAAM,KAAN,MAAM,QAStB;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAGuC,EACvC,EAAE,CACF,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EACxE;IACE,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;CAChD,CACF,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,aAAa,CAAC;AAMvD,OAAO,EACL,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElE,MAAM,KAAW,MAAM,CAStB;AATD,WAAiB,MAAM;IACR,YAAK,GAAG,CAAC,MAAmC,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,OAAO,EAAE;SAChB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC,EATgB,MAAM,KAAN,MAAM,QAStB;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAGuC,EACvC,EAAE,CACF,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EACxE;IACE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC/C,MAAM,EAAE,GAAG;CACZ,CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o-zone/scorer-core",
3
- "version": "1.1.3",
3
+ "version": "2.0.0",
4
4
  "description": "Orienteering scoring core library with modular exports",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,7 +34,7 @@
34
34
  "zod": "^4.3.6"
35
35
  },
36
36
  "devDependencies": {
37
- "@biomejs/biome": "^2.3.11",
37
+ "@biomejs/biome": "^2.4.14",
38
38
  "@changesets/changelog-github": "^0.5.0",
39
39
  "@changesets/cli": "^2.29.8",
40
40
  "@total-typescript/ts-reset": "^0.6.1",