@pksep/zod-shared 0.0.533 → 0.0.535

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 (49) hide show
  1. package/dist/action/enums/enums.d.ts +6 -1
  2. package/dist/action/enums/enums.js +5 -0
  3. package/dist/assemble/dto/assembly-paginate.dto.d.ts +19 -7
  4. package/dist/assemble/dto/assembly-paginate.dto.js +1 -2
  5. package/dist/assemble/dto/get-assemble-pagination-sclad.dto.d.ts +19 -7
  6. package/dist/assemble/dto/get-assemble-pagination-sclad.dto.js +1 -2
  7. package/dist/assemble/dto/get-assemble-pagination.dto.d.ts +19 -7
  8. package/dist/assemble/dto/get-assemble-pagination.dto.js +1 -2
  9. package/dist/cbed/dto/get-deficit.dto.d.ts +19 -7
  10. package/dist/cbed/dto/get-deficit.dto.js +1 -2
  11. package/dist/detal/dto/get-deficit.dto.d.ts +19 -7
  12. package/dist/detal/dto/get-deficit.dto.js +1 -2
  13. package/dist/detal/schemas/detal-deficit.schema.d.ts +3 -0
  14. package/dist/detal/schemas/detal-deficit.schema.js +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.js +1 -0
  17. package/dist/material/dto/get-deficit.dto.d.ts +19 -7
  18. package/dist/material/dto/get-deficit.dto.js +1 -2
  19. package/dist/material/index.d.ts +1 -0
  20. package/dist/material/index.js +1 -0
  21. package/dist/material/schemas/material-shipments-response.schema.d.ts +733 -0
  22. package/dist/material/schemas/material-shipments-response.schema.js +21 -0
  23. package/dist/metaloworking/dto/get-metallworking-pagination.dto.d.ts +18 -7
  24. package/dist/metaloworking/dto/get-metallworking-pagination.dto.js +1 -2
  25. package/dist/product/dto/get-deficit.dto.d.ts +19 -7
  26. package/dist/product/dto/get-deficit.dto.js +1 -2
  27. package/dist/product/schemas/product-deficit.schema.d.ts +3 -0
  28. package/dist/product/schemas/product-deficit.schema.js +2 -1
  29. package/dist/production-tasks/dto/get-deficits-detal-by-production-task.dto.d.ts +18 -7
  30. package/dist/production-tasks/dto/get-deficits-detal-by-production-task.dto.js +1 -2
  31. package/dist/production-tasks/dto/get-production-task-by-equipment.dto.d.ts +3 -3
  32. package/dist/production-tasks/dto/get-production-task-by-equipment.dto.js +3 -1
  33. package/dist/production-tasks/dto/get-production-task-by-user.dto.d.ts +3 -3
  34. package/dist/production-tasks/dto/get-production-task-by-user.dto.js +3 -1
  35. package/dist/production-tasks/dto/online-board-working.dto.d.ts +19 -7
  36. package/dist/production-tasks/dto/online-board-working.dto.js +1 -2
  37. package/dist/production-tasks/interfaces/production-tasks.d.ts +1 -0
  38. package/dist/role/default-value/index.js +6 -0
  39. package/dist/shipments/dto/shipments-paginate.dto.d.ts +19 -7
  40. package/dist/shipments/dto/shipments-paginate.dto.js +1 -2
  41. package/dist/stock-order/schemas/stock-order.schema.d.ts +4 -1
  42. package/dist/stock-order/schemas/stock-order.schema.js +1 -0
  43. package/dist/utils/enums.d.ts +8 -0
  44. package/dist/utils/enums.js +10 -1
  45. package/dist/utils/methods.d.ts +0 -4
  46. package/dist/utils/methods.js +3 -22
  47. package/dist/utils/sorting.d.ts +16 -1
  48. package/dist/utils/sorting.js +44 -17
  49. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  type SortValue = Date | number | string | boolean | null | undefined;
2
3
  type SortSelector<T> = (item: T) => SortValue;
