@gigapay-dev/contracts 1.4.3 → 1.4.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.
@@ -7,7 +7,7 @@ exports.OrderEndpoints = void 0;
7
7
  const zod_1 = __importDefault(require("zod"));
8
8
  const read_1 = require("./read");
9
9
  const create_1 = require("./create");
10
- const pagination_1 = require("../pagination");
10
+ const query_1 = require("./query");
11
11
  exports.OrderEndpoints = {
12
12
  create: {
13
13
  method: "POST",
@@ -18,7 +18,7 @@ exports.OrderEndpoints = {
18
18
  list: {
19
19
  method: "GET",
20
20
  path: "/orders",
21
- request: pagination_1.PaginationQuery,
21
+ request: query_1.OrdersListQuerySchema,
22
22
  response: zod_1.default.array(read_1.OrderReadResponseSchema),
23
23
  },
24
24
  getById: {
@@ -32,7 +32,7 @@ exports.OrderEndpoints = {
32
32
  getUserOrders: {
33
33
  method: "GET",
34
34
  path: "/orders/user",
35
- request: pagination_1.PaginationQuery,
35
+ request: query_1.OrdersListQuerySchema,
36
36
  response: zod_1.default.array(read_1.OrderReadResponseSchema),
37
37
  },
38
38
  getUserOrderById: {
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./create"), exports);
18
18
  __exportStar(require("./update"), exports);
19
19
  __exportStar(require("./read"), exports);
20
+ __exportStar(require("./query"), exports);
20
21
  __exportStar(require("./endpoints"), exports);
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OrdersListQuerySchema = exports.OrdersSortSchema = exports.OrdersFiltersSchema = exports.OrdersPeriodSchema = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const pagination_1 = require("../pagination");
9
+ const OrdersPeriodBase = zod_1.default.object({
10
+ period: zod_1.default.enum(["day", "week", "month", "year", "custom"]).default("day"),
11
+ start: zod_1.default.string().datetime().optional(),
12
+ end: zod_1.default.string().datetime().optional(),
13
+ });
14
+ exports.OrdersPeriodSchema = OrdersPeriodBase
15
+ .refine(v => v.period !== "custom" || (v.start && v.end), {
16
+ message: "start/end обязательны при period=custom",
17
+ })
18
+ .refine(v => v.period !== "custom" || new Date(v.start) < new Date(v.end), {
19
+ message: "start должен быть раньше end",
20
+ });
21
+ exports.OrdersFiltersSchema = zod_1.default.object({
22
+ email: zod_1.default.string().email().optional(),
23
+ steamUsername: zod_1.default.string().min(1).optional(),
24
+ status: zod_1.default.enum(["PENDING", "SUCCESS", "FAILED", "CANCELED"]).optional(),
25
+ });
26
+ exports.OrdersSortSchema = zod_1.default.object({
27
+ sortBy: zod_1.default.string().default("createdAt"),
28
+ sortDir: zod_1.default.enum(["asc", "desc"]).default("desc"),
29
+ });
30
+ exports.OrdersListQuerySchema = pagination_1.PaginationQuery
31
+ .merge(exports.OrdersFiltersSchema)
32
+ .merge(exports.OrdersSortSchema)
33
+ .merge(OrdersPeriodBase);
@@ -7,6 +7,7 @@ import {
7
7
  import { EndpointContract } from "../../types";
8
8
  import { OrderCreateRequestSchema, OrderCreateResponseSchema } from "./create";
9
9
  import { PaginationQuery } from "../pagination";
10
+ import { OrdersListQuerySchema } from "./query";
10
11
 
11
12
  export const OrderEndpoints = {
12
13
  create: {
@@ -18,7 +19,7 @@ export const OrderEndpoints = {
18
19
  list: {
19
20
  method: "GET",
20
21
  path: "/orders",
21
- request: PaginationQuery,
22
+ request: OrdersListQuerySchema,
22
23
  response: z.array(OrderReadResponseSchema),
23
24
  },
24
25
  getById: {
@@ -32,7 +33,7 @@ export const OrderEndpoints = {
32
33
  getUserOrders: {
33
34
  method: "GET",
34
35
  path: "/orders/user",
35
- request: PaginationQuery,
36
+ request: OrdersListQuerySchema,
36
37
  response: z.array(OrderReadResponseSchema),
37
38
  },
38
39
  getUserOrderById: {
@@ -1,4 +1,5 @@
1
1
  export * from './create'
2
2
  export * from './update'
3
3
  export * from './read'
4
+ export * from './query'
4
5
  export * from './endpoints'
@@ -0,0 +1,33 @@
1
+ import z from "zod";
2
+ import { PaginationQuery } from "../pagination";
3
+
4
+ const OrdersPeriodBase = z.object({
5
+ period: z.enum(["day", "week", "month", "year", "custom"]).default("day"),
6
+ start: z.string().datetime().optional(),
7
+ end: z.string().datetime().optional(),
8
+ });
9
+ export const OrdersPeriodSchema = OrdersPeriodBase
10
+ .refine(v => v.period !== "custom" || (v.start && v.end), {
11
+ message: "start/end обязательны при period=custom",
12
+ })
13
+ .refine(v => v.period !== "custom" || new Date(v.start!) < new Date(v.end!), {
14
+ message: "start должен быть раньше end",
15
+ });
16
+
17
+ export const OrdersFiltersSchema = z.object({
18
+ email: z.string().email().optional(),
19
+ steamUsername: z.string().min(1).optional(),
20
+ status: z.enum(["PENDING", "SUCCESS", "FAILED", "CANCELED"]).optional(),
21
+ });
22
+
23
+ export const OrdersSortSchema = z.object({
24
+ sortBy: z.string().default("createdAt"),
25
+ sortDir: z.enum(["asc", "desc"]).default("desc"),
26
+ });
27
+
28
+ export const OrdersListQuerySchema = PaginationQuery
29
+ .merge(OrdersFiltersSchema)
30
+ .merge(OrdersSortSchema)
31
+ .merge(OrdersPeriodBase);
32
+
33
+ export type OrdersListQuery = z.infer<typeof OrdersListQuerySchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gigapay-dev/contracts",
3
- "version": "1.4.3",
3
+ "version": "1.4.4",
4
4
  "main": "./build/index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",