3
4
  export declare enum ProductionPlanSortField {
@@ -6,5 +7,19 @@ export declare enum ProductionPlanSortField {
6
7
  warehouseReadinessDate = "warehouseReadinessDate",
7
8
  orderedByProduction = "orderedByProduction"
8
9
  }
9
- export declare const sortByDirection: <T>(items: T[], selector: SortSelector<T>, desc?: boolean) => T[];
10
+ export type ProductionPlanSortRule = {
11
+ sortField?: ProductionPlanSortField | null;
12
+ sortDesc?: boolean;
13
+ };
14
+ export declare const ProductionPlanSortRuleSchema: z.ZodObject<{
15
+ sortField: z.ZodOptional<z.ZodNullable<z.ZodNativeEnum<typeof ProductionPlanSortField>>>;
16
+ sortDesc: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ sortDesc: boolean;
19
+ sortField?: ProductionPlanSortField | null | undefined;
20
+ }, {
21
+ sortField?: ProductionPlanSortField | null | undefined;
22
+ sortDesc?: boolean | undefined;
23
+ }>;
24
+ export declare const sortByRules: <T>(items: T[], rules: ProductionPlanSortRule[] | null | undefined, selectors: Partial<Record<ProductionPlanSortField, SortSelector<T>>>) => T[];
10
25
  export {};
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sortByDirection = exports.ProductionPlanSortField = void 0;
3
+ exports.sortByRules = exports.ProductionPlanSortRuleSchema = exports.ProductionPlanSortField = void 0;
4
+ const zod_1 = require("zod");
5
+ const NULL_STRING_VALUES = new Set(['', 'null', 'undefined', 'invalid date']);
4
6
  var ProductionPlanSortField;
5
7
  (function (ProductionPlanSortField) {
6
8
  ProductionPlanSortField["calculateNeedsTime"] = "calculateNeedsTime";
@@ -8,6 +10,10 @@ var ProductionPlanSortField;
8
10
  ProductionPlanSortField["warehouseReadinessDate"] = "warehouseReadinessDate";
9
11
  ProductionPlanSortField["orderedByProduction"] = "orderedByProduction";
10
12
  })(ProductionPlanSortField || (exports.ProductionPlanSortField = ProductionPlanSortField = {}));
13
+ exports.ProductionPlanSortRuleSchema = zod_1.z.object({
14
+ sortField: zod_1.z.nativeEnum(ProductionPlanSortField).nullable().optional(),
15
+ sortDesc: zod_1.z.boolean().optional().default(false)
16
+ });
11
17
  const normalizeSortValue = (value) => {
12
18
  if (value instanceof Date)
13
19
  return value.getTime();
@@ -17,24 +23,45 @@ const normalizeSortValue = (value) => {
17
23
  }
18
24
  return value;
19
25
  };
20
- const sortByDirection = (items, selector, desc = false) => {
26
+ const isNullSortValue = (value) => {
27
+ if (value === null || value === undefined)
28
+ return true;
29
+ if (value instanceof Date)
30
+ return Number.isNaN(value.getTime());
31
+ if (typeof value === 'string') {
32
+ return NULL_STRING_VALUES.has(value.trim().toLocaleLowerCase());
33
+ }
34
+ return false;
35
+ };
36
+ const compareValues = (firstValue, secondValue, desc = false) => {
37
+ const isFirstNull = isNullSortValue(firstValue);
38
+ const isSecondNull = isNullSortValue(secondValue);
39
+ if (isFirstNull || isSecondNull) {
40
+ if (isFirstNull && isSecondNull)
41
+ return 0;
42
+ return isFirstNull ? (desc ? 1 : -1) : desc ? -1 : 1;
43
+ }
44
+ const normalizedFirstValue = normalizeSortValue(firstValue);
45
+ const normalizedSecondValue = normalizeSortValue(secondValue);
46
+ if (normalizedFirstValue < normalizedSecondValue)
47
+ return desc ? 1 : -1;
48
+ if (normalizedFirstValue > normalizedSecondValue)
49
+ return desc ? -1 : 1;
50
+ return 0;
51
+ };
52
+ const sortByRules = (items, rules, selectors) => {
53
+ const activeRules = (rules !== null && rules !== void 0 ? rules : []).filter(rule => rule.sortField && selectors[rule.sortField]);
54
+ if (!activeRules.length)
55
+ return items;
21
56
  return [...items].sort((firstItem, secondItem) => {
22
- const firstValue = selector(firstItem);
23
- const secondValue = selector(secondItem);
24
- const isFirstNull = firstValue === null || firstValue === undefined;
25
- const isSecondNull = secondValue === null || secondValue === undefined;
26
- if (isFirstNull || isSecondNull) {
27
- if (isFirstNull && isSecondNull)
28
- return 0;
29
- return isFirstNull ? (desc ? -1 : 1) : desc ? 1 : -1;
57
+ var _a;
58
+ for (const rule of activeRules) {
59
+ const selector = selectors[rule.sortField];
60
+ const result = compareValues(selector(firstItem), selector(secondItem), (_a = rule.sortDesc) !== null && _a !== void 0 ? _a : false);
61
+ if (result !== 0)
62
+ return result;
30
63
  }
31
- const normalizedFirstValue = normalizeSortValue(firstValue);
32
- const normalizedSecondValue = normalizeSortValue(secondValue);
33
- if (normalizedFirstValue < normalizedSecondValue)
34
- return desc ? 1 : -1;
35
- if (normalizedFirstValue > normalizedSecondValue)
36
- return desc ? -1 : 1;
37
64
  return 0;
38
65
  });
39
66
  };
40
- exports.sortByDirection = sortByDirection;
67
+ exports.sortByRules = sortByRules;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pksep/zod-shared",
3
- "version": "0.0.533",
3
+ "version": "0.0.535",
4
4
  "description": "Zod package for erp project. Contains dto, interfaces, schems, types, enum",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",